如何使用线性渐变实现两个选项卡
How to implement two tabs using linear-gradient
有两个tabs,每个tabs的background-color都是线性的,并且都有border-radius。它们如下所示:
每个标签的背景是
linear-gradient(to right, #FF7243, #FF563E);
代码是这样的:
.tab-container {
width: 200px;
display: flex;
height: 40px;
}
.tab-item {
flex: 1;
background: linear-gradient(to right, #FF7243, #FF563E);
border-top-right-radius: 10px;
border-top-left-radius: 10px
}
<div class="tab-container">
<div class="tab-item"></div>
<div class="tab-item"></div>
</div>
由于border-radius的原因,两个tab之间会有空白,那么如何让空白部分的背景颜色随着tab的切换而变化呢?
使两个选项卡重叠,如下所示。您也可以在不需要时删除半径。
.tab-container {
width: 200px;
display: flex;
height: 40px;
margin:10px;
}
.tab-item {
flex: 1;
background: linear-gradient(to right, #FF7243, #FF563E);
border-top-right-radius: 10px;
border-top-left-radius: 10px;
}
.tab-item:first-child {
margin-right:-10px;
}
.active {
z-index:1; /*active always on the top*/
background: linear-gradient(to right, purple, blue);
}
/*when the first child is not active no need top-right radius*/
:not(.active):first-child {
border-top-right-radius: 0;
}
/*when the last child is not active no need top-left radius*/
:not(.active):last-child {
border-top-left-radius: 0;
}
<div class="tab-container">
<div class="tab-item active"></div>
<div class="tab-item"></div>
</div>
<div class="tab-container">
<div class="tab-item"></div>
<div class="tab-item active"></div>
</div>
.tab-container { width: 200px; display: flex; height: 40px; } .tab-item { flex: 1; background: linear-gradient(to right, #FF7243, #FF563E); border-top-right-radius: 10px; border-top-left-radius: 10px }
<div class="tab-container"> <div class="tab-item"></div> <div class="tab-item"></div>
有两个tabs,每个tabs的background-color都是线性的,并且都有border-radius。它们如下所示:
每个标签的背景是
linear-gradient(to right, #FF7243, #FF563E);
代码是这样的:
.tab-container {
width: 200px;
display: flex;
height: 40px;
}
.tab-item {
flex: 1;
background: linear-gradient(to right, #FF7243, #FF563E);
border-top-right-radius: 10px;
border-top-left-radius: 10px
}
<div class="tab-container">
<div class="tab-item"></div>
<div class="tab-item"></div>
</div>
由于border-radius的原因,两个tab之间会有空白,那么如何让空白部分的背景颜色随着tab的切换而变化呢?
使两个选项卡重叠,如下所示。您也可以在不需要时删除半径。
.tab-container {
width: 200px;
display: flex;
height: 40px;
margin:10px;
}
.tab-item {
flex: 1;
background: linear-gradient(to right, #FF7243, #FF563E);
border-top-right-radius: 10px;
border-top-left-radius: 10px;
}
.tab-item:first-child {
margin-right:-10px;
}
.active {
z-index:1; /*active always on the top*/
background: linear-gradient(to right, purple, blue);
}
/*when the first child is not active no need top-right radius*/
:not(.active):first-child {
border-top-right-radius: 0;
}
/*when the last child is not active no need top-left radius*/
:not(.active):last-child {
border-top-left-radius: 0;
}
<div class="tab-container">
<div class="tab-item active"></div>
<div class="tab-item"></div>
</div>
<div class="tab-container">
<div class="tab-item"></div>
<div class="tab-item active"></div>
</div>
.tab-container { width: 200px; display: flex; height: 40px; } .tab-item { flex: 1; background: linear-gradient(to right, #FF7243, #FF563E); border-top-right-radius: 10px; border-top-left-radius: 10px }
<div class="tab-container"> <div class="tab-item"></div> <div class="tab-item"></div>