第65天:仿网易轮播图

简介: 仿网易轮播图1、HTML部分 1 DOCTYPE html> 2 3 4 5 仿网易轮播图 6 7 8 9 10 11 12 13 14 ...

仿网易轮播图

1、HTML部分

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>仿网易轮播图</title>
 6     <link rel="stylesheet" href="css/css.css">
 7     <script src="js/slider.js" type="text/javascript"></script>
 8     <script src="js/animate.js" type="text/javascript"></script>
 9 </head>
10 <body>
11     <div class="w-slider" id="js_slider">
12         <div class="slider" >
13             <div class="slider-main" id="slider_main_block">
14                 <div class="slider-main-img"><a href="#"><img src="images/1.jpg" alt=""></a></div>
15                 <div class="slider-main-img"><a href="#"><img src="images/2.jpg" alt=""></a></div>
16                 <div class="slider-main-img"><a href="#"><img src="images/3.jpg" alt=""></a></div>
17                 <div class="slider-main-img"><a href="#"><img src="images/4.jpg" alt=""></a></div>
18                 <div class="slider-main-img"><a href="#"><img src="images/5.jpg" alt=""></a></div>
19                 <div class="slider-main-img"><a href="#"><img src="images/6.jpg" alt=""></a></div>
20             </div>
21         </div>
22         <div class="slider-ctrl" id="slider_ctrl">
23             <span class="slider-prev"></span>
24             <span class="slider-next"></span>
25         </div>
26     </div>
27 </body>
28 </html>

2、CSS部分

 1 *{
 2     margin: 0;
 3     padding: 0;
 4 }
 5 .w-slider{
 6     width: 310px;
 7     height: 265px;
 8     margin:100px auto;
 9     background-color: red;
10     position: relative;
11     overflow: hidden;
12 }
13 .slider{
14     width: 310px;
15     height: 220px;
16     background-color: yellow;
17 }
18 .slider-main{
19     width: 620px;
20     height: 220px;
21 
22 }
23 .slider-main-img{
24     position: absolute;
25     top:0;
26     left:0;
27 }
28 
29 .slider-ctrl{
30     text-align: center;
31     padding-top: 5px;
32 }
33 .slider-con{
34     width: 24px;
35     height: 20px;
36     display: inline-block;
37     background-color: blue;
38     background: url(../images/icon.png) no-repeat -24px -782px;
39     margin:0 5px;
40     cursor: pointer;
41     text-indent: -20em;
42     overflow: hidden;
43 }
44 .current{
45     background-position: -24px -762px;
46 }
47 .slider-prev,.slider-next{
48     position: absolute;
49     top:50%;
50     margin-top: -35px;
51     background: url(../images/icon.png) no-repeat 6px top;
52     width: 30px;
53     height: 35px;
54     opacity:0.8;
55     cursor: pointer;
56 }
57 .slider-prev{
58     left:0;
59 }
60 .slider-next{
61     right:0;
62     background-position: -6px -44px;
63 }

3、js部分

 1 /**
 2  * Created by Administrator on 2017/10/25.
 3  */
 4 window.onload=function(){
 5     //获取元素
 6     function $(id) {
 7         return document.getElementById(id);
 8     }
 9     var js_slider = $("js_slider");//获取最大盒子
10     var slider_main_block = $("slider_main_block");///图片的父亲
11     var imgs = slider_main_block.children;//获得所有的图片组
12     var slider_ctrl=$("slider_ctrl");//获得控制的父盒子
13 
14     //操作元素
15     for(var i=0;i<imgs.length;i++){
16         var span=document.createElement("span");//创建span
17         span.className="slider-con";//添加类名
18         span.innerHTML=imgs.length-i;//实现倒叙插入
19         slider_ctrl.insertBefore(span,slider_ctrl.children[1]);//在父亲倒数二个孩子前插入
20 
21     }
22     var spans=slider_ctrl.children;
23     spans[1].setAttribute("class","slider-con current");//两个类名
24 
25     var scrollWidth=js_slider.clientWidth;//得到大盒子宽度 动画移动的距离
26     for(var i=1;i<imgs.length;i++){//除了当前的,从1开始
27         imgs[i].style.left=scrollWidth+"px";//除了当前,其他的走到scrollWidth位置
28     }
29 
30     //三个按钮动画开始
31     var iNow=0;//控制播放张数
32     for(var k in spans){//遍历三个按钮
33         spans[k].onclick=function(){
34             if(this.className=="slider-prev"){
35                 //点击左侧按钮时,当前走到右边,下张快速走到左侧,然后再到中间
36                 animate(imgs[iNow],{left:scrollWidth});//当前图片慢慢走到scrollWidth位置
37                 --iNow<0?iNow=imgs.length-1:iNow;//先加加再判断后执行
38                 imgs[iNow].style.left=-scrollWidth+"px";//快速走到左侧
39                 animate(imgs[iNow],{left:0});//下一张走到left:0的位置
40                 setSquare();
41             }else if(this.className=="slider-next"){//右侧按钮开始
42                 //点击右侧按钮时,当前走到左边,下张快速走到右侧,然后再到中间
43                 animate(imgs[iNow],{left:-scrollWidth});//当前图片慢慢走到-scrollWidth位置
44                 ++iNow>imgs.length-1?iNow=0:iNow;//先加加再判断后执行
45                 imgs[iNow].style.left=scrollWidth+"px";//快速走到右侧
46                 animate(imgs[iNow],{left:0});//下一张走到left:0的位置
47                 setSquare();
48 
49             }else{
50                 //小span点开始
51                var that=this.innerHTML-1;
52                 if(that>iNow){//相当于右侧按钮
53                     animate(imgs[iNow],{left:-scrollWidth});//当前的走到左边
54                     imgs[that].style.left=scrollWidth+"px";//点击的走到右边
55                 }else if(that<iNow){//相当于左侧按钮
56                     animate(imgs[iNow],{left:scrollWidth});//当前的走到右边
57                     imgs[that].style.left=-scrollWidth+"px";//点击的走到左边
58 
59                 }
60                 iNow=that;//点击的给当前
61                 animate(imgs[iNow],{left:0});//点击的走到中间
62                 setSquare();//调用函数
63             }
64         }
65 
66         //控制播放按钮的的函数
67         function setSquare(){
68             for(var i=1;i<spans.length-1;i++){//只遍历1-6的span
69                 spans[i].className="slider-con";//清除所有的current
70             }
71             spans[iNow+1].className="slider-con current";//当前的 从1开始
72         }
73 
74     }
75 
76 
}

运行效果:

 

相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
100_RLHF(人类反馈强化学习)原理与实践
在大型语言模型(LLM)的发展历程中,我们见证了模型从简单的文本生成工具,逐渐演变为能够理解复杂指令、进行多轮对话、甚至展示创造性思维的智能系统。然而,这一进化并非仅仅依靠模型规模的增大和数据量的增加,更重要的是训练方法的创新。其中,人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF)作为一种革命性的训练范式,在2022年随着ChatGPT的问世而广受关注,并在随后的GPT-4、Claude、Gemini等先进模型中得到广泛应用。
|
应用服务中间件 网络安全 nginx
使用let's encrypt免费ssl证书启用网站https
网站启用https访问,首先需要一个证书机构颁发的ssl证书,目前给个人免费颁发证书的机构,比较好的是:let's encrypt。Let's Encrypt是由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起公共的免费SSL项目,免费,安装方便,配置简单,值得信赖。
10134 1
|
10月前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
340 20
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
343 4
|
Android开发 Python
uiautomator2:python控制手机的神器
uiautomator2:python控制手机的神器
388 0
|
数据可视化 API 开发者
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化(上)
Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化
|
存储 JavaScript
任务清单小功能的实现(任务的增、删、改、查、存储)使用Vue实现
这篇文章介绍了使用Vue实现的任务清单小功能,包括任务的增加、删除、修改、查看以及数据存储。文章通过视频演示展示了实现效果,重点讲解了编辑功能的实现,并通过代码实例展示了编辑功能的核心代码,同时提供了完整的代码下载链接以及以往练习的概览。
任务清单小功能的实现(任务的增、删、改、查、存储)使用Vue实现
|
JSON Java Maven
关于使用Java-JWT的笔记
这篇文章介绍了使用Java-JWT库来生成和验证JSON Web Tokens (JWT) 的方法。文中解释了JWT的组成,包括头部、载荷和签名,并提供了如何使用java-jwt库生成和验证token的示例代码。此外,还提供了Maven依赖和一些关于token的标准声明和自定义声明的解释。
关于使用Java-JWT的笔记
|
搜索推荐 Java 开发者
从 Java 小白到大神:一文带你搞懂子类如何“继承”父类江山,开创新世界!
【6月更文挑战第16天】Java中的继承是面向对象的核心,它允许子类继承父类的属性和方法,提高代码复用。通过实例,如`Animal`和`Dog`类,显示了如何创建和覆盖方法。继承不仅简化代码,还支持多态性,是构建可扩展系统的关键。从新手到专家,掌握继承意味着掌握编程的强大工具,能解锁更复杂的系统设计和优化。
327 3
|
前端开发 JavaScript
idea 对JavaScript进行debug调试
idea 对JavaScript进行debug调试
637 0