Как изменить display в div при radio: checked (без JS!)?
https://jsfiddle.net/r0v7fkL6/16/
<div class="products">
<div class="bar_radios">
<input type="radio" name="bar" id="bar1">
<input type="radio" name="bar" id="bar2">
</div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
</div>
.prod { display: inline-block; width: 100px; height: 100px; background-color: #000; margin: 20px; }
input#bar1:checked~.prod { display: block; }
input#bar2:checked~.prod { display: inline-block; }
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Расположите радиокнопки вне обёртки .bar_radios. Каскадные таблицы стилей потому и называются каскадными, что идут в одном направлении по нисходящей. Радиокнопки и нужные Вам блоки должны иметь одного общего родителя.
.prod {
display: inline-block;
width: 100px;
height: 100px;
background-color: #000;
margin: 20px;
}
input#bar1:checked~.prod {
display: block;
}
input#bar2:checked~.prod {
display: inline-block;
}
<div class="products">
<input type="radio" name="bar" id="bar1">
<input type="radio" name="bar" id="bar2">
<div class="bar_radios"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
<div class="prod"></div>
</div>