右边插图都要在这个div中垂直居中。最开始插图作为img引入,外围div设置一个宽度(32%),里面img自适应的(img设置100%),然后打算尝试用过vertical-align: middle,table-cell,position,flex进行垂直居中,发现都不是理想的效果,最后尝试用background: url(../) no-repeat center;让他居中。发现这个达到自己想要的效果,在此记录一下,希望大家能提供更好的方法。
html代码:
<div class="ui-box"> <div class="box-left"> <p>在前端开发中,经常接触到一些文字图片环绕的布局,或者文字和插图左右布局的场景, 正好此前在移动端开发中,碰到有一个这样的需求,左边文字是不定字数的,右边是一个插图,不管左边文字是多少, 右边插图都要在这个div中垂直居中。最开始插图作为img引入,外围div设置一个宽度(32%),里面img自适应的(img设置100%),然后打算尝试用过vertical-align: middle,table-cell,position,flex进行垂直居中,发现都不是理想的效果,最后尝试用background: url(../) no-repeat center;让他居中 </p> </div> <div class="box-right"></div> </div>css代码:
首先使用display: box弹性盒子来左右布局,左右两边我是使用百分比来设置适应宽度,然后右边盒子使用background: url(images/pic.png) no-repeat center; background-size: contain;来自适应设置背景。加min-height: 150px;是为了ui-box有一个高度保证,以免影响视觉美观。
body{ max-width:720px; margin: 0 auto; background:#f5f5f5; font-family:"Microsoft Yahei"; font-size: 14px; } .ui-box{ height: auto; overflow: hidden; background: #27B7B8; color: #fff; padding: 15px; display: -webkit-box; display: box; min-height: 150px; } .ui-box .box-left{ width: 65%; -webkit-box-flex:1; box-flex:1; margin-right: 3%; } .ui-box .box-right{ width: 32%; background: url(images/pic.png) no-repeat center; background-size: contain; }效果图如下: