编写思路
(1) 可以将无序表和图片容器分开, 无序表的 li 只用作为事件触发器
(2) 图片默认显示第一张, 实际上全部都已加载完, 除第一张外都隐藏
(3) 监听鼠标聚焦事件即可, 聚焦到哪个 li 上就把对应图片显示,
然后把其它图片隐藏
(4) li 标签的数量和 img 标签的数量一致, 因此匹配图片的时候,
可以用 li 的索引来对应 img 标签的索引
效果图示
html 结构代码
<body> <div id="theFirst"> <ul> <li style="background-color: deepskyblue"> <span>tab1</span> </li> <li> <span>tab2</span> </li> <li> <span>tab3</span> </li> <div id="theSecond"> <img src="images/1.png" class="def" /> <img src="images/2.png" class="def" style="display: none" /> <img src="images/3.png" class="def" style="display: none" /> </div> </ul> </div> </body>
css 样式代码
<style> * { padding: 0; margin: 0; } #theFirst { position: fixed; top: 50%; left: 50%; width: 456px; height: 202px; border: black solid 1px; } ul { list-style: none; } ul li { float: left; background-color: aqua; } ul li span { display: inline-block; width: 150px; height: 40px; border: black solid 1px; } /*这里要清除浮动流, 不然div会被吞掉一部分*/ ul div { width: 456px; height: 160px; clear: both; } /*图片大小要适配*/ .def { width: 456px; height: 160px } </style>
js 代码
<script src="scripts/jquery.min.js"></script> <script> $(function () { //事件委托给ul,挪动到每个li上后触发换图事件 $('ul').on('mouseenter', 'li', function () { //li在被鼠标聚焦时颜色变深, 同时其他li的颜色保持不变, 默认显示第一张图片因此第一项默认深色 $(this).css('background-color', 'deepskyblue').siblings().css('background-color', 'aqua'); //除第一张图片外,其他图片默认不显示,切换显示时将目标以外的图片都不显示. var li_index = $(this).index(); $('#theSecond img:eq(' + li_index + ')').css({ display: 'inline-block' }).siblings().css({ display: 'none' }); }); }); </script>
来源:https://www.cnblogs.com/leon9dragon/p/12331248.html