【问题标题】:How to align text center - not working in css如何对齐文本中心 - 在 CSS 中不起作用
【发布时间】:2019-07-10 13:27:03
【问题描述】:

我正在尝试使用以下代码对齐文本中心,但它不起作用。我的代码笔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>

【问题讨论】:

    标签: html css flexbox css-position centering


    【解决方案1】:

    您的文本完全对齐,问题是您的.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;
            }
    

    【讨论】:

      【解决方案2】:

      width: 100% 添加到content 元素以适应在其容器中绝对定位的元素-参见下面的演示:

      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. content 中删除height绝对 positiontop
      2. 将您的box 设为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>

      【讨论】:

      • 那是因为它是一个单个字,而且content也有一些padding...也许你想使用word-break: break-all
      猜你喜欢
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2014-03-22
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多