蘑菇街首页大图滚动仿写

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style media="screen">
            *{
                padding: 0;
                margin: 0px;
            }
            #wrap{
                width:533px;
                height:300px;
                position: relative;
                overflow: hidden;
                margin: 30px auto;
            }
            #wrap img{
                width:533px;
                height: 300px;
                position: absolute;
                top: 0px;
                left: 0px;
            }
            #wrap img:nth-child(2), #wrap img:nth-child(3),#wrap img:nth-child(4){
                opacity: 0;
            }
            .paginations{
                position: absolute;
                bottom: 7px;
                width: 100%;
            }
            .paginations ul{
                text-align: center;
            }
            .paginations ul li{
                display: inline-block;
                width: 14px;
                height: 14px;
                margin: 3px 7px;
            }
            .add{
                background: url(‘images/蘑菇街.png‘) no-repeat -100px -20px;
            }
            #preButton{
                background: url(‘images/蘑菇街.png‘) no-repeat 0 0;
                width: 28px;
                height: 45px;
                position: absolute;
                top: 50%;
                margin-top: -23px;
                left: 0px;
                opacity: 0.7;
                visibility: hidden;
            }
            .backg {
                background: url(‘images/蘑菇街.png‘) no-repeat -160px -20px;
            }
            #nextButton{
                background: url(‘images/蘑菇街.png‘) no-repeat -50px 0;
                width: 28px;
                height: 45px;
                position: absolute;
                top: 50%;
                margin-top: -23px;
                right: 0px;
                opacity: 0.7;
                visibility: hidden;
            }

        </style>
    </head>
    <body>
        <div id="wrap">
            <img src="images/1.jpg" alt="">
            <img src="images/2.jpg" alt="">
            <img src="images/3.jpg" alt="">
            <img src="images/4.jpg" alt="">
            <div class="paginations">
                <ul>
                    <li class=‘backg‘></li>
                    <li class=‘add‘></li>
                    <li class=‘add‘></li>
                    <li class=‘add‘></li>
                </ul>
            </div>
            <div id="preButton"></div>
            <div id="nextButton"></div>
        </div>
    </body>
    <script type="text/javascript">
        var wrap=document.getElementById(‘wrap‘);
        var paginations=document.querySelectorAll(‘.paginations ul li‘);
        var preButton=document.getElementById(‘preButton‘);
        var nextButton=document.getElementById(‘nextButton‘);
        var pictures=document.querySelectorAll(‘#wrap img‘);
        var change=233;
        var timer;
        //nowNum是当前显示的图片下标
        var nowNum=1;
        //holdNum是待显示的图片下标
        var holdNum=0;
        //oncliable控制点击事件是否可点,true可点,false不可点
        var oncliable=true;

        function animationProcess(){
            var step=0;
            var maxStep=40;
            pictures[holdNum].style.left=change+‘px‘;
            if (timer) {
                clearInterval(timer);
            }
            timer=setInterval(function(){
                step++;
                pictures[nowNum].style.opacity=1-1/maxStep*step;
                pictures[nowNum].style.left=-change/maxStep*step+‘px‘;
                pictures[holdNum].style.opacity=1/maxStep*step;
                pictures[holdNum].style.left=change-change/maxStep*step+‘px‘;
                if (step==maxStep) {
                    clearInterval(timer);
                    nowNum=holdNum;
                    //每次切图完毕,开启可点击事件
                    oncliable=true;
                }
            },16)

        }

        //分页符滚动函数
        var timer1;
        function paginationsRotate(holdNum) {
            clearInterval(timer1);
            var deg=1.8;
            timer1=setInterval(function(){
                deg+=1.8;
                if (deg>=360) {
                    clearInterval(timer1);
                }
                paginations[holdNum].style.transform=‘rotateZ(‘+deg+‘deg)‘;
            },10)
        }
        paginationsRotate(0);

        //分页符随着图的滚动换背景图片函数
        function backgroundChange(holdNum){
            for (var i = 0; i < paginations.length; i++) {
                paginations[i].className=‘add‘;
                console.log(i);
                // paginations[i].style.background="url(‘images/蘑菇街.png‘) no-repeat -100px -20px";
            }
                paginations[holdNum].className=‘backg‘;
        }

        //图片切换
        var timerOut=null;
        function picturesLoop(){
            if (timerOut) {
                clearInterval(timerOut);
            }
            console.log(‘pp‘);
            paginationsRotate(holdNum);
            backgroundChange(holdNum);
            animationProcess();
            timerOut=setInterval(function(){
                console.log(‘pp‘);
                nowNum=holdNum;
                holdNum++;
                if (holdNum==pictures.length) {
                    holdNum=0;
                }
                paginationsRotate(holdNum);
                backgroundChange(holdNum);
                animationProcess();
            },2000)

        }
        picturesLoop();

        //给分页符设点击事件,使图片切换到对应的位置

        for (var i = 0; i < paginations.length; i++) {
            paginations[i].index=i
            paginations[i].onmouseover=function(){
                //如连续点击同一个分页符,跳出点击事件
                if (holdNum==this.index) {
                    var oncliable2=false;
                    if (!oncliable2) {
                        return;
                    }
                }

                if (!oncliable) {
                    return;
                }
                oncliable=false;
                clearInterval(timerOut);
                clearInterval(timer);
                holdNum=this.index;
                paginationsRotate(holdNum);
                backgroundChange(holdNum);
                animationProcess();
            }
        }

        //上分页
        function pre(){
            preButton.onclick=function (){
                if (!oncliable) {
                    return;
                }
                oncliable=false;
                nowNum=holdNum;
                holdNum--;
                if (holdNum<0) {
                    holdNum=pictures.length-1;
                }
                paginationsRotate(holdNum);
                backgroundChange(holdNum);
                animationProcess();
            }
        }

        //下分页
        function next(){
            nextButton.onclick=function (){
                if (!oncliable) {
                    return;
                }
                oncliable=false;
                nowNum=holdNum;
                holdNum++;
                if (holdNum==pictures.length) {
                    holdNum=0;
                }
                paginationsRotate(holdNum);
                backgroundChange(holdNum);
                animationProcess();
            }
        }

        //当鼠标放在图片上时,图片切换停止,上下分页图标显示,调用上下分页函数
        wrap.onmouseover=function(){
            clearInterval(timerOut);
            preButton.style.visibility=‘visible‘;
            nextButton.style.visibility=‘visible‘;
            next();
            pre();
        }
        //当鼠标离开图片是,图片切换重新开始,上下分页图标隐藏
        wrap.onmouseleave=function(){
            picturesLoop();
            preButton.style.visibility=‘hidden‘;
            nextButton.style.visibility=‘hidden‘;
        }

    </script>
</html>
时间: 2024-10-27 19:09:25

蘑菇街首页大图滚动仿写的相关文章

知乎首页的简单仿写

HTML(5)+CSS(3).静态页面仿写 Github链接:https://github.com/nebulium/ZhiHu 大概布局如下,在此布局基础上进一步处理. 切图:图片非高清,不过是非重点.在设计的时候使用到的chrome插件:屏幕尺子(page ruler)和color zilla取色工具. 布局总结:header为position:fixed,且z-index较大.mancolumn和sidebar部分考虑到并不会自适应,设置为position:absolute,这里注意统一用

Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片

Android中仿淘宝首页顶部滚动自定义HorizontalScrollView定时水平自动切换图片 自定义ADPager 自定义水平滚动的ScrollView效仿ViewPager 当遇到要在ViewPager中添加多张网络请求图片的情况下,不能进行复用,导致每次都要重新去求情已经请求过的数据致使流量数据过大 自定义的数据结构解决了这个问题,固定传递的图片数据之后进行统一请求,完成后进行页面切换数据复用 代码中涉及网络请求是用的Volley网络请求框架 PicCarousel是网络数据请求的U

html仿写电子科技大学首页(html首页开发实战)

说明:本来是要仿写www.zixue.it网站首页的,但由于该首页比较复杂,写了好几天才写了一半.想着自己是自学.初学,而且考虑到往后搭建后台时需要的html知识不多,故改为仿写电子科技大学的网站首页(http://www.uestc.edu.cn).仿写电子科技大学网站首页时,有些地方没有做深入的优化,会跟原版的网页有细微的差别,但不影响,里面的所有按钮及链接都可以点击获取数据. 开发时长:两天晚上的空余时间+一个早上的时间,大约8小时.代码不到1000行. 到今天为止,html的自学暂时告一

礼物说仿写项目iOS源码

礼物说仿写(updating...) 源码下载:http://code.662p.com/view/14507.html api: 礼物说 首页精选 banner2: http://api.liwushuo.com/v2/secondary_banners?gender=1&generation=2 banner1: http://api.liwushuo.com/v2/banners?channel=iOS 精选: http://api.liwushuo.com/v2/channels/101

仿写及比较标哥的iOS时钟动画

一.前言 以前看各种绚丽的UI特效动画代码,采用的方法是会先运行一篇,然后直接去看实现代码.初学时抱着瞻仰的态度去接触,去认识,是没有错的.但是在了解了像素.动画渲染机制,CoreAnimation API,推导过二维.三维的仿射矩阵之后,我们可以改变阅读UI动画博文或者是源码的方式了. Talk is cheap, show me the code——Linus Torvalds. 大量的仿写:一定一定要多写——叶孤城__ 在CodeReview线下大会上的发言. 最近安居客.猿题库.蘑菇街.

【原生javascript】margin-top实现淘宝首页图片滚动

<!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" xml:lang="en"> <head> <meta h

ASP.NET WebAPI 14 仿写Filter管道

WebAPI中有设计了几种管道(Channel),大概如下:HttpMessageHandler,ActionFilter管道,ExceptionFilter管道.在三种管道中HttpMessageHandler管道与ExceptionFilter管道是基于级别设计的,ActionFilter管道是基于方法级别设计的.对于ActionFilter管道,因为采用的是AOP的思想,所以按方法级别去设计. 在看WebAPI源码过程中对ActionFilter管道中何用的表达示树与闭包等内容之前并没有下

仿写网易云-排行榜页面

第一次仿写页面(内心还是很鸡冻啊~~~) 还有很多地方没有完善 暂时就先这样吧 以后有机会在加效果 多练习 熟能生巧~ 好喜欢网易云音乐啊~音乐的天堂~希望以后自己也能去网易云工作就好了了~~~~~ 1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Comp

怎么样仿写已知网址的网页?

今天上午在实验室里学习,无意中看到湖北老乡群里爆出了一则外包的消息. 是问有没有回搭建网站.我接了这单活儿.需求很简单,仿照这一个已知的网站做一个静态页面. 工作量不大.他说了,做一个静态网站.因为之前,我曾做过类似的工作,所以我就答应了. 遇到的第一个问题就是评价.他让我开个价.说实话,我当时也蒙了.这个外包估价这个事情,我之前也没做过.在网上搜了下,每个人说法都不一样.看到一个我觉得可以参考的回答.按照做的页面收费. 每个30~50.于是我给他报价是500,理由就是 大概做10个左右的页面,