#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Я работаю над каким-то небольшим веб-проектом
- Я использую javascript для изменения цвета — это выглядит нормально
- Я использую CSS для изменения цвета при наведении курсора мыши (
:hover
) — это тоже нормально
но когда я собираю его вместе, похоже, что работает только javascript
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("p").css("color", "red");
});
});
</script>
<style>
#text:hover {
color: blue;
}
</style>
</head>
<body>
<button>Set the color property of all p elements</button>
<p id="text">This is a paragraph.</p>
<p id="text">This is another paragraph.</p>
</body>
</html>
Комментарии:
1. вам следует узнать больше о «каскаде» и «Специфичности» в CSS
2. вы используете один и тот же идентификатор два раза на html-странице.
Ответ №1:
Это потому, что встроенные стили имеют больший приоритет над стилем через класс. Когда вы добавляете стиль с помощью JQuery
using .css()
, стиль применяется как встроенный стиль. Это имеет больший приоритет по сравнению с применением через класс. Просто проверьте, и вы это увидите.
Что вам нужно сделать, так это
$("button").click(function(){
$("p").addClass('custom-class');
});
и записывайте стили как
.custom-class{
color:red;
}
Я протестировал это и работает.
.custom-class {
color: red;
}
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$("p").addClass('custom-class');
});
});
</script>
<style>
#text:hover {
color: blue;
}
</style>
</head>
<body>
<button>Set the color property of all p elements</button>
<p id="text">This is a paragraph.</p>
<p id="text">This is another paragraph.</p>
</body>
</html>
Ответ №2:
Поскольку JS-код добавит встроенный стиль, который имеет более высокий приоритет, чем CSS, который будет переопределен, вы можете вместо этого использовать классы, такие как :
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("button").click(function() {
$("p").addClass('red');
});
$("p").hover(function() {
$(this).toggleClass('hover');
});
});
</script>
<style>
#text.hover {
color: blue;
}
.red {
color: red;
}
</style>
</head>
<body>
<button>Set the color property of all p elements</button>
<p id="text">This is a paragraph.</p>
<p id="text">This is another paragraph.</p>
</body>
</html>
Комментарии:
1. спасибо, я очень ценю, я не ожидал, что проблема всего моего дня может быть решена с помощью add!важно
2. Я вообще не рекомендовал использовать
!important
, поскольку это может создавать побочные эффекты… Пожалуйста.3. @NatthakanTheplip используйте!важно, только если нет других вариантов. выберите addClass. Этот ответ также правильный