带CSS过渡效果的HTML5图片标题动画技术已经被许多WEB前端开发者使用了,我们将使用一个简短的教程来说明这种效果是如何实现的。在这个教程中列举了两个例子:一个是背景图片淡入淡出效果,一个是背景图片水平滚动效果。这两种效果的图片标题都是滑动显示。
HTML5结构的代码如下:
<div id="sliding-container"> <figure> <img src="hong-kong-skyline.jpg" alt=""> <figcaption>Hong Kong Skyline at Night</figcaption> </figure> <figure> <img src="monument-valley-panorama.jpg" alt="" style="position: absolute"> <img src="monument-valley-mittens-panorama.jpg" alt=""> <figcaption>Monument Valley</figcaption> </figure> </div>
我们需要给每一个<figure>
元素设置relative
定位。这样便于制作图片的淡入淡出效果。通过设置overflow: hidden;
来隐藏所有超出显示区域的东西,然后还要把<figure>
元素设置为并排浮动。
注意:以下代码都没有使用浏览器厂商的前缀,实际使用中需要添加上。
div#sliding-container figure { margin: 0; padding: 0; position: relative; width: 50%; font-size: 0; overflow: hidden; } div#sliding-container figure:nth-child(1) { float: left; } div#sliding-container figure:nth-child(2) { float: right; }
图片的标题的背景色使用RGBA模式的颜色,定位设置为绝对定位:
div#sliding-container figure figcaption{ background:rgba(0,0,0,.5); font-size:1rem; width:100%; color:#fff; padding:.3rem; position:absolute; margin:0; transition:.6s; text-align: center; }
要制作当用户鼠标滑过图片时图片标题升起的效果是非常简单的:可以简单的为<figure>
元素附加一个:hover
伪类,用于改变<figcaption>
的位置。
div#sliding-container figure:hover figcaption { transform: translateY(-2rem); }
接下来要使<figure>
元素中的图片动起来。首先,我们需要正确设置它们:
div#sliding-container figure img { max-width: 100%; transition-duration: 2.4s; transition-property: transform, opacity; transition-timing-function: linear; } div#sliding-container figure:nth-child(1) img { max-width: 133%; }
第一个demo的图片要比容器大,要将图片从右向左移动:
div#sliding-container figure:nth-child(1):hover img { transform: translateX(-24%); }
在第二个demo中,因为图片是绝对定位,所以两张图片会互相重叠。我们需要在鼠标滑过图片时渐隐第一张图片,如果使用类选择器来查找图片会相对复杂,我们可以简单的给<figure>
元素一个ID:
div#sliding-container figure:nth-child(2):hover img:nth-child(1) { opacity: 0; }
到此两种带CSS过渡效果的HTML5图片标题动画都做好了,一起来体验一下吧!