美文网首页
vertical-align居中血案

vertical-align居中血案

作者: 博客专用马甲 | 来源:发表于2017-06-15 16:54 被阅读51次

问题

图片和文字混排,给容器设置了vertical-align不能垂直居中

<div class="container">
  <span class="img"></span> 
  <span class="text-container">
    <span class="main-text">sgss</span>
    <span class="sub-text">dssgssl</span>
  </span>
</div>
.container {
  background: tomato;
  vertical-align: middle;
}
.img {
  display: inline-block;
  background-image: url('http://demos.orionorigin.com/grand-popo/01/wp-content/uploads/2016/10/shield.svg');
  height: 40px;
  width: 40px;
  background-size: cover;
}
.text-container {
  display: inline-block;
}
.main-text, .sub-text {
  display: block;
}

须知原理

1. css boxes

  • block box
  • line box
  • inline-level box
image.png

source

2. vertical-align的作用原理

image.png
  • 红色: box border
  • 绿色: text-box border
  • 蓝色: baseline
    设置vertical-align的值,触发不同的计算,确认text-box中心的摆放位置
    默认是baseline

3. 同一个元素内共享一个baseline

4. vertical-align属性只对line box和inline-level box生效, 且不可继承

5. img的默认摆放规则

img默认摆放也是在baseline,意味着,img的下边界位于baseline

image.png

解决

.img.text-container都加上vertical-align: middle.

原因

  • .img进行vertical-align: middle使.img垂直居中
  • .text-container进行vertical-align: middle, 使.text-container的中心垂直居中

不能直接对.container进行{ display: inline-block; vertical-align: middle }居中么?

不可以,因为vertical-align不可继承

变种

<div class="container middle">
  <span class="img middle"></span> 
  ssssdfdf
  </div>
.container {
  display: inline-block;
  background: tomato;
}
.img {
  display: inline-block;
  background-image: url('http://demos.orionorigin.com/grand-popo/01/wp-content/uploads/2016/10/shield.svg');
  height: 40px;
  width: 40px;
  background-size: cover;
}
.middle {
  vertical-align: middle;
}

以上是否可行?为何?

source

vertical-align-all-you-need-to-know
what-is-vertical-align

相关文章

  • vertical-align居中血案

    问题 图片和文字混排,给容器设置了vertical-align不能垂直居中 须知原理 1. css boxes b...

  • CSS 踩坑笔记

    居中 1. 文字居中 水平居中: text-align: center 垂直居中: vertical-align:...

  • 垂直和水平问题

    1.垂直居中:vertical-align

  • 2019-08-28

    vertical-align 实现水平垂直居中

  • 垂直居中范例

    vertical-align方式居中 vertical-align只能用在inline或者inline-block...

  • 居中

    flex居中 文本居中 //table 中使用vertical-align:middle;可以 是文字上下居中 d...

  • CSS综合

    编码规范 设置上下padding垂直居中 使用绝对定位垂直居中 使用vertical-align垂直居中 使用ta...

  • CSS 垂直居中、文字省略号

    一、vertical-align垂直居中 vertical-align 属性经常用于设置图片、表单(行内块元素)和...

  • 各种居中

    1- 水平居中 2-垂直居中 table-cell + vertical-align absolute + tr...

  • vertical-align垂直居中

    vertical-align居中注意点 vertical-align 属性设置元素的垂直对齐方式 使用对象-划重点...

网友评论

      本文标题:vertical-align居中血案

      本文链接:https://www.haomeiwen.com/subject/qpkuqxtx.html