#html #css
Вопрос:
.container {
width: 400px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
font-size: 0;
box-shadow: 0 0 100px RGBa(0,0,0,0.5);
border-radius: 3px;
overflow: hidden;
input {
display: none;
amp;:checked label {
background: #eee;
}
@for $i from 1 through 4 {
amp;#tab#{$i}:checked {
~ .line {
left: #{($i - 1) * 25%};
}
~ .content-container #c#{$i} {
opacity: 1;
}
}
}
}
label {
display: inline-block;
font-size: 16px;
height: 36px;
line-height: 36px;
width: 25%;
text-align: center;
background: #f4f4f4;
color: #555;
position: relative;
transition: 0.25s background ease;
cursor: pointer;
amp;::after {
content: "";
height: 2px;
width: 100%;
position: absolute;
display: block;
background: #ccc;
bottom: 0;
opacity: 0;
left: 0;
transition: 0.25s ease;
}
amp;:hover::after {
opacity: 1;
}
}
.line {
position: absolute;
height: 2px;
background: #1E88E5;
width: 25%;
top: 34px;
left: 0;
transition: 0.25s ease;
}
}
<div class="container">
<input type="radio" id="tab1" name="tab" checked>
<label for="tab1"> Features</label>
<input type="radio" id="tab2" name="tab">
<label for="tab2"> History</label>
<input type="radio" id="tab3" name="tab">
<label for="tab3">Reviews</label>
<input type="radio" id="tab4" name="tab">
<label for="tab4"> Share</label>
<input type="radio" id="tab5" name="tab">
<label for="tab5"> Share</label>
<input type="radio" id="tab6" name="tab">
<label for="tab6"> Share</label>
<input type="radio" id="tab7" name="tab">
<label for="tab7"> Share</label>
<div class="line"></div>
</div>
Я работаю над вкладками с помощью css. Из 7 вкладок я могу выбрать только 4 вкладки, а оставшиеся 3 вкладки отображаются в следующей строке, и даже не удается выбрать, а радиус границы также не применяется.
Хотите выровнять все 7 вкладок в одну линию и применить цвет нижней границы для всех 7 вкладок.
Это мой кодовый ключ https://codepen.io/santoshch/pen/QWpLZYd
Ответ №1:
Вы установили фиксированную ширину контейнера, чтобы метка не была футами этой ширины, чтобы они опускались в следующей строке.
- Чтобы исправить это, вам нужно увеличить ширину контейнера и установить ширину этикетки
- Работают только 4 вкладки, потому что ваш цикл for зацикливается только 4 раза, вам нужно установить 7 раз
Вот работает скрипка
.container {
width: 500px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 0;
box-shadow: 0 0 100px RGBa(0, 0, 0, 0.5);
border-radius: 3px;
overflow: hidden;
}
.container input {
display: none;
}
.container input:checked label {
background: #eee;
}
.container input#tab1:checked ~ .line {
left: 0%;
}
.container input#tab1:checked ~ .content-container #c1 {
opacity: 1;
}
.container input#tab2:checked ~ .line {
left: 14.28%;
}
.container input#tab2:checked ~ .content-container #c2 {
opacity: 1;
}
.container input#tab3:checked ~ .line {
left: 28.56%;
}
.container input#tab3:checked ~ .content-container #c3 {
opacity: 1;
}
.container input#tab4:checked ~ .line {
left: 42.84%;
}
.container input#tab4:checked ~ .content-container #c4 {
opacity: 1;
}
.container input#tab5:checked ~ .line {
left: 57.12%;
}
.container input#tab5:checked ~ .content-container #c5 {
opacity: 1;
}
.container input#tab6:checked ~ .line {
left: 71.4%;
}
.container input#tab6:checked ~ .content-container #c6 {
opacity: 1;
}
.container input#tab7:checked ~ .line {
left: 85.68%;
}
.container input#tab7:checked ~ .content-container #c7 {
opacity: 1;
}
.container label {
display: inline-block;
font-size: 16px;
height: 36px;
line-height: 36px;
width: 10.28%;
text-align: center;
background: #f4f4f4;
color: #555;
position: relative;
transition: 0.25s background ease;
cursor: pointer;
padding: 0 10px;
}
.container label::after {
content: "";
height: 2px;
width: 100%;
position: absolute;
display: block;
background: #ccc;
bottom: 0;
opacity: 0;
left: 0;
transition: 0.25s ease;
}
.container label:hover::after {
opacity: 1;
}
.container .line {
position: absolute;
height: 2px;
background: #1e88e5;
width: 14.28%;
top: 34px;
left: 0;
transition: 0.25s ease;
}
<div class="container">
<input type="radio" id="tab1" name="tab" checked>
<label for="tab1"> Features</label>
<input type="radio" id="tab2" name="tab">
<label for="tab2"> History</label>
<input type="radio" id="tab3" name="tab">
<label for="tab3">Reviews</label>
<input type="radio" id="tab4" name="tab">
<label for="tab4"> Share</label>
<input type="radio" id="tab5" name="tab">
<label for="tab5"> Share</label>
<input type="radio" id="tab6" name="tab">
<label for="tab6"> Share</label>
<input type="radio" id="tab7" name="tab">
<label for="tab7"> Share</label>
<div class="line"></div>
</div>