关于案例的代码问题
来源:7-1 揭秘案例3个bug,并处理前两个bug
迷失的小麦
2020-01-14 15:49:31
为什么我看有的同学说改变index的css值也能实现效果?为什么?

代码报错,但是我找不到错误
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
* { margin: 0; padding: 0; border: none; }
html,
body { overflow: hidden; height: 100%; background: #93b3c6; }
span { display: block; width: 16px; height: 16px; margin: 30px auto 40px; border-radius: 50%; background: #fff; }
nav { position: relative; display: flex; width: 78.125vw; margin: 0 auto 45px; justify-content: space-between; }
nav:before { position: absolute; top: 20px; display: block; width: 100%; height: 10px; content: ""; background: #fff; }
nav > a { font-size: 20px; position: relative; padding: 10px; text-decoration: none; color: #255d7e; border: 2px solid #5395b4; background: #fff; }
div { position: relative; overflow: hidden; width: 78.125vw; height: 75vh; margin: 0 auto; background: #fff; box-shadow: 0 0 30px 0 rgba(8, 1, 3, .3); }
div > img { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 98%; height: 96%; margin: auto; }
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function (){
var index=$("a").length-1;
//var index=0;
/*一、刚打开页面时,按一下左键没有变化,按两下才能切换
二、ctrl+F5刷新页面
按下右键之后出现的是丽江古城的图片,正确的应该是泸沽湖的*/
var swiper=function (){
$("img").eq(index).css({"opacity":"1"}).siblings().css({"opacity":"0"});
};
//a元素不支持keydown事件,因为无法聚焦,一般可以触发keydown事件的元素有:document,body,window,input,textarea等
//给a和document元素都绑定了mouseenter事件,所以移入document的时候会触发,但是当你移入a的时候并不会再次触发document的移入事件
//当a标签和document元素都绑定了onkeydown事件, 如果不阻止事件冒泡, 那么触发a元素该事件的时候, 向上冒泡同时会触发他的先辈document的onkeydown事件, 两个都好执行。 所以需要添加stopPropgation阻止这种情况
$("a").add(document).on({
mouseenter:function (event){
event.stopPropagation();
index=$(this).index();
swiper();
},
keydown:function (event){
event.stopPropagation();
if (event.keyCode == 37) {
index = index > 0 ? --index : $('a').length - 1;
} else if (event.keyCode == 39) {
index = index < $('a').length - 1 ? ++index : 0;
} else {
//return false;//阻止页面跳转
//event.preventDefault();//阻止页面跳转
return true;//页面正常跳转
}
swiper();
}
});
</script>
</head>
<body>
<nav>
<a href="#">泸沽湖</a>
<a href="#">丽江古城</a>
<a href="#">茶马古道</a>
<a href="#">就这家·云逸客栈</a>
<a href="#">西双版纳</a>
<a href="#">云南红酒庄</a>
<a href="#">轿子雪山</a>
<a href="#">普者黑</a>
<a href="#">海埂大坝</a>
<a href="#">玉龙湾</a>
<a href="#">昆明郊野公园</a>
<a href="#">欧洲风琴小镇</a>
</nav>
<div>
<img src="images/1.jpg">
<img src="images/2.jpg">
<img src="images/3.jpg">
<img src="images/4.jpg">
<img src="images/5.jpg">
<img src="images/6.jpg">
<img src="images/7.jpg">
<img src="images/8.jpg">
<img src="images/9.jpg">
<img src="images/10.jpg">
<img src="images/11.jpg">
<img src="images/12.jpg">
</div>
</body>
</html>1回答
同学你好,关于同学的问题解答如下:
1、先看同学代码中的bug,大致意思是结束符不对,这个时候同学就可以查看下自己的标签符号是否嵌套正确,有无遗漏的。查看得知:

加上就正确了。
2、再看为什么给第一张图片加层级样式就可以解决问题。因为我们的图片都是被定位到了同一个位置,是通过控制它们的显示隐藏实现的效果。当我们给第一张图片加了层级以后,第一张图片就被放在了所有的图片上面,当页面刚加载成功且我们未执行任何操作时(即只加载了样式和图片,并未执行鼠标移入操作时),第一张图片就会显示在最上方,也就是默认第一张的效果。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
相似问题