Установка текста так, чтобы он всегда оставался над другим элементом

avatar
Notron
7 апреля 2018 в 22:46
36
1
0

У меня есть одно обычное поле, и я хочу, чтобы текст плавал над ним и соответствующим образом изменял размер шрифта текста.

Вот что я сделал: https://jsfiddle.net/a87uo3t2/

@import url('https://fonts.googleapis.com/css?family=Share+Tech+Mono');
body {
  margin: 0 auto;
  overflow: hidden;
}

#content {
  width: 100%;
  height: 2527px;
  background-image: url('../images/wallpaper.jpg');
}

#menu-container,
#button-container {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 30%;
  height: 40%;
  border: 1px line #ccc;
  background-color: #ffffff;
  background-image: url('../images/brick-wall.png');
  box-shadow: 0 0 3em #ccc;
}

#button-container {
  border: none;
  box-shadow: none;
}

.button-sub-container {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

h1 {
  position: relative;
  bottom: 120px;
  left: 6px;
  text-align: center;
  font-family: 'Share Tech Mono', monospace;
  font-size: 5vw;
  text-transform: uppercase;
  text-decoration: none;
  letter-spacing: 15px;
}


/*BUTTONS*/

.main-button {
  text-decoration: none;
  font-family: 'Share Tech Mono', monospace;
  font-size: 35px;
  margin: 15px;
  color: #000;
  letter-spacing: 5px;
  text-transform: uppercase;
  transition: letter-spacing 0.5s, color 0.8s;
}

.main-button:hover {
  letter-spacing: 15px;
  color: red;
}

.main-button:active {
  letter-spacing: 2px;
  color: blue;
}
<div id="content">
  <div id="menu-container">
    <h1>welcome</h1>
    <div id="button-container" class="button-sub-container">
      <a class="main-button" href="about.html">about</a>
      <a class="main-button" href="projects.html">projects</a>
      <a class="main-button" href="contact.html">contact</a>
    </div>
  </div>

Как видите, я попытался установить его сверху, расположив его relatively, но это означает, что при изменении размера он смещается, я могу исправить это, используя vw в качестве размера шрифта в точку, так как если бы у кого-то был очень широкий монитор, он бы превышал мой маленький menu-container.

Примечание: не обращайте внимания на то, что текст кнопок выходит за рамки, у меня есть медиа-ключ, чтобы это исправить

Источник

Ответы (1)

avatar
user3589620
8 апреля 2018 в 00:19
0

Решение с flexbox

и изменение только font-size поля

@import url('https://fonts.googleapis.com/css?family=Share+Tech+Mono');
html,
body {
  height: 100%;
}

body {
  margin: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

.box {
  font-family: 'Share Tech Mono', monospace;
  max-width: 50%;
  text-align: center;
  /* Change to your needs */
  font-size: 20px;
}

.box h1 {
  text-transform: uppercase;
  margin-top: 0;
}

.box ul {
  list-style: none;
  margin: 0;
  padding: 15px;
  border: 1px line #ccc;
  background-color: #ffffff;
  background-image: url('../images/brick-wall.png');
  box-shadow: 0 0 3em #ccc;
}

.box a {
  text-decoration: none;
  color: #000;
  text-transform: uppercase;
  white-space: nowrap;
  transition: letter-spacing 0.5s, color 0.8s;
}

.box a:hover {
  letter-spacing: 3px;
  color: red;
}


/* Change to your needs */

@media screen and (min-width: 600px) {
  .box {
    font-size: 20px;
  }
}


/* Change to your needs */

@media screen and (min-width: 1200px) {
  .box {
    font-size: 30px;
  }
}
<div class="box">
  <h1>Heading</h1>
  <!-- It's a list -->
  <ul>
    <li><a href="#">Site 1</a></li>
    <li><a href="">Site 2</a></li>
    <li><a href="">Site 3</a></li>
  </ul>
</div>