横向手风琴轮播图(jquery)
以下是代码:鼠标移入展开
jQuery引入的是本公司的jquery.js、、这个可以自己下载
第一个是确定到底有几个可展开样式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } ul { list-style: none; width: 1300px; display: flex; align-items: center; flex-wrap: nowrap; } #box { width: 1200px; height: 400px; margin: 100px auto; overflow: hidden; } #box ul { width: 100%; } #box li { height: 400px; overflow: hidden; border: 5px solid #fff; box-sizing: border-box; } #box li:first-child { width: 800px; border-left: none; } #box li:last-child { border-right: none; } #box li div { width: 800px; height: 400px; background-size: cover; background-image: url('https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F3%2F57f86b0c604e9.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1650961821&t=0e97659b3d21ffb811dc4087d7a57648') !important; } /* li 标签的背景图,需要使用 js 代码动态添加 */ </style> </head> <body> <div id="box"> <ul> <li> <div> <div></div> </div> </li> <li> <div></div> </li> <li> <div></div> </li> <li> <div></div> </li> <li> <div></div> </li> </ul> </div> <script src="https://pubunder.artron.net/library/js/jquery-1.12.4.min.js"></script> <script> // 获取所有的 li 标签 var $lis = $("#box ul li"); // 模拟后台提供的图片数据 var arr = ["fq1.jpg", "fq2.jpg", "fq3.jpg", "fq4.jpg", "fq5.jpg"]; // 记录文件路径 var path = "img/"; var during = 1000; var widtheach = (1200 - 800) / ($lis.length - 1) console.log(widtheach); // 给每一个 li 去添加背景图 // 遍历方法 $lis.each(function (i) { if (i == 2) { $(this).css('width', 800) } else { $(this).css('width', widtheach) } // 存储路径 var url = "url(" + path + arr[i] + ")"; // this 指的是遍历的这一次的 li 元素 $(this).css("background-image", url); }) // 给每个 li 标签添加鼠标进入事件,让自己的宽度变为 800,让其他的兄弟变为 100 $lis.mouseenter(function () { $(this).stop(true).animate({ "width": 800 }, during) .siblings().stop(true).animate({ "width": widtheach }, during) }) // 给最外层的大盒子添加鼠标离开事件,让所有的 li 恢复默认宽度 // $("#box").mouseleave(function () { // $lis.stop(true).animate({ // "width": 240 // }, during) // }) </script> </body> </html>
在不确定有几个的情况下 写的活的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } ul { list-style: none; width: 1300px; display: flex; align-items: center; flex-wrap: nowrap; } #box { width: 1400px; height: 400px; margin: 100px auto; overflow: hidden; } #box ul { width: 100%; } #box li { height: 400px; overflow: hidden; margin-right: 5px; max-width: 800px; } #box li:first-child { width: 800px; border-left: none; } #box li:last-child { border-right: none; margin-right: 0px; } #box li div { width: 800px; height: 400px; background-size: cover; background-image: url('https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F3%2F57f86b0c604e9.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1650961821&t=0e97659b3d21ffb811dc4087d7a57648') !important; } /* li 标签的背景图,需要使用 js 代码动态添加 */ </style> </head> <body> <div id="box"> <ul> <li> <div></div> </li> <li> <div></div> </li> <li> <div></div> </li> <li> <div></div> </li> <li> <div></div> </li> </ul> </div> <script src="https://pubunder.artron.net/library/js/jquery-1.12.4.min.js"></script> <script> // 获取所有的 li 标签 var $lis = $("#box ul li"); // 模拟后台提供的图片数据 var arr = ["fq1.jpg", "fq2.jpg", "fq3.jpg", "fq4.jpg", "fq5.jpg"]; // 记录文件路径 var path = "img/"; var during = 1000; var widd = $lis.length - 1 var widtheach = (1400 - 800 - widd * 5) / widd var widtheachnobig = (1400 - widd * 5) / $lis.length console.log(widtheach); // 给每一个 li 去添加背景图 // 遍历方法 $lis.each(function (i) { if (i == 3) { $(this).css('width', 800) } else { $(this).css('width', widtheach + 'px') } // // 存储路径 // var url = "url(" + path + arr[i] + ")"; // // this 指的是遍历的这一次的 li 元素 // $(this).css("background-image", url); }) // 给每个 li 标签添加鼠标进入事件,让自己的宽度变为 800,让其他的兄弟变为 100 $lis.mouseenter(function () { $(this).stop(true).animate({ "width": 800 }, during).siblings().stop(true).animate({ "width": widtheach + 'px' }, during) }) // 给最外层的大盒子添加鼠标离开事件,让所有的 li 恢复默认宽度 $("#box").mouseleave(function () { $lis.stop(true).animate({ "width": widtheachnobig + 'px' }, during) }) </script> </body> </html>