html - 如何水平居中带有图标的标题,忽略图标

标签 html css flexbox

我正在使用 flexbox 将带有图标的标题居中。我试图将标题的文本部分完美居中,忽略图标。在文本居中后,图标应该添加到标题的右侧。我尝试使用绝对定位,但效果不佳,因为我还需要在浏览器宽度变小时将标题换行。

在我的示例中,整个标题都居中。有了图标,它就会偏离文本的居中。

html

<div class="container">
  <div class="wrapper">
    <div class="image"></div>
      <div class="heading">
        <span class="title">racecar racecar racecar</span>
        <span class="fa fa-lg fa-car">
        </span>
      </div>
      <div class="description">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tortor dolor, varius a convallis ut, tincidunt non turpis. Nam gravida.
      </div>
  </div>
  <div class="wrapper">
    <div class="image"></div>
      <div class="heading">
        <span class="title">kayak kayak kayak</span>
        <span class="fa fa-lg fa-car">
        </span>
      </div>
      <div class="description">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam pellentesque euismod efficitur. Quisque vitae gravida dolor. Fusce et dui quis arcu sagittis sodales. Vivamus tincidunt orci et neque pulvinar, a aliquam diam tristique. Curabitur lacinia nibh est, id cursus ligula mollis eu. Nullam suscipit nisi vel euismod bibendum. Duis congue.
      </div>
  </div>
  <div class="wrapper">
    <div class="image"></div>
      <div class="heading">
        <span class="title">rotor rotor rotor</span>
        <span class="fa fa-lg fa-car"></span>
      </div>
      <div class="description">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.  Fusce et dui quis arcu sagittis sodales. Vivamus tincidunt orci et neque pulvinar, a aliquam diam tristique. Curabitur lacinia nibh est, id cursus ligula mollis eu. Nullam suscipit nisi vel euismod bibendum. Duis congue.
      </div>
  </div>
</div>

CSS

.wrapper {
  border: 1px solid red;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.image {
  height: 100px;
  width: 100px;
  background-color: blue;
  border-radius: 65px;
}

.title {
  font-size: 50px;
}

.description {
  padding: 15px;
}

jsfiddle

最佳答案

您的问题有点误导。您真正的问题发生在 heading 内部,泰语不是 flex 元素。

您可以只向该元素添加与图像相同大小的边距:

.heading {
  margin: 0px 30px;
  text-align: center;
  position: relative;
}

.fa {
  position: absolute;
  right: -30px;
  top: 30px;
}

.wrapper {
  border: 1px solid red;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.image {
  height: 100px;
  width: 100px;
  background-color: blue;
  border-radius: 65px;
}
.title {
  font-size: 50px;
}
.description {
  padding: 15px;
}
<link href="http://netdna.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet"/>
<div class="container">
  <div class="wrapper">
    <div class="image"></div>
    <div class="heading">
      <span class="title">racecar racecar racecar</span>
      <span class="fa fa-lg fa-car">
        </span>
    </div>
    <div class="description">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tortor dolor, varius a convallis ut, tincidunt non turpis. Nam gravida.
    </div>
  </div>
  <div class="wrapper">
    <div class="image"></div>
    <div class="heading">
      <span class="title">kayak kayak kayak</span>
      <span class="fa fa-lg fa-car">
        </span>
    </div>
    <div class="description">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam pellentesque euismod efficitur. Quisque vitae gravida dolor. Fusce et dui quis arcu sagittis sodales. Vivamus tincidunt orci et neque pulvinar, a aliquam diam tristique. Curabitur lacinia
      nibh est, id cursus ligula mollis eu. Nullam suscipit nisi vel euismod bibendum. Duis congue.
    </div>
  </div>
  <div class="wrapper">
    <div class="image"></div>
    <div class="heading">
      <span class="title">rotor rotor rotor</span>
      <span class="fa fa-lg fa-car"></span>
    </div>
    <div class="description">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et dui quis arcu sagittis sodales. Vivamus tincidunt orci et neque pulvinar, a aliquam diam tristique. Curabitur lacinia nibh est, id cursus ligula mollis eu. Nullam suscipit nisi vel euismod
      bibendum. Duis congue.
    </div>
  </div>
</div>

关于html - 如何水平居中带有图标的标题,忽略图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40950019/

相关文章:

javascript - 如何在页面上的多个按钮上获得 1 个模态?

html - 表格 - 电话号码验证

html - 如何将内容元素与 wordpress 自定义 css 居中对齐?

html - 可能对此进行简单的 CSS 解析

css - 如何能够在 flexbox (CSS) 内滚动覆盖 div?

html - paypal API 是否支持我的应用程序上的用户对用户付款?

javascript - 无法设置Data( 'undefined')以允许元素拖放

css - CakePHP:使用 CSS 类创建自定义提交按钮

html - Flexbox:溢出自动和窗口大小

html - 屏幕调整大小时居中 flex 列表项