Некоторый фон
Я отображаю формы в своем приложении и заключаю каждое поле (или связанный с ними набор) в элемент UL/LI
.Это пример:
<ul class="form">
<li class="required">
<label for="...">Field label</label>
<div class="field">
<input type="text" ... />
</div>
</li>
...
</ul>
Как видите, я установил класс required
для элемента LI
обязательного поля, поэтому, когда отображается их label
, я определяю псевдоэлемент ::after
,после него добавляется красная звездочка:
ul.form li.required label::after
{
content: " *";
font-weight: bold;
color: #f66;
}
Проблема
Проблема, с которой я сталкиваюсь, заключается в том, что в моем контейнере <div class="field">
есть список флажков или переключателей.Чтобы ярлыки рядом с переключателями или флажками можно было нажимать, они должны содержаться в label
.
<ul class="form">
<li class="required">
<label for="...">Radio button set</label>
<div class="field">
<input type="radio" name="RBSet" value="1" id="RBSet1" /><label for="RBSet1">First</label><br/>
<input type="radio" name="RBSet" value="2" id="RBSet2" /><label for="RBSet2">Second</label><br/>
<input type="radio" name="RBSet" value="3" id="RBSet3" /><label for="RBSet3">Third</label><br/>
...
</div>
</li>
...
</ul>
. Проблема, конечно, в том, что каждый ярлык рядом с переключателем отображает звездочку, поскольку он также находится внутриli.required
element.
Вопрос
Как удалить ::after
псевдоэлемент из всех label
элементов, которые содержатся в div.field
?Должен ли я на самом деле определить его, но установить для его содержимого пустую строку или можно удалить все это вместе?
Я мог бы изменить определение стиля для ::after
на
ul.form li.required > label::after
{
content: " *";
font-weight: bold;
color: #f66;
}
но я хочу избежать этих специальных селекторов CSS по причинам совместимости.