Zastanawiam się, dlaczego podczas korzystania z funkcji .css()
nadpisuje ona pseudoklasę w CSS, jak na przykład :hover
. Czy nie powinno to wpływać tylko na normalny stan elementu, a nie na :hover
? czy robię coś niepoprawnie?
Oto przykład
<!DOCTYPE html>
<html>
<head>
<style>
#test {
background : red;
width: 50px;
height: 50px;
opacity : 0.2;
}
#test:hover {
opacity:1.0;
}
</style>
<script type="text/javascript" src="../jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(function () {
$('#test').css('opacity', '0.5');
});
</script>
</head>
<body>
<div id="test"></div>
</body>
</html>
Kiedy strona się ładuje, otrzymuję div z tylko opacity = 0.5
, zarówno dla normalnego, jak i :hover
. Czy nie powinno to być 0.5
dla normalnego i 1.0
dla :hover
?
Moje pytanie brzmi, jak temu zapobiec?
2 odpowiedzi
.css()
stosuje style inline do wybranych elementów i zgodnie z zasadami kaskadowego stylów style inline mają wyższy priorytet niż style w arkuszu stylów .
Możesz uczynić klasę w arkuszu stylów ważniejszą niż styl wbudowany w następujący sposób:
#test:hover {
opacity:1.0 !important;
}
Najlepszym sposobem na zrobienie tego, co próbujesz zrobić, jest NIE ustawianie wartości przezroczystości, ale zamiast tego użyj addClass(), removeClass() lub toggleClass(), aby wprowadzić jakiekolwiek zmiany.
Podobne pytania
Nowe pytania
jquery
jQuery to biblioteka JavaScript, rozważ także dodanie tagu JavaScript. jQuery to popularna biblioteka JavaScript działająca w różnych przeglądarkach, która ułatwia przechodzenie przez Document Object Model (DOM), obsługę zdarzeń, animacje i interakcje AJAX, minimalizując rozbieżności między przeglądarkami. Pytanie oznaczone tagiem jQuery powinno być powiązane z jQuery, więc jQuery powinno być używane przez dany kod i przynajmniej elementy związane z użyciem jQuery muszą znajdować się w pytaniu.