动态控制样式表
在JavaScript中,有两种方式可以动态的改变样式属性,一种是使用style属性,另一种是使用样式的className属性。另外控制元素隐藏和显示使用display属性。
1、使用sytle属性
语法:
元素.style.样式属性="值";
在JavaScript中使用CSS样式与在html中使用CSS少有不同,由于JavaScript中的-表示减号,因此如果样式属性名称中带有"-"则要省去,后面首字母要大写。
例如:
document.getElementById("title").style.fontSize="14px"; //更改title标签字体为14号 document.getElementById('id1').style.color='red'; //设置id1字体为红色
这种方式只能获取行内样式属性,如果要获取外部样式和内部样式属性。如果是IE浏览器需要使用currentStyle对象,如果是firefox使用getComputedStyle方法。
<style type="text/css">
#adv {
position: absolute;
top: 20px;
left: 30px;
width: 100px;
height: 100px;
background-color: red;
}
</style>
<script type="text/javascript">
function test(){
var adv = document.getElementById("adv");
//alert(adv.style.left + " " + adv.style.top); //如果不是行内样式,则style无效 //如果是IE浏览器
if(adv.currentStyle){
alert("IE浏览器:" +adv.currentStyle.left + " " + adv.currentStyle.top);
}else{
var left = document.defaultView.getComputedStyle(adv,null).left;
var top = document.defaultView.getComputedStyle(adv,null).top;
alert("非IE浏览器:" + left + " " + top);
} }
</script>
<input type="button" value="移动div" onclick="test()" />
<div id="adv" style=""></div>
2、使用className属性
语法:
元素.className="类样式";
这种方式需要预先定义好类样式,然后赋值给className属性。复用性更好。
document.getElementById('id1').className='red'; //为id1添加类样式
3、display属性
语法:
元素.display = "值"
这里的值为css中display的属性值,none隐藏,block块显示,inline行显示。
<script language="JavaScript">
function show(str){
var i=documeng.getElementById(str);
if (i.style.display == "none") {
i.style.display = "";
}
else{
i.style.display = "none";
}
}
</script>
4、滚动条
属性:
scrollLeft:水平滚动的距离;
scrollTop:垂直滚动的距离;
事件:
onscroll:滚动事件
注意:在chrome下,document.body.scrollTop能读出正常值,但是在ie6 和 firefox里,document.body.scrollTop的值始终为0,于是在网上搜索办法。原来是DTD的问题,要是页面直接用<html>开头的话就没有问题了。但是要符合web标准,DTD当然是不能少的。用document.documentElement.scrollTop可以解决这个问题。但又一个问题是,chrome并不认同ocument.documentElement.scrollTop这种写法,
实现页面滚动的广告图片:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>随鼠标滚动的广告图片</title>
<style type="text/css">
#main { text-align: center; } #adver {
position: absolute;
left: 50px;
top: 30px;
z-index: 2;
}
</style>
<script type="text/javascript">
var adverTop; //层距页面顶端距离
var adverLeft;
var adverObject; //层对象
function inix(){
adverObject=document.getElementById("adver"); //获得层对象
if(adverObject.currentStyle){
adverTop=parseInt(adverObject.currentStyle.top);
adverLeft=parseInt(adverObject.currentStyle.left);
}
else{
adverTop=parseInt(document.defaultView.getComputedStyle(adverObject,null).top);
adverLeft=parseInt(document.defaultView.getComputedStyle(adverObject,null).left);
}
}
function move(){
adverObject.style.top=adverTop+parseInt(document.documentElement.scrollTop || document.body.scrollTop)+"px";
adverObject.style.left=adverLeft+parseInt(document.documentElement.scrollLeft || document.body.scrollLeft)+"px";
}
window.onload=inix;
window.onscroll=move;
</script>
</head>
<body>
<div id="adver"><img src="data:images/adv.jpg"/></div>
<div id="main"><img src="data:images/main1.jpg"/><img src="data:images/main2.jpg"/><img src="data:images/main3.jpg"/></div>
</body>
</html>