CSS进阶之纯CSS幻灯片

CSS进阶之纯CSS幻灯片

昨天写的博文有人点了赞,让我激动不已,晚饭赏自己一个鸡腿,。如果我的博文对您有帮助的话,就请您点个赞,您的鼓励是我前进的动力。如果发现文中有错误的地方,也烦请各位大牛指出。以下开始正文。

首先用HTML搭建出基本的框架,如下:

<div id="container">
    <div class="slide">
    <!--将需要展示的图片放在一个ul里面-->
        <ul>
            <li class="first animation">
                <img src="img/014.jpg" alt="天堂和地狱">
                <div class="tooltips"><p>天堂和地狱</p></div>
            </li>
            <li class="second animation">
                <img src="img/015.jpg" alt="雪山">
                <div class="tooltips"><p>雪山</p></div>
            </li>
            <li class="third animation">
                <img src="img/016.jpg" alt="山谷">
                <div class="tooltips"><p>山谷</p></div>
            </li>
            <li class="fourth animation">
                <img src="img/017.jpg" alt="花朵">
                <div class="tooltips"><p>花朵</p></div>
            </li>
            <li class="fifth animation">
                <img src="img/018.jpg" alt="蓝天白云">
                <div class="tooltips"><p>蓝天白云</p></div>
            </li>
        </ul>
        <!--这个是一个进度条-->
        <div class="progressBar"></div>
    </div>

</div>

然后使用CSS给它加上基本的样式,让它看起来没有那么乱。

*{
    margin: 0;
    padding: 0;
}
body{
    min-width: 900px;
}
#container{
    width: 830px;
    margin: 50px auto;
}
.slide{
    border: 15px solid #ccc;
    border-radius: 5px;
    width: 800px;
    height: 450px;
    overflow: hidden;
    position: relative;

}
.slide ul{
    position: relative;
}
.slide ul li{
    list-style: none;
    position: absolute;
    left: -800px;
}
.slide ul li img{
    width: 800px;
    height: 450px;
}
.tooltips{
    background: rgba(0,0,0,0);
    width: 300px;
    height: 60px;
    position: relative;
    top: -80px;
    left: -300px;
    /*-webkit-transition: all 0.3s ease-in-out;*/
    /*-moz-transition: all 0.3s ease-in-out;*/
    /*-ms-transition: all 0.3s ease-in-out;*/
    /*-o-transition: all 0.3s ease-in-out;*/
    /*transition: all 0.3s ease-in-out;*/
}
.tooltips p{
    color:#fff;
    font-size:24px;
    font-weight:300;
    line-height:60px;
    padding:0 0 0 20px;
}
.slide .animation:hover .tooltips{
    left:0;
    background: rgba(0,0,0,0.7);
}
.progressBar{
    position: absolute;
    width: 800px;
    bottom: 0px;
    height: 5px;
    background: #000;
    z-index: 1;
    /*animation: progress 25s linear infinite;*/
    /*-moz-animation: progress 25s linear infinite;*/
    /*-webkit-animation: progress 25s linear infinite;*/
}

加完样式之后瞬间感觉清爽多了。接下来就是最关键的部分,使用CSS动画使图片动起来达到轮播的效果。(下图是本文实现的效果,图像有点不清晰,主要功能为五张图片依次轮播,鼠标划过停止动画以及出现提示文字和下方进度条)

在搜罗了一大堆前辈的代码之后,明白了轮播的基本原理。

在一个播放周期内(文中用的是25s),让五张轮播图片依次出现在窗口内,通过更改图片的 opacity 和 z-index来实现。想要实现图片从左划到右边的动画,我们只需更改图片的 left属性即可。

我用一张时间表大概描述一下实现的原理。

以第一张图片为例,其CSS动画如下:

/*定义动画*/
.slide li.first{
    animation: cycle01 25s linear infinite;
    -moz-animation: cycle01 25s linear infinite;
    -webkit-animation: cycle01 25s linear infinite;
}
/*如表上一样定义关键帧*/
@keyframes cycle01 {
    0%{left: 0;opacity: 1;z-index: 0;}
    10%{left:0;opacity: 1;z-index: 0;}
    20%{left: 800px;opacity: 0;z-index: 0;}
    21%{
        left: -800px;
        opacity:0;
        z-index: -1;
    }
    90%{
        left: -800px;
        opacity: 0;
        z-index: -1;
    }

    100%{
        left:0px;
        opacity: 1;
        z-index: 0;
    }
}

然后依次定义后面的四张。到此,CSS幻灯片的基本功能已经实现。接下来为其添加鼠标停留,动画停止和下方进度条的功能。

.slide:hover li,.slide:hover .progressBar{      /*鼠标经过的时候停止动画*/
    animation-play-state: paused;
}
/*进度条出现的原理跟上面图片出现的原理一样*/
.progressBar{
    position: absolute;
    width: 800px;
    bottom: 0px;
    height: 5px;
    background: #000;
    z-index: 1;
    animation: progress 25s linear infinite;
    -moz-animation: progress 25s linear infinite;
    -webkit-animation: progress 25s linear infinite;
}
@keyframes progress {                /*定义关键帧*/
    0%,20%,40%,60%,80%{
        width:0;
        opacity: 0;
    }
    5%,25%,45%,65%,85%{
        width: 50%;
        opacity: 0.7;
    }
    10%,30%,50%,70%,90%{
        width: 100%;
        opacity: 0.3;
    }
    11%,31%,51%,71%,91%{
        width: 0;
        opacity: 0;
    }

}

完整源代码和图片在下方的附件中。未处理兼容问题,所以请使用最新版本的浏览器。

时间: 2024-11-05 23:19:44

CSS进阶之纯CSS幻灯片的相关文章

CSS基础教程——纯CSS开发的气泡式提示框

本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:CSS基础教程 —— 纯CSS开发的气泡式提示框 作为前端开发人员,我们都熟悉使用CSS来生成页面上丰富的样式,对于边框border属性来说,也是我们最熟悉不过的CSS属性,今天我们这里将介绍如何使用纯CSS来生成一个气泡式样的提示框,希望大家喜欢! 在这篇文章中我们将使用:after伪标签来生成提示框的指示箭头. 首先我们定义提示框相关属性,我们添加了box阴影和文字阴影效果,这样让提示框更加漂亮: /* bubble */.tip

【css】 收藏 纯css打造 mackbook air

http://www.cnblogs.com/myvin/p/4621231.html <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" type="text/css" href="./key.css"&g

幻灯片の纯CSS,NO JavaScript

之前就遇到有人问,不用js,纯css实现幻灯片. 那么对于使用纯的css + html 怎样来实现幻灯片呢?下面有几种方法可供参考,有些还不成熟. 方案一:利用css3的animation 例子传送门点我,点我! <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>幻灯片</title> <style&

纯css做幻灯片效果

css3里面有一个@keyframes动画功能. w3c上面的例子: 可以使用它来做一个幻灯片效果. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>纯CSS做幻灯片</title> </head> <style> @keyframes slide { 0% { backgroun

【CSS进阶】伪元素的妙用2 - 多列均匀布局及title属性效果

最近无论是工作还是自我学习提升都很忙,面对长篇大论的博文总是心有余而力不足,但又不断的接触学习到零碎的但是很有意义的知识点,很想分享给大家,所以本篇可能会很短. 本篇接我另一篇讲述 CSS 伪元素的文章: [CSS进阶]伪元素的妙用–单标签之美,看完本文觉得有意思的可以再去看看上一篇,分享了一些伪元素的妙用. 正文从这里开始: 哪些标签不支持伪元素? 我也是才知道这个姿势.为了不误导读者,就赶紧补充一下. 伪元素虽然强大,但是还是有一些特定的标签是不支持伪元素 before 和 after 的.

三角形变形记之纯css实现的分布导航条效果

三角形变形记,用纯css实现的分布导航条效果 <style type="text/css"> ul,li { list-style-type:none; font-size:13px; font-weight:bold; } li { float:left; position:relative; line-height:30px; background:#9BBB38; color:#fff; width:100px; height:30px; text-align:cen

三种纯CSS方法实现等高列

在这篇文章里, 我会介绍三种使用纯css的方式来实现等高列的方法.在网页布局中设置列等高是比较常见的, 所以写这篇文章就是要总结下一些优雅的纯CSS解决方案. 插图自己弄得,不喜莫喷 哈哈.. 下面介绍的三种方法都只用到了CSS , 不涉及jQuery.JavaScript计算实现的方法,所以我把它这篇文章标题设为:三种纯CSS方法实现等高列. 方法-1: 使用Margins, Paddings和 Overflow来实现 第一种方法使用margins, paddings和overflow来迫使列

淘宝分类导航条;纯css实现固定导航栏

效果如下: 页面如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="t

【技能】使用纯CSS+html写出方向箭头,简单大方,好看

使用纯CSS+html写出方向箭头,贴出来就可以用,100%原创 <html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <style type="text/css"> .pointsRule{ display: inline-blo