一个小问题引出的有关CSS优先级的思考
2007-08-03 12:41
323 查看
随着B/S程序越来越普及,浏览器的种类越来越多,Web程序员也越来越关注如何使自己的页面代码更规范的问题了。然而,任何事情一旦成了标准,便往往会很严格,有时候甚至有些僵化,不管怎样,都给我们广大的程序员同志提出了更高的要求。
这不,这几天我就遇到了一个问题,有关javascript和css的,具体情况描述如下。
//样式:
<style type="text/css">
.mouseover{background-image:url(pic/200707/dot.jpg);}
.mouseout{background-image:url(pic/200707/tagon2.jpg);}
</style>
//脚本:
<div style="BACKGROUND-IMAGE: url(Pic/200707/tagon2.jpg); WIDTH: 100px; HEIGHT: 30px" onmouseover="this.className='mouseover'" onmouseout="this.className='mouseout'"></div>
我的本意是想当鼠标移到目标上方时更换图片,移出时再恢复显示为原来的图片,然而,死活也出不来效果。我是百思不得其解,只好将问题发到社区(http://community.csdn.net/Expert/topic/5690/5690720.xml?temp=.3733484)。很快,就有网友回复,其中一位网友的回复真是一语点醒梦中人啊!他说可能是css的优先级造成的。于是,将定义在div中的style移到外面,然后用class来指名其应用的样式,果然,问题迎刃而解。
这是改正后的代码:
<style type="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>
<div class="mylink" onmouseover="this.className='mouseover'" onmouseout="this.className='mouseout'"></div>
大家都知道,多种样式表单可以被用于同一个文档中,依照重要性不同而分级。如果在同一个html标记中定义了有冲突的样式,那么最靠近标记的定义将生效。所以,在改正前的代码中,我直接在div中定义的style就具有最高的级别,因此,无论我通过javascript如何来改变class,都不会生效。在改正后的代码中,我把其样式也定义在类中,这样就和javascript要控件的类就是一个级别的了,这样就不会再出现冲突,效果就出来了。当然,为了说明问题,我专门定义了mylink类,其实,实际使用中直接应用mouseout类就行了。
很多情况下,困扰我们的一些难题往往都是一些“小问题”造成的,当你忽然间发现,会有一种豁然开朗的感觉,这种感觉真的挺好。
这不,这几天我就遇到了一个问题,有关javascript和css的,具体情况描述如下。
//样式:
<style type="text/css">
.mouseover{background-image:url(pic/200707/dot.jpg);}
.mouseout{background-image:url(pic/200707/tagon2.jpg);}
</style>
//脚本:
<div style="BACKGROUND-IMAGE: url(Pic/200707/tagon2.jpg); WIDTH: 100px; HEIGHT: 30px" onmouseover="this.className='mouseover'" onmouseout="this.className='mouseout'"></div>
我的本意是想当鼠标移到目标上方时更换图片,移出时再恢复显示为原来的图片,然而,死活也出不来效果。我是百思不得其解,只好将问题发到社区(http://community.csdn.net/Expert/topic/5690/5690720.xml?temp=.3733484)。很快,就有网友回复,其中一位网友的回复真是一语点醒梦中人啊!他说可能是css的优先级造成的。于是,将定义在div中的style移到外面,然后用class来指名其应用的样式,果然,问题迎刃而解。
这是改正后的代码:
<style type="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>
<div class="mylink" onmouseover="this.className='mouseover'" onmouseout="this.className='mouseout'"></div>
大家都知道,多种样式表单可以被用于同一个文档中,依照重要性不同而分级。如果在同一个html标记中定义了有冲突的样式,那么最靠近标记的定义将生效。所以,在改正前的代码中,我直接在div中定义的style就具有最高的级别,因此,无论我通过javascript如何来改变class,都不会生效。在改正后的代码中,我把其样式也定义在类中,这样就和javascript要控件的类就是一个级别的了,这样就不会再出现冲突,效果就出来了。当然,为了说明问题,我专门定义了mylink类,其实,实际使用中直接应用mouseout类就行了。
很多情况下,困扰我们的一些难题往往都是一些“小问题”造成的,当你忽然间发现,会有一种豁然开朗的感觉,这种感觉真的挺好。
相关文章推荐
- css的有关优先级的一个问题
- 深入图解虚拟机(一)--一个问题引出的思考
- CSS中遇到的一个优先级问题
- 透过现象看本质,一个Java多线程问题引出的思考
- 由一个死循环引出的一系列问题及思考
- [整理]一个有关Latch(锁存器)的有趣问题
- 关于and or的优先级的一个小问题
- 最近在使用sps类库过程中发现了一个让我比较疑惑的问题(有关items属性的)
- 对于多个数据库表对应一个Model问题的思考
- @media与css先后顺序产生的优先级问题
- 急。。。急:请问一个与网络嗅探有关的问题急。。。急:请问一个与网络嗅探有关的问题
- 一个有关扑克牌牌型分析的问题
- 项目问题反思——CSS优先级
- 关于Java继承一个值得思考的问题。
- 解析 Java 类和对象的初始化过程(由一个单态模式引出的问题谈起)
- Java中有关this的一个问题
- 关于css控制a标签的一个小问题
- 关于分治和递归的几点思考 有关全排序问题
- 关于一个与CString有关的RELEASE和DEBUG不同的问题