效果分析之HTN结构以及css样式
整个结构由上至下分为两部分,标题块使用列表的方式来做,内容快使用盒子模型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none
}
.box {
width: 600px;
border: 1px dashed red;
margin: 0 auto;
}
ul {
width: 100%;
height: 50px;
display: flex;
/* 弹性盒子 */
}
ul li {
flex: 1;
text-align: center;
line-height: 50px; color:#333;
font-size: 25px;
}
ul li:hover {
background-color: blueviolet
}
ul li.current {
/* ul 下的li 有current类名的li */
background: pink
}
.body_box {
width: 100%;
height: 200px;
}
.body_box div {
text-align: center;
line-height: 200px;
font-size: 50px;
background-color: rgba(43, 221, 168, .5);
display: none;
}
.body_box div.current {
display: block;
}
</style>
</head>
<body>
<div class="box">
<ul class="tab_box">
<li class="current">css</li>
<li>html</li>
<li>js</li>
</ul>
<div class="body_box">
<div class="current">薛之谦</div>
<div>周杰伦</div>
<div>权志龙(GD)</div>
</div>
</div>
</body>
</html>
交互效果之JavaScript
<script>
var tabs = document.getElementsTagName('li'),
bodys = document.querySelectorAll('.body_box div');
for(var i = 0;i < tabs.length;i++){
tabs[i].myIndex = i;
tabs[i].onclick = function(){
//点击那个元素就有背景颜色 给点击的元素加上current的类名即可
for(var j = 0; j < tabs.length; j++){
tabs[j].className = '';
bodys[j].className = '';
}
this.className = 'current'
//实现效果点击第几个li 就让第几个box显示
//通过this.myIndex 知道当前点击元素的索引
//bodys[this.myIndex]是当前的div的第几行
bodys[this.myIndex].className = 'current'
}
}
</script>