老师,我的图片显示顺序不对
点击第1个按钮,显示第2张图片,第2个按钮显示第3张图片,以此类推......第11个按钮显示第12张图片。点击第12个按钮,没有变化。
我的程序目录如下:
index.html文件如下:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>his demo</title> <meta charset="UTF-8"> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <link type="text/css" rel="stylesheet" href="css/base.css"> <link type="text/css" rel="stylesheet" href="css/index.css"> </head> <body> <!-- 标题部分 --> <h1 class="heading">云南旅游相册</h1> <!-- 白色圆圈 --> <div class="circle"></div> <!-- 相册部分 --> <div class="gallery"> <!-- 相册导航栏 --> <nav class="gallery__nav"> <!-- 12个导航按钮 --> <div class="gallery__nav__bar"></div> <button class="gallery__nav__btn">泸沽湖</button> <button class="gallery__nav__btn">丽江古城</button> <button class="gallery__nav__btn">茶马古道</button> <button class="gallery__nav__btn">就这家·云逸客栈</button> <button class="gallery__nav__btn">西双版纳</button> <button class="gallery__nav__btn">云南红酒庄</button> <button class="gallery__nav__btn">轿子雪山</button> <button class="gallery__nav__btn">普者黑</button> <button class="gallery__nav__btn">海埂大坝</button> <button class="gallery__nav__btn">玉龙湾</button> <button class="gallery__nav__btn">昆明郊野公园</button> <button class="gallery__nav__btn">欧洲风琴小镇</button> </nav> <!-- 相册盒子 --> <div class="gallery__box"> <!-- 相册列表 --> <div class="gallery__box__list"> <!-- 12张图片 --> <img class="gallery__box__list__item gallery__box__list__item-current" src="img/0.jpg"> <img class="gallery__box__list__item" src="img/1.jpg"> <img class="gallery__box__list__item" src="img/2.jpg"> <img class="gallery__box__list__item" src="img/3.jpg"> <img class="gallery__box__list__item" src="img/4.jpg"> <img class="gallery__box__list__item" src="img/5.jpg"> <img class="gallery__box__list__item" src="img/6.jpg"> <img class="gallery__box__list__item" src="img/7.jpg"> <img class="gallery__box__list__item" src="img/8.jpg"> <img class="gallery__box__list__item" src="img/9.jpg"> <img class="gallery__box__list__item" src="img/10.jpg"> <img class="gallery__box__list__item" src="img/11.jpg"> </div> </div> </div> <script type="text/javascript" src="../../jquery/jquery-3.4.1.min.js"></script> <script type="text/javascript" src="js/index.js"></script> </body> </html>
base.css文件如下:
body, h1, h2, nav, button, div, span { margin: 0; padding: 0; font-weight: normal; } body { font-family: "Microsoft YaHei", "微软雅黑"; background-color: #90B0C5; }
index.css文件如下:
/*标题部分*/ .heading { margin: 20px auto; width: 240px; height: 40px; line-height: 40px; font-size: 26px; text-align: center; color: #F28; } /*白色圆圈*/ .circle { margin: auto; box-shadow: 0 0 0 2px rgba(100, 100, 100, .4); border-radius: 50%; width: 14px; height: 14px; background-color: #FFF; } /*相册部分*/ .gallery { margin: 20px auto; width: 1340px; text-align: center; } /*相册导航栏*/ .gallery__nav { overflow: hidden; position: relative; display: flex; /*弹性盒子模型*/ justify-content: space-between; width: 1340px; height: 40px; line-height: 40px; } /*相册导航按钮的长方条*/ .gallery__nav__bar { position: absolute; left: 0; top: 14px; border-top: 1px solid #666; border-bottom: 1px solid #666; width: 100%; height: 10px; background-color: #FFF; z-index: 0; } /*相册导航按钮*/ .gallery__nav__btn { float: left; border: 1px solid #4682B4; padding: 0 10px; height: 100%; font-size: 16px; color: #4682B4; z-index: 1; } /*相册导航按钮的鼠标悬停效果*/ .gallery__nav__btn:hover { font-weight: bold; cursor: pointer; } .gallery__nav__btn:nth-of-type(4n):hover { color: #F35; } .gallery__nav__btn:nth-of-type(4n+1):hover { color: #1E90FF; } .gallery__nav__btn:nth-of-type(4n+2):hover { color: #F80; } .gallery__nav__btn:nth-of-type(4n+3):hover { color: #3D3; } /*相册盒子*/ .gallery__box { border: 1px solid #4682B4; box-shadow: 0 0 2px 4px rgba(100, 100, 100, .4); margin: 26px auto 10px; padding: 10px; width: 1280px; height: 640px; background-color: #FFF; } /*相册列表*/ .gallery__box__list { position: relative; width: 1280px; height: 640px; } /*相册图片*/ /*这里的每张图片必须都位于相同的位置,不能设置浮动*/ .gallery__box__list__item { position: absolute; left: 0; top: 0; width: 1280px; height: 640px; opacity: 0; /*透明度0*/ transition: all .8s; } /*当前图片:透明度1*/ .gallery__box__list__item-current { opacity: 1; }
index.js文件如下:
$(document).ready(function() { // 对每个按钮绑定点击事件 // 按钮的class名为gallery__nav__btn $(".gallery__nav__btn").click(function() { // 图片的class名为gallery__box__list__item // 若是当前显示的图片,则为其class名添加gallery__box__list__item-current // 其余兄弟元素则移除class名gallery__box__list__item-current $(".gallery__box__list__item").eq($(this).index()).addClass("gallery__box__list__item-current").siblings().removeClass("gallery__box__list__item-current"); }); });
jQuery文件是在官网下载的,能够正确引入,没有问题。
24
收起
正在回答
3回答
同学你好,因为index方法获取的是当前元素在所有兄弟元素中的索引值,你的导航多了一个div,所以导致图片与按钮没有对应。
示例:可以打印一下index值,第一个按钮的索引不为0,是1
建议:可以不用去除html结构中div元素,可以将获取的索引值减一即可。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
我学习太差被关起来了
2020-01-13 10:31:48
我发现问题了:当把HTML元素 <div class="gallery__nav__bar"></div> 删除后,
就能够实现按钮与对应图片正常显示。
看来这里不严谨,有bug。为什么有bug?jQuery的eq方法选择对应的下标为什么在这里会出错?
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星