核心提示:HTML:!DOCTYPE htmlhtml head meta charset=UTF-8 / title/title/headbody input type=text name=txt1 = id...
HTML:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title></title> </head> <body> <input type="text" name="txt1" "="" id="txt1" value="" /> <p id="p1"> 变高 </p> <p id="p2"> 变宽 </p> <p id="p3"> 透明度 </p> <p id="p4"> 字体大小 </p> <p id="p5"> 边框 </p> </body> </html>
CSS:
* { margin: 0; } p { width: 100px; height: 100px; background-color: yellowgreen; border: 2px solid red; /*padding:5px;*/ float: left; margin: 10px; /*position: absolute;*/ /*left:20px; top:30px;*/ } #p3 { /*IE9-11、火狐和谷歌用opacity*/ opacity: 0.5; /*IE用6-8的是filter*/ filter: alpha(opacity:50); }
JavaScript:
window.onload = function() { var oDiv1 = document.getElementById('p1'); var oDiv2 = document.getElementById('p2'); var oDiv3 = document.getElementById('p3'); var oDiv4 = document.getElementById('p4'); var oDiv5 = document.getElementById('p5'); var oTxt1 = document.getElementById('txt1'); //offsetWidth和offsetHeight,获取的都是对象的盒模型(宽、border、padding) //offsetWidth=width+border+padding //offsetHeight=height+border+padding //所以我们如果用obj.style.width,但是它只能获取行间的样式,不能获取非行间样式(即样式表里的样式) //getStyle完全不考虑border、padding的大小 function getStyle(obj, name) { if (obj.currentStyle) { return obj.currentStyle[name]; // IE用 } else { return getComputedStyle(obj, false)[name]; // 火狐和谷歌用 } } oDiv1.onmouseover = function() { startMove(oDiv1, 'height', 200); } oDiv1.onmouseout = function() { startMove(oDiv1, 'height', 100); } oDiv2.onmouseover = function() { startMove(oDiv2, 'width', 200); } oDiv2.onmouseout = function() { startMove(oDiv2, 'width', 100); } oDiv3.onmouseover = function() { startMove(oDiv3, 'opacity', 100); } oDiv3.onmouseout = function() { startMove(oDiv3, 'opacity', 50); } oDiv4.onmouseover = function() { startMove(oDiv4, 'fontSize', 40); } oDiv4.onmouseout = function() { startMove(oDiv4, 'fontSize', 18); } oDiv5.onmouseover = function() { startMove(oDiv5, 'borderWidth', 20); } oDiv5.onmouseout = function() { startMove(oDiv5, 'borderWidth', 1); } function startMove(obj, attr, iTarget) { clearInterval(obj.timer); obj.timer = setInterval(function() { var cur = 0; var speed = 0; if (attr == 'opacity') { cur = Math.round(parseFloat(getStyle(obj, attr)) * 100); oTxt1.value = cur; } else { cur = parseInt(getStyle(obj, attr)); } speed = (iTarget - cur) / 6; speed > 0 ? speed = Math.ceil(speed) : speed = Math.floor(speed); if (cur == iTarget) { clearInterval(obj.timer); } else { if (attr == 'opacity') { obj.style[attr] = (cur + speed) / 100; obj.style.filter = 'alpha:(opacity:' + (cur + speed) / 100 + ')'; } else { obj.style[attr] = (cur + speed) + 'px'; } } }, 30); } }