一个小问题引出的有关CSS优先级的思考

本文介绍了一种常见的情况,即当使用JavaScript动态更改元素的CSS类时遇到的问题,特别是涉及背景图片的切换。通过调整样式定义的位置,可以有效解决此类冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  随着B/S程序越来越普及,浏览器的种类越来越多,Web程序员也越来越关注如何使自己的页面代码更规范的问题了。然而,任何事情一旦成了标准,便往往会很严格,有时候甚至有些僵化,不管怎样,都给我们广大的程序员同志提出了更高的要求。
  这不,这几天我就遇到了一个问题,有关javascript和css的,具体情况描述如下。
// 样式:
< styletype = " text/css " >
.mouseover{background
- image:url(pic / 200707 / dot.jpg);}
.mouseout{background
- image:url(pic / 200707 / tagon2.jpg);}
</ style >
// 脚本:
< divstyle = " BACKGROUND-IMAGE:url(Pic/200707/tagon2.jpg);WIDTH:100px;HEIGHT:30px " onmouseover = " this.className='mouseover' " onmouseout = " this.className='mouseout' " ></ div >
  
  我的本意是想当鼠标移到目标上方时更换图片,移出时再恢复显示为原来的图片,然而,死活也出不来效果。我是百思不得其解,只好将问题发到社区( http://community.youkuaiyun.com/Expert/topic/5690/5690720.xml?temp=.3733484)。很快,就有网友回复,其中一位网友的回复真是一语点醒梦中人啊!他说可能是css的优先级造成的。于是,将定义在div中的style移到外面,然后用class来指名其应用的样式,果然,问题迎刃而解。
  这是改正后的代码:
< styletype = " text/css " >
.mylink{BACKGROUND
- IMAGE:url(Pic / 200707 / tagon2.jpg);WIDTH:100px;HEIGHT:30px;}
.mouseover{background
- image:url(pic / 200707 / dot.jpg);WIDTH:100px;HEIGHT:30px;}
.mouseout{background
- image:url(pic / 200707 / tagon2.jpg);WIDTH:100px;HEIGHT:30px;}
</ style >
< divclass = " mylink " onmouseover = " this.className='mouseover' " onmouseout = " this.className='mouseout' " ></ div >

  大家都知道,多种样式表单可以被用于同一个文档中,依照重要性不同而分级。如果在同一个html标记中定义了有冲突的样式,那么最靠近标记的定义将生效。所以,在改正前的代码中,我直接在div中定义的style就具有最高的级别,因此,无论我通过javascript如何来改变class,都不会生效。在改正后的代码中,我把其样式也定义在类中,这样就和javascript要控件的类就是一个级别的了,这样就不会再出现冲突,效果就出来了。当然,为了说明问题,我专门定义了mylink类,其实,实际使用中直接应用mouseout类就行了。
  很多情况下,困扰我们的一些难题往往都是一些“小问题”造成的,当你忽然间发现,会有一种豁然开朗的感觉,这种感觉真的挺好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值