这是一款使用CSS3 background-blend-mode
制作的鼠标滑过图片标题特效。该图片标题特效在鼠标滑过一张图片的时候,图片的标题会相应的动画,并且图片会使用css blend模式渲染为非常酷的效果。
IE浏览器不支持CSS background-blend-mode
属性,所以在IE浏览器中看不到图片的混合效果,只能看到图片标题的动画效果。
制作方法
HTML结构
该图片标题特效的HTML结构使用嵌套<div>
的HTML结构。以第一个DEMO的为例,它的HTML结构如下:
<div class="elem first"> <img src="img/1.jpg" /> </div>
CSS样式
每张图片的包裹<div>
中的elem
class用于控制图片的大小。这里使用了vw
来作为单位,制作响应式效果。关于vw
可以参考:你不知道的7个css单位。为例提高动画效果性能,还使用了will-change属性来通知浏览器优化即将要执行的transform
和opacity
属性。
.elem { width: 32vw; display: inline-block; color: white; font-size: 2em; position: relative; height: 20vw; overflow: hidden; will-change: transform; } .elem:before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; opacity: 0; background-size: 100% 100%; background-repeat: no-repeat; will-change: transform, opacity; } .elem:after { content: ""; position: absolute; will-change: transform; } .elem img { width: 32vw; height: 20vw; will-change: transform; } .elem:hover:before { opacity: 1; }
第一个特效使用的Blend模式是background-blend-mode: luminosity;
。目前CSS的blend模式共有16种,可以参看《CSS中的合成和混合模式-blend modes》。luminosity
属于亮度模式,该模式能够使用“混合色”颜色的亮度值进行着色,而保持“基色”颜色的饱和度和色相数值不变。
图片中间的矩形线条框使用的是.first:after
伪元素来制作。开始时它的透明度设置为0,在鼠标滑过时,它的透明度被设置为1,并使用transform
属性来将其放大。
.first:before { background-color: lightBlue; background-image: url("../img/1.jpg"); background-blend-mode: luminosity; } .first:after { opacity: 0; border: .15vw solid #fff; -webkit-transform: scale(0.5); -moz-transform: scale(0.5); -o-transform: scale(0.5); transform: scale(0.5); } .first:hover:after { opacity: 1; -webkit-transform: scale(0.95); -moz-transform: scale(0.95); -o-transform: scale(0.95); transform: scale(0.95); }
其它例子的代码请参考下载文件。