我爱编程

CSS补充

2018-04-01  本文已影响0人  倾国倾城的小饼干
.xxx{
  display: -webkit-box;
  -webkit-line-clamp:2;//如果是3行就设置成3
  -webkit-box-orient: vertical;
  overflow:hidden;
}
<div class='ct'>
  <ul>
    <li class='item'>1</li>
    <li class='item'>2</li>
    <li class='item'>3</li>
</ul>
</div>
ul li{
  margin: 0;
  padding: 0;
  list-style: none;
}
.ct{
  overflow: hidden;
  width:640px;
  margin: 0 auto;
}
.ct .item{
  float: left;
  width: 200px;
  height: 200px;
  background: red;
}

这是因为都是左浮动,且设定为-20px那么后面的元素会.ct>ul{margin-left: -20px;}认为前面的元素的宽度比原来的宽度缩短了20px(会导致重叠),但其实前面的元素不会影响,保持原有的宽度。

<div class='box middle'>
  <img src=''>
</div> 
.box{
  width: 300px;
  height: 200px;
  border: 1px solid;
} 
.middle{
  text-align: center;
}
.middle:befor{
  content:'';
  display: inline-block;
  vertical-align: middle;
}
.box img{
  vertical-align: middle;
}

为什么上例中只在图片上设置vertical-align不生效?
因为content里的内容是内联元素和图片处于同一个line-box,当content的高度设置成100%的时候,就把高度撑起来了,由于line box的高度由内容决定,所以content的高度和line box的高度相同,而且vertical-align的对齐基于line box,又因为行内元素的基线相对于该元素所在行的基线垂直对齐(假设有两个行内元素a和b,当a加了一个vertical-align:middle样式之后b的底部(基线)就会对齐a的中间位置)所以两个元素都要设置vertical-align:middle。

上一篇 下一篇

猜你喜欢

热点阅读