首页 > 其他 > 详细

仿百度新闻首页轮播图

时间:2019-11-20 18:47:25      阅读:695      评论:0      收藏:0      [点我收藏+]

用原生js实现百度新闻首页轮播图,动画部分参考原版 ,代码如下; 

<!--模仿百度新闻首页轮播图制作,完成于2019-03-28-->
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            *,
            :after,
            :before {
                /*box-sizing: border-box;*/
                /*color: #333;*/
                padding: 0px;
                margin: 0px;
                font-size: 100%;
            }
            
            .imgDiv,
            img {
                width: 560px;
                height: 305px;
            }
            
            li {
                list-style: none;
                float: left;
                color: darkgray;
                /*position: relative;
                top: -75px;
                left: 400px;*/
                padding: 0px;
                margin-right: 3px;
            }
            
            .rotation {
                position: relative;
                width: 560px;
                height: 305px;
            }
            
            .turn {
                display: none;
                text-decoration: none;
                opacity: 0.6;
                background-color: #F0F0F0;
                width: 60px;
                height: 60px;
                position: absolute;
                border-radius: 50%;
                transition: background-color .3s, opacity .3s;
            }
            
            .turn:after {
                content: " ";
                position: absolute;
                left: 75%;
                width: 3px;
                height: 50%;
                background: #f00;
            }
            
            .turn:hover {
                color: #c00;
            }
            
            .turn .left.up:hover {
                transform: rotate(20deg);
            }
            
            .turn .left.down:hover {
                transform: rotate(-20deg);
            }
            
            .turn .right.up:hover {
                transform: rotate(20deg);
            }
            
            .turn .right.down:hover {
                transform: rotate(-20deg);
            }
            
            .up {
                display: inline-block;
                position: absolute;
                top: 6px;
                font-size: 22px;
                /*transform: translateY(-50%) rotate(30deg);*/
                transition: transform .3s, color .3s
            }
            
            .down {
                display: inline-block;
                position: absolute;
                bottom: 6px;
                font-size: 22px;
                /*left:10px;*/
                transition: transform .3s, color .3s
            }
            
            .left {
                left: 20px;
            }
            
            .right {
                right: 20px;
            }
            
            .leftuporigin {
                transform-origin: left bottom;
            }
            
            .leftdownorigin {
                transform-origin: left top;
            }
            
            .rightuporigin {
                transform-origin: right bottom;
            }
            
            .rightdownorigin {
                transform-origin: right top;
            }
            
            .imgView {
                display: none;
            }
            .imgView.current-img{
                display: block;
            }
            .imgTitle {
                color: white;
                position: absolute;
                left: 0;
                bottom: 13px;
                padding-left: 10px;
            }
            
            .imgNav {
                position: absolute;
                right: 18px;
                bottom: 13px;
            }
            
            .imgNav a {
                text-decoration: none;
                color: darkgray;
            }
            .imgNav .current-imgNav{
                color: #369;
            }
            .backward {
            }
            
            .forward {
                left: 500px;
            }
            
            .pageTurning {
                position: relative;
            }
            
            .pageTurning a:hover::before {
                opacity: 1;
                -webkit-transform: scale(1);
                transform: scale(1);
            }
            
            .pageTurning a::before {
                content: " ";
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                opacity: 0;
                border-radius: 50%;
                background: #fff;
                -webkit-transition: -webkit-transform .3s, opacity .3s;
                transition: transform .3s, opacity .3s;
                -webkit-transform: scale(0.9);
                transform: scale(0.9);
            }
            
            .pageTurning a:hover .icon-wrap::before,
            .pageTurning a:hover .icon-wrap::after {
                background: #c00;
            }
            
            .pageTurning a:hover .icon-wrap::before {
                -webkit-transform: translateX(-50%) rotate(45deg);
                transform: translateX(-50%) rotate(45deg);
            }
            
            .pageTurning a:hover .icon-wrap::after {
                -webkit-transform: translateX(-50%) rotate(-45deg);
                transform: translateX(-50%) rotate(-45deg);
            }
            
            .carousel-btn-prev,
            .carousel-btn-next {
                position: absolute;
                z-index: 89;
                top: 130px;
                width: 50px;
                height: 50px;
                /*border: ;*/
            }
            
            .carousel-btn-next {
                -webkit-transform: rotate(180deg);
                transform: rotate(180deg);
            }
            
            a:visited {
                color: #222;
            }
            
            .carousel-btn-prev {
                left: 15px;
            }
            
            .carousel-btn-next {
                right: 15px;
            }
            
            .icon-wrap {
                position: relative;
                display: block;
                width: 80%;
                height: 80%;
                margin: 10% 0 0 10%;
            }
            
            .icon-wrap:before {
                -webkit-transform: translateX(-50%) rotate(30deg);
                transform: translateX(-50%) rotate(30deg);
                -webkit-transform-origin: 0 100%;
                transform-origin: 0 100%;
            }
            
            .icon-wrap::after {
                top: 50%;
                -webkit-transform: translateX(-50%) rotate(-30deg);
                transform: translateX(-50%) rotate(-30deg);
                -webkit-transform-origin: 0 0;
                transform-origin: 0 0;
            }
            
            .icon-wrap::before,
            .icon-wrap::after {
                content: " ";
                position: absolute;
                left: 25%;
                width: 3px;
                height: 50%;
                background: #fff;
                -webkit-transition: -webkit-transform .3s, background-color .3s;
                transition: transform .3s, background-color .3s;
                -webkit-backface-visibility: hidden;
                backface-visibility: hidden;
            }
        </style>
    </head>

    <body>
        <div id="rotation" class="rotation">
            <div id="pageTurning" class="pageTurning">
                <a id="backward" class="carousel-btn-prev" href="javascript:void(0);">
                    <span class="icon-wrap"></span>
                </a>
                <a id="forward" class="carousel-btn-next" href="javascript:void(0);">
                    <span class="icon-wrap"></span>
                </a>
            </div>
            <div id="imgDiv" class="imgDiv">
                <img class="imgView" src="img/1.jpg">
                <img class="imgView" src="img/2.jpg">
                <img class="imgView" src="img/3.jpg">
                <img class="imgView" src="img/4.jpg">
                <img class="imgView" src="img/5.jpg">
                <img class="imgView" src="img/6.jpg">
                <img class="imgView" src="img/7.jpg">
                <img class="imgView" src="img/8.jpg">
            </div>
            <div id="imgTitle" class="imgTitle"><strong></strong></div>
            <ul id="imgNav" class="imgNav">
                <li><a href="javascript:void(0);"></a></li>
                <li><a href="javascript:void(0);"></a></li>
                <li><a href="javascript:void(0);"></a></li>
                <li><a href="javascript:void(0);"></a></li>
                <li><a href="javascript:void(0);"></a></li>
                <li><a href="javascript:void(0);"></a></li>
                <li><a href="javascript:void(0);"></a></li>
                <li><a href="javascript:void(0);"></a></li>
            </ul>
        </div>
    </body>
    <script type="text/javascript">
        //图片标题数组
        var str = [
            候鸟迁徙 成壮观过境潮,
            美国得州一石油化工厂着火 黑烟滚滚遮天蔽日,
            香格里拉 美景如画,
            气旋炸弹”袭击美国中西部 建筑遭洪水“没顶”,
            埃及阿斯旺的旅游市场,
            纽约哈得孙河畔新景观,
            吉尔吉斯斯坦举办“马背叼羊”赛 骑手飞身夺羊,
            都柏林庆祝圣帕特里克节
        ];
        //窗口加载完成执行
        window.onload = function() {
            var imgTitle = document.getElementById(imgTitle);
            //var imgView=document.getElementById(‘imgView‘);
            var imgNav = document.getElementById(imgNav);
            var imgDiv = document.getElementsByClassName(imgDiv)[0];
            var imgViewClass = document.getElementsByClassName(imgView);
            var backward = document.getElementById(backward);
            var forward = document.getElementById(forward);
            //默认显示第一张图片
            imgViewClass[0].classList.add(current-img);
            //默认显示第一个标题文字
            imgTitle.children[0].innerHTML = str[0];
            //默认第一个圆点变色
            imgNav.children[0].children[0].classList.add(current-imgNav);
            //指示显示图片顺序 
            var imgNo = 1;
            //轮播处理
            function imgskip() {
                //上一个圆点变为灰色
                imgNav.children[imgNo - 1].children[0].classList.remove(current-imgNav);
                imgNo++;
                //最后一个的下一个显示第一个
                if (imgNo == 9) {
                    imgNo = 1;
                }
                changeimg(imgNo);
            }
            var si = setInterval(imgskip, 2000);
            //停止定时器
            function stop() {
                clearInterval(si);
            }
            //开始定时器
            function start() {
                si = setInterval(imgskip, 2000);
            }
            //鼠标移入图片处理
            imgDiv.onmouseover = function() {
                    stop();
                }
            //鼠标移出图片处理
            imgDiv.onmouseout = function() {
                    start();
                }
            //给每个圆点绑定事件
            for (var imgNavNo = 1; imgNavNo <= 8; imgNavNo++) {
                //声明方法并立即执行
                (function(imgNavNo) {
                    //鼠标移入圆点处理
                    imgNav.children[imgNavNo - 1].onmouseover = function() {
                        //停止轮播
                        clearInterval(si);
                        //修改图片地址
                        //                    imgView.src="img/"+k+".jpg";
                        //隐藏所有图片
                        for (var c = 0; c < imgViewClass.length; c++) {
                            imgViewClass[c].classList.remove(current-img);
                        }
                        //显示当前图片
                        imgViewClass[imgNavNo - 1].classList.add(current-img);
                        //修改标题
                        imgTitle.children[0].innerHTML = str[imgNavNo - 1];
                        //原来显示圆点变为灰色
                        imgNav.children[imgNo - 1].children[0].classList.remove(current-imgNav);
                        //当前圆点变为选中色
                        this.children[0].classList.add(current-imgNav);
                    };
                    //鼠标移出圆点处理
                    imgNav.children[imgNavNo - 1].onmouseout = function() {
                        //修改图片显示顺序指示
                        imgNo = imgNavNo;
                        //重启轮播
                        si = setInterval(imgskip, 2000);
                    };
                })(imgNavNo);
            }
            //鼠标移入箭头处理
            backward.onmouseover = function() {
                stop();
            }
            forward.onmouseover = function() {
                    stop();
                }
            //鼠标移出箭头处理
            backward.onmouseout = function() {
                start();
            }
            forward.onmouseout = function() {
                    start();
                }
            //鼠标点击上一页处理
            backward.onclick = function() {
                    //上一个圆点变为灰色
                    imgNav.children[imgNo - 1].children[0].classList.remove(current-imgNav);
                    imgNo--;
                    //第一个的上一个显示最后一个
                    if (imgNo == 0) {
                        imgNo = 8;
                    }
                    changeimg(imgNo);
                }
            //鼠标点击下一页处理
            forward.onclick = function() {
                    //上一个圆点变为灰色
                    imgNav.children[imgNo - 1].children[0].classList.remove(current-imgNav);
                    imgNo++;
                    //最后一个的下一个显示第一个
                    if (imgNo == 9) {
                        imgNo = 1;
                    }
                    changeimg(imgNo);
                }
            //图片切换
            function changeimg(imgNo) {
                //隐藏所有图片
                for (var c = 0; c < imgViewClass.length; c++) {
                    imgViewClass[c].classList.remove(current-img);
                }
                //显示当前图片
                imgViewClass[imgNo - 1].classList.add(current-img);
                //修改标题
                imgTitle.children[0].innerHTML = str[imgNo - 1];
                //当前圆点变为选中色
                imgNav.children[imgNo - 1].children[0].classList.add(current-imgNav);
            }
        }
    </script>
</html>

 

仿百度新闻首页轮播图

原文:https://www.cnblogs.com/yuqiaoQA/p/11899407.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!