#javascript #html #css
#javascript #HTML #css
Вопрос:
У меня есть пользовательский элемент слайдера. Я хочу отобразить много элементов слайдера на одной странице, но проблема в том, что динамический стиль CSS нацелен на общие имена атрибутов, поэтому, если у меня есть два элемента #sliderA
и #sliderB
, изменения, которые должны произойти #sliderB
, произойдут sliderA
вместо этого.
Я полагаю, мне требуется JavaScript для таргетинга на data-freq
атрибут соответствующего элемента слайдера.
https://codepen.io/ryanvb92/pen/poNLQEO
Как вы можете догадаться, я работаю с чужим пером. Вот оригинальное перо.
Комментарии:
1. вы пробовали уникальный идентификатор для каждого слайдера и использовали css на основе идентификатора слайдера
2. Но я хочу одинаковую функциональность для каждого
.custom-slider
. Разве использование CSS не потребовало бы от меня постоянного обновления файла CSS каждый раз, когда я добавляю новый экземпляр элемента, или я что-то упускаю?3. Ваш вопрос сбивает с толку. В вопросе вы говорите, что хотите иметь
#sliderA
и#sliderB
отличаться, но ваше перо не включает эти идентификаторы. Также в комментарии вы хотите, чтобы они были одинаковыми? Что это другое или то же самое?4. Кстати, идентификатор
form-title
дублируется.
Ответ №1:
Css довольно прост
input {
amp;:checked {
label::after {
border-width: 4px;
transform: translate(-50%, -50%) scale(0.75);
}
....
Приведенное выше правило используется для оформления проверяемого ввода и работает должным образом. Единственная проблема заключается в том, что вы предоставляете одинаковое id
для нескольких input
тегов.
<input type="radio" name="smokingFreq" id="1" value="1" required>
<input type="radio" name="drinkingFreq" id="1" value="1" required>
Обратите внимание, как входные элементы используют один и тот же идентификатор в разных ползунках. Дублирование идентификаторов строго избегается, поскольку браузер ожидает, что они будут уникальными во всем документе.
Просто используйте уникальные идентификаторы для всех входных данных. Что-то вроде этого должно решить вашу проблему.
<input type="radio" name="smokingFreq" id="smokingFreq-1" value="1" required>
<input type="radio" name="drinkingFreq" id="drinkingFreq-1" value="1" required>
Комментарии:
1. Да, моя неосторожная ошибка. Однако проблема все еще не решена, поскольку CSS, похоже, зависит от целочисленного идентификатора.
2. в правиле css такой зависимости нет. Когда вы обновляете имя вашего ввода, вам также необходимо будет обновить
for
поле соответствующей метки. Тогда это должно сработать.3. Глупый я. Забыл обновить
for
. Спасибо, теперь все работает нормально!