js上课小案例,多个选项卡,有的是鼠标经过,有的是鼠标点击。利用函数传参实现代码复用。
具体效果点击查看
1、html代码
<div class="container tab0"> <div class="title"> <ul> <li><a href="#">收藏最多</a></li> <li><a href="#">热门话题</a></li> <li><a href="#">猜你喜欢</a></li> </ul> </div> <div class="content"> <ul> <li> <span>1</span><a href="#">我花了3天时间,为你整理了这份超全面的 B 站免费学设计指南</a> </li> <li><span>2</span><a href="#">为什么你的 PS 越用越快,但设计水平一直没有提升?</a></li> <li><span>3</span><a href="#">比阿里犸良还强大!Lottie 动效设计完全指南(基础篇)</a></li> <li><span>4</span><a href="#">标题文字如何处理更吸引人?来看设计高手的实用技巧!</a></li> <li><span>5</span><a href="#">为什么你的界面看着不舒服?腾讯设计师从这 3 个维度优化设计!</a></li> <li><span>6</span><a href="#">平面高手课堂!用一篇干货帮你彻底全面掌握「投影」知识点!</a></li> <li><span>7</span><a href="#">我花了3天时间,整理了这15个「特别好」的免费可商用图库!</a></li> <li><span>8</span><a href="#">提高求职成功率?这份大厂设计师出品的面试指南刚好用得上!</a></li> </ul> <ul> ... </ul> <ul> ... </ul> </div> </div> <div class="container tab1"> <div class="title"> <ul> <li><a href="#">收藏最多</a></li> <li><a href="#">热门话题</a></li> </ul> </div> <div class="content"> <ul> <li> <span>1</span><a href="#">我花了3天时间,为你整理了这份超全面的 B 站免费学设计指南</a> </li> <li><span>2</span><a href="#">为什么你的 PS 越用越快,但设计水平一直没有提升?</a></li> <li><span>3</span><a href="#">比阿里犸良还强大!Lottie 动效设计完全指南(基础篇)</a></li> <li><span>4</span><a href="#">标题文字如何处理更吸引人?来看设计高手的实用技巧!</a></li> <li><span>5</span><a href="#">为什么你的界面看着不舒服?腾讯设计师从这 3 个维度优化设计!</a></li> <li><span>6</span><a href="#">平面高手课堂!用一篇干货帮你彻底全面掌握「投影」知识点!</a></li> <li><span>7</span><a href="#">我花了3天时间,整理了这15个「特别好」的免费可商用图库!</a></li> <li><span>8</span><a href="#">提高求职成功率?这份大厂设计师出品的面试指南刚好用得上!</a></li> </ul> <ul> ... </ul> </div> </div>
2、css代码
* {
box-sizing: border-box;
}
body,
ul,
li {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
a {
color: #8a8a8a;
text-decoration: none;
}
a:hover {
color: #333;
}
.hidden {
display: none;
}
.container {
width: 270px;
margin: 20px;
float: left;
}
.title {
margin-bottom: 12px;
}
.title ul {
display: flex;
}
.title li {
flex-basis: 33.33%;
background-color: #f2f2f2;
padding: 10px 13px;
font-size: 0.875rem;
text-align: center;
}
.title li.active {
background-color: #fe4800;
}
.title li.active a {
color: #fff;
}
.content li {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
font-size: 0.875rem;
}
.content span {
background-color: #c8c7c7;
border-radius: 3px;
color: #fff;
font-size: 0.75rem;
padding: 1px 6px;
text-align: center;
margin-right: 5px;
}
.content a {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.content li:nth-child(-n+3) span {
background-color: #fe4800;
color: #fff;
}
.content i {
font-style: normal;
font-size: 0.75rem;
color: #d3d3d3;
padding-left: 5px;
}3、js代码
<script>
var oTab = document.querySelectorAll("[class*=tab]");
// console.log(oTab)
tab(oTab[0],"onclick");
tab(oTab[1],"onmouseover");
function tab(obj,evt) {
var oLi = obj.querySelectorAll(".title li");
var oUl = obj.querySelectorAll(".content ul");
// console.log(oUl);
//初始化
var num = 0;
var oldLi = null;
oLi[num].classList.add("active");
oldLi = oLi[num];
oUl.forEach(function (item, index) {
if (!(num == index)) {
item.classList.add("hidden");
// console.log(index);
}
})
oLi.forEach(function (item, index) {
item[evt] = function () {
/* oLi.forEach(function (item) {
item.classList.remove("active");
}) */
oldLi.classList.remove("active");
this.classList.add("active");
oldLi = this;
// 先把所有ul隐藏
oUl.forEach(function (item) {
item.classList.add("hidden");
})
// 再把鼠标经过的那个li对应的ul显示
oUl[index].classList.remove("hidden");
}
})
}
</script>
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。