效果展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://kit.fontawesome.com/a076d05399.js"></script>
<style>
.wrapper{
margin: 0 auto;
height: 60px;
width: 55vw;
background: #fff;
box-shadow: 0 5px 10px rgba(0,0,0,0.25);
line-height: 60px;
text-align: center;
border-radius: 50px;
}
.wrapper nav{
display: flex;
position: relative;
}
.wrapper nav label{
flex: 1;
width: 100%;
/*label 标签在.tab之上*/
z-index: 1;
position: relative;
/* 该属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状*/
cursor: pointer;
}
.wrapper nav label a{
/*
问题:点击选项文字时.tab背景不会滑动,而点击label其它区域会滑动
原因分析:原本点击label中的任何部分都相对于选中了按钮,但是此处文字被a标签包裹,变成链接,就无法实现效果
解决1:加上z-index: -1;让a标签在label之下可以解决,但是此时会让a标签的链接点击失效(无法跳转)
解决2:既然会产生以上问题,那么可以直接不用a标签
*/
z-index: -1;
position: relative;
color: #1d1f20;
font-weight: 100;
font-size: 20px;
transition: color 0.6s ease;
}
.wrapper nav input{
display: none;
}
.wrapper nav #home:checked~label.home a{
color: #fff;
}
.wrapper nav #inbox:checked~label.inbox a{
color: #fff;
}
.wrapper nav #contact:checked~label.contact a{
color: #fff;
}
.wrapper nav #heart:checked~label.heart a{
color: #fff;
}
.wrapper nav #about:checked~label.about a{
color: #fff;
}
.wrapper nav #inbox:checked~.tab{
left: 20%;
}
.wrapper nav #contact:checked~.tab{
left: 40%;
}
.wrapper nav #heart:checked~.tab{
left: 60%;
}
.wrapper nav #about:checked~.tab{
left: 80%;
}
.tab{
position: absolute;
width: 20%;
height: 100%;
background: linear-gradient(45deg,#05abe0 0%,#8200f4 100%);
left: 0;
bottom: 0;
border-radius: 50px;
/*自定义曲线运动速率*/
transition: 0.6s cubic-bezier(0.68,-0.55,0.625,1.55);
}
</style>
</head>
<body>
<div class="wrapper">
<nav>
<!--当某个input选中后,就将tab移动至某一选项-->
<input type="radio"name="tab"id="home"checked>
<input type="radio"name="tab"id="inbox">
<input type="radio"name="tab"id="contact">
<input type="radio"name="tab"id="heart">
<input type="radio"name="tab"id="about">
<!-- 加入for属性,将label与input绑定,点击label内容相对于选中了对应的input-->
<label for="home"class="home"><a href="#"><i class="fas fa-home">Home</i></a></label>
<label for="inbox"class="inbox"><a href="#"><i class="fas fa-comment">Inbox</i></a></label>
<label for="contact"class="contact"><a href="#"><i class="fas fa-envelope">contact</i></a></label>
<label for="heart"class="heart"><a href="#"><i class="fas fa-heart">heart</i></a></label>
<label for="about"class="about"><a href="#"><i class="fas fa-user">About</i></a></label>
<!--滑动盒子-->
<div class="tab"></div>
</nav>
</div>
</body>
</html>