【分享】非IE浏览器对 MARQUEE 的支持
MARQUEE 元素,就是著名的跑马灯,呃,,也可以说它实现了著名的跑马灯效果。省去我们很多的麻烦,它不属于W3C规范中的元素,最初由IE2.0引入,是微软发明的IE浏览器特有的元素,它可以用来创建一个文字滚动区域,并提供了一些特有的属性、方法及事件。
大概因为它看起来确实不错,所以目前所有浏览器都开始支持 MARQUEE 元素。但是具体的实现方式,估计都有不同。
Firefox中marquee对Date对象有依赖<style>
div {
width: 200px;
background: #DDD;
}
</style>
<script>
Date = null;
</script>
<div>
<marquee behavior="alternate">TEXT</marquee>
</div>在上面的代码中,我将 Date对象置成了空。
打开浏览器,运行页面,”TEXT” 文字在除了Firefox 之外的浏览器之外都跑来跑去的,在 Firefox 中,压根没有看到 ”TEXT” 的影子。将Date=null;去掉,恢复正常。
看来,在 Firefox 里,MARQUEE 的实现和 Date 对象是有关系的。可能 MARQUEE 在Firefox里不是内置的HTML元素,是别的元素加JS代码模拟的也说不行。
Webkit浏览器中 MARQUEE 元素和它的 overflow 值HTML code
<style>
div {
width: 200px;
background: #DDD;
}
marquee {
overflow:hidden;
}
</style>
<div id="d1">
<marquee behavior="alternate">TEXT</marquee>
</div>
这段代码,在其他浏览器中都很正常,”TEXT” 还是跑来跑去,唯有 Safari 和 Chrome,”TEXT” 静止不动。
去掉 marquee{overflow:hidden}; 的设置后,一切正常……
可以打开 Webkit 浏览器,使用它的开发者工具,查看一下 MARQUEE 元素的样式,你会发现,它的 overflow 值是: “-webkit-marquee;”,大概,这就是Webkit内核的浏览器实现 marquee 的秘密吧。
HTML code
<style>
div {
width: 200px;
background: #DDD;
}
#d2 {
overflow: -webkit-marquee;
}
</style>
<div id="d1">
<div id="d2" behavior="alternate">TEXT</div>
</div>
上面代码中并没有 MARQUEE 元素,但是在Webkit 内核的浏览器中 “TEXT” 还是会跑来跑去的。看来,Webkit 中 MARQUEE 的秘密果然在 “overflow: -webkit-marquee;”。
这个元素虽然标准中尚未支持,用起来还是蛮方便的,但是,用的时候一定注意,在Firefox中不要随便动 Date 对象,在Webkit 浏览器中,不要随便改 overflow 特性。
更多兼容性问题:【分享】浏览器兼容性问题目录
------解决方案--------------------很不错的内容,收藏
------解决方案--------------------恩支持
------解决方案--------------------路过,看看
------解决方案--------------------
------解决方案--------------------marquee 这个属性增加个无缝滚动属性就强大了
------解决方案--------------------
------解决方案--------------------HTML code
<style>
div { width:200px; background:#DDD; }
</style>
<div id="d1"><marquee id="m1" behavior="alternate">111</marquee></div>
<button id="b">Click</button>
<div id="d2">
<script>
var a = Date.now;
Date.now = null;
document.getElementById("b").onclick = function () {
Date.now = a;
document.getElementById("d2").innerHTML = '<marquee id="m2">222</marquee>';
}
</script>
</div>
------解决方案--------------------
http://mxr.mozilla.org/firefox/source/layout/style/xbl-marquee/xbl-marquee.xml