1、background: inherit;制作倒影

background: inherit制作倒影、单行居中两行居左超过两行省略-LMLPHP

  方法很多,但是我们当然要寻找最快最便捷的方法,至少得是无论图片怎么变化,div 大小怎么变化,我们都不用去改我们的代码。

  -webkit-box-reflect

  这是一个十分新的 CSS 属性,使用起来十分简单,可以从各个方向反射我们内容。

  box-reflect 有四个方向可以选,below | above | left | right 代表下上左右,更具体的可以看看 MDN

  不过兼容性过于惨淡,基本上是只有 -webkit- 内核的浏览器才支持。

  inherit,使用继承

  inherit 是啥,每个 CSS 属性定义的概述都指出了这个属性是默认继承的 (“Inherited: Yes”) 还是默认不继承的 (“Inherited: no”)。这决定了当你没有为元素的属性指定值时该如何计算值。灵活使用 inherit 继承父值,可以解决许多看似复杂的问题。对于本需求我们对图片容器添加一个伪元素使用 background:inherit 继承父值的背景图值,就可以做到无论图片如何变,我们的 CSS 代码都无需改动:

      .container{
width: 100px;
height: 100px;
background-image: url('ly.png');
background-size: 100px 100px;
position: relative;
/* -webkit-box-reflect:below; */
}
.container:before{
content: '';
position: absolute;
top: %;
left: ;
right: ;
bottom: -%;
background: inherit;
transform: rotateX(180deg);
}

2、单行居中,两行居左,超过两行省略

  单行居中,多行居左:<h2><p>单行居中,多行居左</p></h2>,让内层 p 居左 text-align:left,外层 h2 居中 text-align:center,并且将 p 设置为display:inline-block ,利用 inline-block 元素可以被父级 text-align:center 居中的特性,这样就可以实现单行居中,多行居左。

  多行省略是有专门的新 CSS 属性可以实现的,但是有些兼容性不大好。主要用到如下几个:

  • display: -webkit-box; // 设置display,将对象作为弹性伸缩盒子模型显示
  • -webkit-line-clamp: 2; // 限制在一个块元素显示的文本的行数
  • -webkit-box-orient: vertical; // 规定框的子元素应该被水平或垂直排列

  上述 3 条样式配合 overflow : hidden 和 text-overflow: ellipsis 即可实现 webkit 内核下的多行省略。

<h2><p><em>单行居中,多行居左,超过2行省略<em></p></h2>

  为什么p标签里面又要加一层元素呢?因为2个display会有冲突。当然还有别的方法,不细说。

  
05-11 17:14