今天在公司作项目的时候,遇到一个让我无从下手的问题。css
这样的一个父容器DIV包含连个不一样的span标签。标签内的字体不同,要如何实现两个标签在中轴线上实现垂直居中呢?html
其余办法我实在想不出来,因而在同事的建议下使用了弹性布局,也就是flex。web
下面简单的介绍一下flex布局。可参考阮一峰的flex布局:语法篇浏览器
Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。布局
能够在任何容器上使用;字体
例子:flex
在块状元素中ui
div{ display: flex; // }
在行内元素可以使用line-flex:spa
.box{ display: inline-flex; }
注:Webkit内核的浏览器,必须加上-webkit
前缀。 即应写为: -webkit-flexcode
使用display:flex的容器可看作一个父容器,父容器有如下6总属性。可根据须要类使用。
每种属性的详细介绍请看上面的阮一峰的文章链接。
这里介绍一下我实现上面的例子用到的属性:
align-items
属性定义项目在交叉轴上如何对齐。有五个值:
flex-start //能够理解为top
flex-end //理解为bottom
center //以父容器y轴的中轴线为中心,全部子元素都垂直居中于该线
baseline //项目的第一行文字的基线对齐
stretch //若是项目未设置高度或设为auto,将占满整个容器的高度
这里显然使用center了。
然而这样就解决问题了,综合起来也就下面几行代码:
div{ display: flex; align-items:center; } div span{ font-size: 28px; } div em{ font-size: 12px; }