Мне интересно, возможно ли изменить высоту правил с использованием jquery/javascript.
Это мой код:
CSS
.ac-container input:checked ~ article.prorate{
height: 450px;
}
.prorateTax {
display: none;
background: #CEF6CE;
}
JQuery
<script type="text/javascript">
$('.checkTax').change(function () {
if ($(this).attr("checked")) {
$('.prorateTax').fadeIn();
$('.ac-container input:checked ~ article.prorate').css("height", "+=47px");
} else {
$('.prorateTax').fadeOut();
$('.ac-container input:checked ~ article.prorate').css("height", "-=47px");
}
});
</script>
У меня есть флажок, который вы можете выбрать, который исчезнет в скрытом div, а затем увеличит высоту другого div, чтобы он соответствовал новому разделу. Я надеялся, что он просто изменит высоту css-совпадения, представленную в css. Однако вместо этого он устанавливает element.style текущего div для установки высоты. можно ли просто изменить согласованное правило CSS?
css()
работает только над встроенными стилями:
При использовании.css() в качестве сеттера, jQuery изменяет свойство стиля элемента.
Есть два проблемы с вашим кодом, AFAICS.
$(this).prop("checked")
вместо attr()
else
вы должны либо использовать input:not(:checked)
селектора input:not(:checked)
либо опустить :checked
all$('.checkTax').change(function () {
if ($(this).prop('checked')) {
$('.prorateTax').fadeIn();
$('.ac-container input:checked ~ article.prorate').css("height", "+=47px");
} else {
$('.prorateTax').fadeOut();
$('.ac-container input:not(:checked) ~ article.prorate').css("height", "-=47px");
}
});
$(this).is(":checked")
, как в этом примере
Нет, вы не можете перезаписать правило CSS, насколько я знаю.
.css() записывает только в атрибут стиля элемента, который имеет самую высокую специфичность.
Альтернативой было бы добавить второй класс с более высокой специфичностью, но вы все равно будете делать то же самое. Основное преимущество этого подхода заключается в том, что вы удаляете css-материал из javascript, что делает его ненавязчивым.
CSS
.ac-container input:checked ~ article.prorate{
height: 450px;
}
.ac-container input:checked ~ article.prorate.fadein{
height: 497px;
}
.prorateTax {
display: none;
background: #CEF6CE;
}
JQuery
$('.checkTax').change(function () {
if ($(this).is(":checked")) {
$('.prorateTax').fadeIn();
$('.ac-container input:checked ~ article.prorate').addClass("fadein");
} else {
$('.prorateTax').fadeOut();
$('.ac-container input:checked ~ article.prorate').removeClass("fadein");
}
});