1 Star 0 Fork 24

吴彦祖/javascript_daily_practise

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
practise17.html 4.26 KB
一键复制 编辑 原始数据 按行查看 历史
欸嘿 提交于 2021-08-16 17:35 . commit
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>轮播图</title>
</head>
<body>
<div id="outer">
<ul id="imglist">
<li><img src="img/pic1.jpg" ></li>
<li><img src="img/pic2.jpg" ></li>
<li><img src="img/pic3.jpg" ></li>
<li><img src="img/pic4.jpg" ></li>
<li><img src="img/pic1.jpg" ></li>
</ul>
<!-- 创建导航按钮 -->
<div id="navdiv">
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
</div>
</div>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
// 设置imglist宽度
// 获取imglist
var imglist = document.getElementById("imglist");
// 获取所有img标签
var imgArr = document.getElementsByTagName("img");
// 设置imglist宽度
imglist.style.width = 600 * imgArr.length +"px";
var navdiv = document.getElementById("navdiv");
var outer = document.getElementById("outer");
// navdiv居中:(outer宽度-navdiv宽度)/2
navdiv.style.left = (outer.offsetWidth - navdiv.offsetWidth)/2 +"px"
// 获取所有a
var allA = document.getElementsByTagName("a");
// 默认显示图片的索引
var index = 0;
// 默认的选中效果
allA[index].style.backgroundColor = "#F2F2F2"
// 自动切换标识
var timer;
autochange();
// 点击超链接切换到指定图片
for(let i=0;i<allA.length;i++){
allA[i].onclick = function(){
// 关闭自动切换的定时器
clearInterval(timer)
// 获取点击超链接的索引
console.log(i)
index = i
// imglist.style.left = -600*i +"px"
setA(i);
// 使用move函数移动图片
move(imglist,"left",-600*i,50,function(){
autochange()
})
}
}
// 船舰一个方法设置a的颜色
function setA(index){
// 判断当前索引是否是最后一张图片
if(index >= imgArr.length - 1){
index = 0;
// 此时显示最后一张图片,而最后一张图片与第一张一样
// 通过css将最后一张变为第一张
imglist.style.left = 0;
}
console.log(index)
for(var i=0;i<allA.length;i++){
// 删除a内联样式
allA[i].style.backgroundColor = ""
}
allA[index].style.backgroundColor = "#F2F2F2"
}
// 自动切换
function autochange(){
timer = setInterval(function(){
index++;
index %= imgArr.length
move(imglist,"left",-600*index,10,function(){
setA(index)
});
},3000)
}
}
</script>
<script type="text/javascript">
// obj执行动画的对象
// attr执行动画的样式,left,top,width,height
// target执行动画的目标位置
// speed速度 正负号控制方向
// callback 回调函数
function move(obj,attr,target,speed,callback){
// 关闭上一个计时器
clearInterval(obj.timer)
// 获取元素目前位置
var current = parseInt(getComputedStyle(obj,null)[attr])
// 判断速度正负值
if(current > target){
speed = -speed
}
// 开启一个定时器执行动画效果
obj.timer = setInterval(function(){
// 获取原样式
var oldvalue = parseInt(getComputedStyle(obj,null)[attr]);
// 在旧值上增加
var newvalue = oldvalue +speed;
// 移动完成后调整位置
if((speed < 0 && newvalue < target) || (speed > 0 && newvalue > target)){
newvalue = target;
}
obj.style[attr] = newvalue + "px";
// 当元素移动到0px停止执行动画
if(newvalue == target){
// 关闭计时器
clearInterval(obj.timer);
// 执行回调函数
callback();
}
},10)
}
</script>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
img{
width: 36.25rem;
height: 20.8125rem;
}
#imglist{
list-style: none;
/* width: 112.5rem; */
position: absolute;
/* 每移动600px就移动到下一张 */
left: 0px;
}
#imglist li{
float: left;
margin: 0 0.625rem;
}
#outer{
width: 37.5rem;
height: 20.8125rem;
margin: 3.125rem auto;
background-color: #F2F2F2;
text-align: center;
padding: 0.625rem 0;
position: relative;
overflow: hidden;
}
#navdiv{
position: absolute;
bottom: 0.9375rem;
}
#navdiv a{
display: block;
width: 1.25rem;
height: 1.25rem;
border-radius: 0.625rem;
background-color: #FF0000;
float: left;
margin: 0 0.3125rem;
opacity: 0.6;
}
#navdiv a:hover{
background-color: #F2F2F2;
}
</style>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LJGjjb/javascript_daily_practise.git
git@gitee.com:LJGjjb/javascript_daily_practise.git
LJGjjb
javascript_daily_practise
javascript_daily_practise
master

搜索帮助