选项卡的效果主要是自定义索引值的对应关系,只不过嵌套类的选项卡还要注意索引值的传递。
原生JavaScript完成。
1、先完成一个左右选项卡的切换。
2、封装成函数。
3、完成右边选项卡的切换,并把对应的索引值传递到函数内部,从而从数据对象中获取对应的数据。
提示:代码进行了更新,但是下载的内容和效果没有更新,可以用页面上的代码代替案例里面的代码。更新代码增加了左右轮滑的效果。
具体效果点击查看。
一、html代码
<div id="wrap"> <ul class="tab"> </ul> <div class="content"> <div class="tab-content"> <ul class="pics"> </ul> <ul class="tablist"> </ul> </div> </div> </div> </div>
二、css代码
<style> * { box-sizing: border-box; } body, ul { margin: 0; padding: 0; } body { font: 1em "microsoft Yahei"; color: #333; background: #eee; } li { list-style: none; } a { color: #333; text-decoration: none; } img { border: none; vertical-align: middle; } #wrap { width: 1050px; height: 500px; /* overflow:hidden; */ margin: 20px auto; } .tab { float: left; width: 158px; height: 500px; } .tab li { text-align: center; line-height: 125px; background: #e1e1e1; border-bottom: 1px solid #ccc; } .tab li:last-child { border-bottom: none; } .tab li.active { background: #fff; } .content { width: 892px; float: right; } .tab-content { position: relative; overflow: hidden; height: 500px; } .pics { position: absolute; height: 500px; transition: 0.2s; } .pics li { float: left; } .tablist { position: absolute; left: 0; bottom: 0; width: 100%; } .tablist li { float: left; text-align: center; padding: 10px 20px; background: rgba(0, 0, 0, 0.3); border-right: 1px solid #fff; } .tablist li.active { background: rgba(243, 65, 140, .7); } .tablist li:last-child { border-right: none; } .tablist li a { color: #fff; } </style>
三、js代码
<script> var oTabUl = document.querySelector(".tab"); var oTabLi = oTabUl.getElementsByTagName("li"); var oPicUl = document.querySelector(".pics"); var oPicLi = oPicUl.getElementsByTagName("li"); var oTitleUl = document.querySelector(".tablist"); var oTitleLi = oTitleUl.getElementsByTagName("li"); var oldTitle = null; var oldTab = null; var data = [{ 'cata': "最热团购", 'url': ["images/1/1.jpg", "images/1/2.jpg", "images/1/3.jpg", "images/1/4.jpg", "images/1/5.jpg"], 'title': ["天猫.家年华", "进口家居馆", "厨卫狂欢节", "装修.必buy", "装修大额神券"] }, { 'cata': "商城活动", 'url': ["images/2/1.jpg", "images/2/2.jpg", "images/2/3.jpg", "images/2/4.jpg"], 'title': ["罗西尼手表特惠", "德式美学设计", "荣耀畅玩7C", "华为nova 2s"] }, { 'cata': "名品推荐", 'url': ["images/3/1.jpg", "images/3/2.jpg", "images/3/3.jpg"], 'title': ["比亚迪宠爱礼", "OPPO 新品驾到", "莱克无线吸尘器"] }, { 'cata': "缤纷活动", 'url': ["images/4/1.jpg", "images/4/2.jpg", "images/4/3.jpg"], 'title': ["护肤聚划算", "防晒无惧阳光", "罗莱儿童家纺"] } ] // 初始化结构 data.forEach(function (item) { oTabUl.innerHTML += "<li><a href='javascript:;'>" + item.cata + "</a></li>" }) // 初始化高亮 var num = 0; oTabLi[num].classList.add("active"); oldTab = oTabLi[num]; // 初始化右边 tab(num); // 鼠标经过切换 Array.from(oTabLi).forEach(function (item, index) { item.onmouseover = function () { // 清空以前的数据 oTitleUl.innerHTML = ""; oPicUl.innerHTML = ""; oldTab.classList.remove("active"); item.classList.add("active"); oldTab = item; tab(index); } }) function tab(num) { // 右边的结构 var url = data[num].url; var title = data[num].title; var len = url.length; var titlelen = title.length; // console.log(url); url.forEach(function (item) { oPicUl.innerHTML += "<li><a href='#'><img src=" + item + "></a></li>"; }) oPicUl.style.width = 892 * len + "px"; oPicUl.style.transform = "translateX(-0px)"; title.forEach(function (item, index) { oTitleUl.innerHTML += "<li><a href='javascript:;'>" + item + "</a></li>"; oTitleLi[index].style.width = 100 / titlelen.toFixed(2) + "%"; }) oTitleLi[0].classList.add("active"); oldTitle = oTitleLi[0]; // 鼠标经过切换 Array.from(oTitleLi).forEach(function (item, index) { item.onmouseover = function () { oldTitle.classList.remove("active"); item.classList.add("active"); oldTitle = item; oPicUl.style.transform = "translateX(-" + 892 * index + "px)" } }) } </script>
案例源代码下载地址:
链接: https://pan.baidu.com/s/1tCgqPZq8YSEO29H0bLu6Tg 提取码: g5c2
提示:代码进行了更新,但是下载的内容没有更新,可以用页面上的代码代替案例里面的代码。更新代码增加了左右轮滑的效果。
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。