console
<div class="body">
<div class="nav">
<input checked type="radio" name="tab" data-emo="☁" data-tab="多云" class="tab tab1">
<input type="radio" name="tab" data-emo="☂""" data-tab="有雨"" class="tab tab2">
<input type="radio" name="tab" data-emo="❉" data-tab="下雪" class="tab tab3">
<input type="radio" name="tab" data-emo="☀" data-tab="晴天"" class="tab tab4">
<div class="content-box">
<div class="content content1">多云1</div>
<div class="content content2">有雨2</div>
<div class="content content3">下雪3</div>
<div class="content content4">晴天4</div>
</div>
<div class="ball"></div>
</div>
</div>
:root{
--color: skyblue;
}
.body{
position: relative;
width: 360px;
height: 540px;
margin: 0 auto;
border: 1px solid sandybrown;
background: var(--color)
}
.nav{
display: flex;
justify-content: center;
position: absolute;
top: 120px;
width: 360px;
height: 48px;
padding: 4px 0 0px 0;
background: white;
border-radius: 4px;
}
.tab{
position: relative;
z-index: 2;
top: -10px;
width: 25%;
margin: 0;
appearance: none;
text-align: center;
overflow: hidden
}
.tab::before{
content: attr(data-emo);
display: block;
transition: all .5s;
transform: translateY(20px);
font-size: 16px;
}
.tab::after{
content: attr(data-tab);
display: block;
padding-bottom: 4px;
transition: transform 1s, color .3s;
transform: translateY(40px);
color: whitesmoke;
}
.tab:checked::after{
transition: transform .3s,color 1s;
transform: translateY(8px);
color: black;
font-weight: 900;
}
.tab:checked::before{
transform: translateY(-4px);
}
.ball{
box-sizing: border-box;
position: absolute;
left: 0;
top: -20px;
width: 42px;
height: 42px;
border-radius: 50%;
background: linear-gradient(rgb(238, 128, 38), rgb(186, 248, 105));
border: 4px solid var(--color);
transition: all .3s;
}
.ball::before,
.ball::after{
content: '';
position: absolute;
top: calc(50% - 1px);
width: 20px;
height:20px;
background: white;
box-shadow: 0 -10px 0 0 var(--color);
}
.ball::before{
left: -23px;
border-top-right-radius: 10px;
}
.ball::after{
right: -23px;
border-top-left-radius: 10px;
}
.tab:checked::before{
color: white;
}
.tab1:checked~.ball{
left: calc( 12.5% - 21px );
}
.tab2:checked~.ball{
left: calc( 37.5% - 21px );
}
.tab3:checked~.ball{
left: calc( 62.5% - 21px );
}
.tab4:checked~.ball{
left: calc( 87.5% - 21px );
}
.content-box{
position: fixed;
top: 0;
height: 100px;
width: 360px;
padding: 20px;
margin: 0 auto;
}
.content{
display: none;
}
.tab1:checked~.content-box>.content1{
display: block;
}
.tab2:checked~.content-box>.content2{
display: block;
}
.tab3:checked~.content-box>.content3{
display: block;
}
.tab4:checked~.content-box>.content4{
display: block;
}