热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

案例效果:原生JS实现pc端轮播图效果

原标题:案例效果:原生JS-实现pc端轮播图效果案例效果:原生JS-实现pc端轮播图效果

原标题:案例效果:原生JS-实现pc端轮播图效果


案例效果:原生JS-实现pc端轮播图效果



    • 案例:轮播图需求

    • 实现效果:




案例:轮播图需求



  • 布局:ul下有很多li标签;浮动在一行;

  • 原理:切换图片的时候,把ul位置修改一下,给ul的父容器,设置一个 overflow:hidden;

  • 功能需求:

    • 序号轮播

    • 左右按钮的轮播

    • 自动轮播

    • 鼠标在轮播图里面的时候,停止自动轮播,离开后继续自动轮播





实现效果:

在这里插入图片描述
html部分

<div class="box" id="box">
<div class="inner" id="inner">
<ul id="imglist">
<li>
<a href="#"><img src="images/1.jpg" alt="">a>
li>
<li>
<a href="#"><img src="ima文章来源地址36145.htmlges/2.jpg" alt="">a>
li>
<li>
<a href="#"><img src="images/3.jpg" alt="">a>
li>
<li>
<a href="#"><img src="images/4.jpg" alt="">a>
li>
<li>
<a href="#"><img src="images/5.jpg" alt="">a>
li>
<li>
<a href="#"><img src="images/6.jpg" alt="">a>
li>
ul>
<div class="list">
<i class="current">1i>
<i>2i>
<i>3i>
<i>4i>
<i>5i>
<i>6i>
div>
<div class="arrow">
<span class="arrow-left"><span>
<span class="arrow-right">>span>
div>
div>
div>

css部分

* {
margin: 0;
padding: 0;
}

ul {
list-style: none;
}

.box {
width: 730px;
height: 454px;
padding: 8px;
border: 1px solid green;
margin: 100px auto;
}

.inner {
position: relative;
overflow: hidden;
height: 454px;
}

#imglist {
width: 700%;
position: absolute;
left: 0;
transition: left 300ms linear;
}

li {
float: left;
}

.list {
position: absolute;
bottom: 20px;
left: 50%;
margin-left: -85px;
}

.list i {
width: 20px;
height: 20px;
border-radius: 50%;
background-color: #fff;
color: #333;
float: left;
font-style: normal;
line-height: 20px;
font-size: 14px;
text-align: center;
margin-right: 10px;
cursor: pointer;
}

.list i:last-child {
margin-right: 0;
}

.list i.current {
background-color: skyblue;
color: #fff;
}

.arrow {
position: absolute;
width: 100%;
top: 50%;
margin-top: -30px;
}

.arrow-left,
.arrow-right
{
width: 30px;
height: 60px;
position: absolute;
font: 20px/60px "consolas";
color: #fff;
background-color: rgba(0, 0, 0, .3);
text-align: center;
cursor: pointer;
}

.arrow-right {
right: 0;
}

js部分:

// 获取DOM
var yuan = document.querySelectorAll("i");
var li = document.querySelector("ul li");
var ul = document.querySelector("ul");
var imgs = document.querySelector("#imglist");
var right = document.querySelector(".arrow-right");
var left = document.querySelector(".arrow-left");
var box = document.querySelector(".box");
window.onload = function() {
//------------------------------------这里是点击小圆圈,控制图片的切换
//循环小圆点 注册小圆点
for (var i = 0; i < yuan.length; i++) {
//我们需要这里面的i 必须提前拿出来,要不最后i的值就是最后一个数值了
yua文章来源站点https://www.yii666.com/n[i].num = i;
//注册事件
yuan[i].onmouseover = function() {
// 现在要循环将样式移除
for (var j = 0; j < yuan.length; j++) {
yuan[j].classList.remove("current");
}
//这里是为了将点击的小圆点 增加上样式
this.classList.add("current");
var num = this.num;
//到这里的思路就是点击小圆点 将图片进行移动,向左面移动,上面css做了相应的定位操作
//移动的距离就是 n 乘以 一张图片的宽度,
//n 就是选择的小圆点的 坐标-----i(num)
//图片的宽度 box.offsetWidth
var left = num * li.offsetWidth;
// console.log(num, box.offsetWidth, left);
imgs.style.left = `-${left}px`;
//这里小原点联动左右按钮
for (var p = 0; p < yuan.length; p++) {
//清除全部样式(小圆点)
yuan[p].classList.remove("current");
}
//给当前的小圆点增加样式
yuan[nwww.yii666.comum].classList.add("current");
//这里这个位置比较关键,在上面设置完样式之后,记得将此num赋值给全局的index
index = this.num;
}
}
//------------------------------------以上是点击小圆圈,控制图片的切换
//---------------www.yii666.com---------------------下面是开始右面轮播,控制图片的切换
//首先定义一个全局的index,这个index的作用依旧是控制图片的切换
var index = 0;
right.onclick = function() {
index++;
//这里要对index做一下判断,如果不做判断,可以试想一下,
//只要你一点击,index就会无限的增大,增大到你“无法自拔”
if (index == ul.children.length) {
//如果坐标为6的话,显示应该显示第1张图片,所以要复位 即index=0
index = 0;
}
var left = index * li.offsetWidth;
// console.log(index, box.offsetWidth, left);
imgs.style.left = `-${left}px`;
//点击右面增加联动小圆点的效果
for (var n = 0; n < yuan.length; n++) {
//清除全部样式(小圆点)
文章来源地址36145.html yuan[n].classList.remove("current");
}
//给当前的小圆点增加样式
yuan[index].classList.add("current");
};
//------------------------------------以上是结束右面轮播,控制图片的切换
//------------------------------------下面是开始左面轮播,控制图片的切换
left.onclick = function() {
index--;
//这里同右点击一样,需要做一下判断,
console.log(index);
if (index == -1) {
index = ul.children.length - 1;
}
var left = index * li.offsetWidth;
// console.log(index, box.offsetWidth, left);
// console.log(left);
imgs.style.left = `-${left}px`;
//这个位置做的是 左面点击联动小圆点
for (var m = 0; m < yuan.length; m++) {
//清除全部样式(小圆点)
yuan[m].classList.remove("current");
}
//给当前的小圆点增加样式
yuan[index].classList.add("current");
};
//------------------------------------上面是结束左面轮播,控制图片的切换
//------------------------------------开始设置自动轮播
var timer = setInterval(function() {
right.onclick();
}, 1000);
//------------------------------------以上是自动轮播结束
//------------------------------------设置鼠标进来就停止开始
box.onmouseover = function() {
clearInterval(timer);
};
//------------------------------------设置鼠标进来就停止结束
//------------------------------------设置鼠标出去就停止开始
box.onmouseout = function() {
timer = setInterval(function() {
right.onclick();
}, 1000);
};
//------------------------------------设置鼠标出去就停止结束
}


未完待续,本篇文章做的PC端的处理,目前从6页-1页,1页到6页还有点小瑕疵,会及时更新上的,其他功能一切正常,欢迎大家评论

来源于:案例效果:原生JS-实现pc端轮播图效果


推荐阅读
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了CSS样式属性text-overflow、overflow、white-space、width的使用方法和效果。通过设置这些属性,可以实现文本溢出省略号、隐藏溢出内容、禁止换行以及限制元素宽度等效果。详细讲解了每个属性的作用和用法,以及常见的应用场景和注意事项。对于前端开发者来说,掌握这些CSS样式属性的使用方法,能够更好地实现页面布局和文本显示效果。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • PHP函数实现分页含文本分页和数字分页【PHP】
    后端开发|php教程PHP,分页后端开发-php教程最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。影视网源码带充值系统,vscode配置根 ... [详细]
author-avatar
广东快乐笨人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有