Rumah > hujung hadapan web > tutorial js > js中hover无效怎么解决

js中hover无效怎么解决

零下一度
Lepaskan: 2017-06-25 09:24:05
asal
2508 orang telah melayarinya

这其实是css的优先级导致的。

首先来看下不用js添加css属性,hover能正常设置背景颜色。

<div id="add"></div>
Salin selepas log masuk
#add{
  width: 50px;
  height: 50px;
  background-color: greenyellow;
}#add:hover{
  background-color: #000;
}
Salin selepas log masuk

左边的图是默认情况下,右边是鼠标放上去的时候,现在hover还是能正常显示的。

(下面的图都是左边默认,右边hover,应为截图工具不能把鼠标也截上来)

但是如果通过js插入css样式的话,鼠标放上去的hover样式就不会生效了。

var add = document.getElementById("add");
add.style.backgroundColor = "red";
Salin selepas log masuk

现在hover里设置的#000属性已经失效了。

但这并不是hover伪类失去的作用,如果设置不是js添加的样式,就能看出hover并没有失效,比如添加一下字体颜色试一下。

#add:hover{
  background-color: #000;
  color: yellow;
}
Salin selepas log masuk

可以看到字体颜色还是会改变的。

原因是应为js添加css样式是直接在html标签的style上添加的,而style的优先级高于css伪类。

从上到下style,hover,id选择器。

可以在浏览器调试工具里看到,js是直接添加到style里的。

那么该怎么办呢

里边讲了选择器的优先级。但是并没有讲到css伪类和style的优先级。

但是:hover伪类也失效了。说明style>css伪类>id>class。

给:hover的属性后面添加!important就可以了。应为!important优先级高于一切!!

!important>style>css伪类>id>class。

#add:hover{
  background-color: #000 !important;
}
Salin selepas log masuk

现在终于达到了想要的结果。

Atas ialah kandungan terperinci js中hover无效怎么解决. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan