Как выровнять текстовый центр - не работает в CSS - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь выровнять текстовый центр, используя приведенный ниже код, но он не работает.Мой кодовый блок link и код:

body {
  padding: 0;
  margin: 0;
}

.container {
  width: 1200px;
  overflow: auto;
  margin: 240px auto;
  background: transparent;
  position: relative;
}

.container .box {
  position: relative;
  float: left;
  width: calc(400px - 30px);
  height: calc(300px - 30px);
  background: yellow;
  overflow: hidden;
  margin: 15px;
  border-radius: 10px;
  box-sizing: border-box;
}

.container .box .icon {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: red;
  transition: 0.5s;
  z-index: 1;
}

.container .box:hover .icon {
  top: 20px;
  left: calc(50% - 40px);
  width: 80px;
  height: 80px;
  border-radius: 50%;
}

.container .box .icon .fa {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 80px;
  color: #fff;
  transition: 0.5s;
}

.container .box:hover .icon .fa {
  font-size: 40px;
}

.container .box .content {
  position: absolute;
  top: 100px;
  height: calc(100% - 100px);
  padding: 20px;
  box-sizing: border-box;
  transition: 0.5s;
  text-align: center;
}
<div class="container">
  <div class="box">
    <div class="icon">
      <i class="fa fa-search" aria-hidden="true"></i>
    </div>
    <div class="content">

      <h3>Search</h3>
      <p>sadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfen</p>

    </div>
  </div>
</div>

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Добавьте width: 100% к элементу content в fit позиционируемый элемент абсолютно в его контейнере - см. Демонстрацию ниже:

body {
  padding: 0;
  margin: 0;
}

.container {
  width: 1200px;
  overflow: auto;
  margin: 240px auto;
  background: transparent;
  position: relative;
}

.container .box {
  position: relative;
  float: left;
  width: calc(400px - 30px);
  height: calc(300px - 30px);
  background: yellow;
  overflow: hidden;
  margin: 15px;
  border-radius: 10px;
  box-sizing: border-box;
}

.container .box .icon {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: red;
  transition: 0.5s;
  z-index: 1;
}

.container .box:hover .icon {
  top: 20px;
  left: calc(50% - 40px);
  width: 80px;
  height: 80px;
  border-radius: 50%;
}

.container .box .icon .fa {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 80px;
  color: #fff;
  transition: 0.5s;
}

.container .box:hover .icon .fa {
  font-size: 40px;
}

.container .box .content {
  position: absolute;
  top: 100px;
  height: calc(100% - 100px);
  padding: 20px;
  box-sizing: border-box;
  transition: 0.5s;
  text-align: center;
  width: 100%; /* ADDED */
}
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="container">
  <div class="box">
    <div class="icon">
      <i class="fa fa-search" aria-hidden="true"></i>
    </div>
    <div class="content">
      <h3>Search</h3>
      <p>sadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfen</p>
    </div>
  </div>
</div>

Вам не нужно позиционирование здесь на самом деле - используйте flexbox и выравнивание по дну.

  1. Удалить height, , абсолют position и top из content.
  2. Сделайте box a flexbox идобавьте align-items: flex-end, чтобы выдвинуть его вниз.

См. демонстрацию ниже:

body {
  padding: 0;
  margin: 0;
}

.container {
  width: 1200px;
  overflow: auto;
  margin: 240px auto;
  background: transparent;
  position: relative;
}

.container .box {
  position: relative;
  float: left;
  width: calc(400px - 30px);
  height: calc(300px - 30px);
  background: yellow;
  overflow: hidden;
  margin: 15px;
  border-radius: 10px;
  box-sizing: border-box;
  display: flex; /* ADDED */
  align-items: flex-end; /* ADDED */
}

.container .box .icon {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: red;
  transition: 0.5s;
  z-index: 1;
}

.container .box:hover .icon {
  top: 20px;
  left: calc(50% - 40px);
  width: 80px;
  height: 80px;
  border-radius: 50%;
}

.container .box .icon .fa {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 80px;
  color: #fff;
  transition: 0.5s;
}

.container .box:hover .icon .fa {
  font-size: 40px;
}

.container .box .content {
  /*position: absolute;
  top: 100px;
  height: calc(100% - 100px);*/
  padding: 20px;
  box-sizing: border-box;
  transition: 0.5s;
  text-align: center;
  width: 100%; /* ADDED */
}
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="container">
  <div class="box">
    <div class="icon">
      <i class="fa fa-search" aria-hidden="true"></i>
    </div>
    <div class="content">
      <h3>Search</h3>
      <p>sadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfensadfdfoiljwkjfen</p>
    </div>
  </div>
</div>
0 голосов
/ 16 февраля 2019

Ваш текст выровнен идеально, проблема в том, что ширина вашего .content не совпадает с рамкой.Добавьте width: 100%; к .content, и оно должно быть исправлено (также уменьшите размер вашего p, так как он слишком длинный)

.container .box .content {
           position:absolute;
           width: 100%;
           top:100px;
           height:calc(100% - 100px);
           padding:20px;
           box-sizing:border-box;
           transition:0.5s;
           text-align:center;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...