使用dom操作css
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 8 #box1{ 9 width: 100px; 10 height: 100px; 11 background-color: red; 12 } 13 14 </style> 15 16 <script type="text/javascript"> 17 18 window.onload = function(){ 19 20 /* 21 * 点击按钮以后,修改box1的大小 22 */ 23 //获取box1 24 var box1 = document.getElementById("box1"); 25 //为按钮绑定单击响应函数 26 var btn01 = document.getElementById("btn01"); 27 btn01.onclick = function(){ 28 29 //修改box1的宽度 30 /* 31 * 通过JS修改元素的样式: 32 * 语法:元素.style.样式名 = 样式值 33 * 34 * 注意:如果CSS的样式名中含有-, 35 * 这种名称在JS中是不合法的比如background-color 36 * 需要将这种样式名修改为驼峰命名法, 37 * 去掉-,然后将-后的字母大写 38 * 39 * 我们通过style属性设置的样式都是内联样式, 40 * 而内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示 41 * 42 * 但是如果在样式中写了!important,则此时样式会有最高的优先级, 43 * 即使通过JS也不能覆盖该样式,此时将会导致JS修改样式失效 44 * 所以尽量不要为样式添加!important 45 * 46 * 47 * 48 */ 49 box1.style.width = "300px"; 50 box1.style.height = "300px"; 51 box1.style.backgroundColor = "yellow"; 52 53 }; 54 55 56 //点击按钮2以后,读取元素的样式 57 var btn02 = document.getElementById("btn02"); 58 btn02.onclick = function(){ 59 //读取box1的样式 60 /* 61 * 语法:元素.style.样式名 62 * 63 * 通过style属性设置和读取的都是内联样式 64 * 无法读取样式表中的样式 65 */ 66 //alert(box1.style.height); 67 alert(box1.style.width); 68 }; 69 }; 70 71 72 </script> 73 </head> 74 <body> 75 76 <button id="btn01">点我一下</button> 77 <button id="btn02">点我一下2</button> 78 79 <br /><br /> 80 81 <div id="box1"></div> 82 83 </body> 84 </html>
读取元素节点样式
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 8 #box1{ 9 width: 100px; 10 height: 100px; 11 background-color: yellow; 12 } 13 14 </style> 15 16 <script type="text/javascript"> 17 18 window.onload = function(){ 19 20 //点击按钮以后读取box1的样式 21 var box1 = document.getElementById("box1"); 22 var btn01 = document.getElementById("btn01"); 23 btn01.onclick = function(){ 24 //读取box1的宽度 25 //alert(box1.style.width); 26 27 /* 28 * 获取元素的当前显示的样式 29 * 语法:元素.currentStyle.样式名 30 * 它可以用来读取当前元素正在显示的样式 31 * 如果当前元素没有设置该样式,则获取它的默认值 32 * 33 * currentStyle只有IE浏览器支持,其他的浏览器都不支持 34 */ 35 36 //alert(box1.currentStyle.width); 37 //box1.currentStyle.width = "200px"; 38 //alert(box1.currentStyle.backgroundColor); 39 40 /* 41 * 在其他浏览器中可以使用 42 * getComputedStyle()这个方法来获取元素当前的样式 43 * 这个方法是window的方法,可以直接使用 44 * 需要两个参数 45 * 第一个:要获取样式的元素 46 * 第二个:可以传递一个伪元素,一般都传null 47 * 48 * 该方法会返回一个对象,对象中封装了当前元素对应的样式 49 * 可以通过对象.样式名来读取样式 50 * 如果获取的样式没有设置,则会获取到真实的值,而不是默认值 51 * 比如:没有设置width,它不会获取到auto,而是一个长度 52 * 53 * 但是该方法不支持IE8及以下的浏览器 54 * 55 * 通过currentStyle和getComputedStyle()读取到的样式都是只读的, 56 * 不能修改,如果要修改必须通过style属性 57 */ 58 //var obj = getComputedStyle(box1,null); 59 60 /*alert(getComputedStyle(box1,null).width);*/ 61 //正常浏览器的方式,谷歌,火狐 62 //alert(getComputedStyle(box1,null).backgroundColor); 63 64 //IE8的方式 65 //alert(box1.currentStyle.backgroundColor); 66 67 //alert(getStyle(box1,"width")); 68 69 var w = getStyle(box1,"width"); 70 alert(w); 71 72 73 }; 74 75 }; 76 77 /* 78 * 定义一个函数,用来获取指定元素的当前的样式 79 * 参数: 80 * obj 要获取样式的元素 81 * name 要获取的样式名 82 */ 83 84 function getStyle(obj , name){ 85 86 if(window.getComputedStyle){ 87 //正常浏览器的方式,具有getComputedStyle()方法 88 return getComputedStyle(obj , null)[name]; 89 }else{ 90 //IE8的方式,没有getComputedStyle()方法 91 return obj.currentStyle[name]; 92 } 93 94 //return window.getComputedStyle?getComputedStyle(obj , null)[name]:obj.currentStyle[name]; 95 96 } 97 98 99 </script> 100 </head> 101 <body> 102 <button id="btn01">点我一下</button> 103 <br /><br /> 104 <div id="box1" ></div> 105 </body> 106 </html>
其他样式操作属性
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 8 #box1{ 9 width: 100px; 10 height: 100px; 11 background-color: red; 12 padding: 10px; 13 border: 10px solid yellow; 14 } 15 16 17 #box2{ 18 padding: 100px; 19 background-color: #bfa; 20 } 21 22 #box4{ 23 width: 200px; 24 height: 300px; 25 background-color: #bfa; 26 overflow: auto; 27 } 28 29 #box5{ 30 width: 100px; 31 height: 600px; 32 background-color: yellow; 33 } 34 35 </style> 36 <script type="text/javascript"> 37 38 window.onload = function(){ 39 var box1 = document.getElementById("box1"); 40 var btn01 = document.getElementById("btn01"); 41 var box4 = document.getElementById("box4"); 42 43 btn01.onclick = function(){ 44 /* 45 * clientWidth 46 * clientHeight 47 * - 这两个属性可以获取元素的可见宽度和高度 48 * - 这些属性都是不带px的,返回都是一个数字,可以直接进行计算 49 * - 会获取元素宽度和高度,包括内容区和内边距 50 * - 这些属性都是只读的,不能修改 51 */ 52 //alert(box1.clientWidth); 53 //alert(box1.clientHeight); 54 //box1.clientHeight = 300; 55 56 /* 57 * offsetWidth 58 * offsetHeight 59 * - 获取元素的整个的宽度和高度,包括内容区、内边距和边框 60 */ 61 //alert(box1.offsetWidth); 62 63 /* 64 * offsetParent 65 * - 可以用来获取当前元素的定位父元素 66 * - 会获取到离当前元素最近的开启了定位的祖先元素 67 * 如果所有的祖先元素都没有开启定位,则返回body 68 */ 69 var op = box1.offsetParent; 70 71 //alert(op.id); 72 73 /* 74 * offsetLeft 75 * - 当前元素相对于其定位父元素的水平偏移量 76 * offsetTop 77 * - 当前元素相对于其定位父元素的垂直偏移量 78 */ 79 80 //alert(box1.offsetLeft); 81 82 /* 83 * scrollWidth 84 * scrollHeight 85 * - 可以获取元素整个滚动区域的宽度和高度 86 */ 87 //alert(box4.clientHeight); 88 //alert(box4.scrollWidth); 89 90 /* 91 * scrollLeft 92 * - 可以获取水平滚动条滚动的距离 93 * scrollTop 94 * - 可以获取垂直滚动条滚动的距离 95 */ 96 //alert(box4.scrollLeft); 97 //alert(box4.scrollTop); 98 99 //alert(box4.clientHeight); // 283 100 101 //当满足scrollHeight - scrollTop == clientHeight 102 //说明垂直滚动条滚动到底了 103 104 //当满足scrollWidth - scrollLeft == clientWidth 105 //说明水平滚动条滚动到底 106 //alert(box4.scrollHeight - box4.scrollTop); // 600 107 108 109 110 }; 111 112 }; 113 114 115 </script> 116 </head> 117 <body id="body"> 118 <button id="btn01">点我一下</button> 119 <br /><br /> 120 121 <div id="box4"> 122 <div id="box5"></div> 123 </div> 124 125 126 127 <br /><br /> 128 129 <div id="box3"> 130 <div id="box2" style="position: relative;"> 131 <div id="box1"></div> 132 </div> 133 </div> 134 135 136 </body> 137 </html>
协议说明滚动到底
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 8 #info{ 9 width: 300px; 10 height: 500px; 11 background-color: #bfa; 12 overflow: auto; 13 } 14 15 </style> 16 <script type="text/javascript"> 17 window.onload = function(){ 18 19 /* 20 * 当垂直滚动条滚动到底时使表单项可用 21 * onscroll 22 * - 该事件会在元素的滚动条滚动时触发 23 */ 24 25 //获取id为info的p元素 26 var info = document.getElementById("info"); 27 //获取两个表单项 28 var inputs = document.getElementsByTagName("input"); 29 //为info绑定一个滚动条滚动的事件 30 info.onscroll = function(){ 31 32 //检查垂直滚动条是否滚动到底 33 if(info.scrollHeight - info.scrollTop === info.clientHeight){ 34 //滚动条滚动到底,使表单项可用 35 /* 36 * disabled属性可以设置一个元素是否禁用, 37 * 如果设置为true,则元素禁用 38 * 如果设置为false,则元素可用 39 */ 40 inputs[0].disabled = false; 41 // inputs[0].removeAttribute("disabled") 42 inputs[1].disabled = false; 43 } 44 45 }; 46 47 }; 48 49 50 </script> 51 </head> 52 <body> 53 <h3>欢迎亲爱的用户注册</h3> 54 <p id="info"> 55 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 56 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 57 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 58 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 59 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 60 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 61 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 62 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 63 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 64 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 65 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 66 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 67 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 68 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 69 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 70 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 71 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 72 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 73 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 74 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 75 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 76 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 77 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 78 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 79 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 80 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 81 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 82 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 83 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 84 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 85 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 86 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 87 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 88 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 89 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 90 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 91 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 92 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 93 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 94 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 95 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 96 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 97 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 98 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 99 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 100 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 101 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 102 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 103 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 104 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 105 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 106 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 107 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 108 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 109 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 110 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 111 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 112 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 113 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 114 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 115 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 116 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 117 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 118 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 119 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 120 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 121 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 122 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 123 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 124 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 125 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 126 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 127 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 128 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 129 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 130 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 131 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 132 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 133 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 134 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 135 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 136 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 137 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 138 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 139 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 140 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 141 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 142 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 143 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 144 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 145 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 146 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 147 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 148 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 149 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 150 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 151 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 152 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 153 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 154 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 155 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 156 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 157 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 158 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 159 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 160 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 161 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 162 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 163 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 164 亲爱的用户,请仔细阅读以下协议,如果你不仔细阅读你就别注册 165 </p> 166 <!-- 如果为表单项添加disabled="disabled" 则表单项将变成不可用的状态 --> 167 <input type="checkbox" disabled="disabled" />我已仔细阅读协议,一定遵守 168 <input type="submit" value="注册" disabled="disabled" /> 169 </body> 170 </html>
事件对象event
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>Insert title here</title> 6 <style type="text/css"> 7 8 #areaDiv { 9 border: 1px solid black; 10 width: 300px; 11 height: 50px; 12 margin-bottom: 10px; 13 } 14 15 #showMsg { 16 border: 1px solid black; 17 width: 300px; 18 height: 20px; 19 } 20 21 </style> 22 <script type="text/javascript"> 23 24 window.onload = function(){ 25 /* 26 * 当鼠标在areaDiv中移动时,在showMsg中来显示鼠标的坐标 27 */ 28 //获取两个div 29 var areaDiv = document.getElementById("areaDiv"); 30 var showMsg = document.getElementById("showMsg"); 31 32 /* 33 * onmousemove 34 * - 该事件将会在鼠标在元素中移动时被触发 35 * 36 * 事件对象 37 * - 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数, 38 * 在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标 键盘哪个按键被按下 鼠标滚轮滚动的方向。。。 39 */ 40 areaDiv.onmousemove = function(event){ 41 // alert(event) //[object MouseEvent],是个对象 42 /* 43 * 在IE8中,响应函数被触发时,浏览器不会传递事件对象, 44 * 在IE8及以下的浏览器中,是将事件对象作为window对象的属性保存的 45 */ 46 /*if(!event){ 47 event = window.event; 48 }*/ 49 50 //解决事件对象的兼容性问题,兼容ie8 51 event = event || window.event; 52 53 /* 54 * clientX可以获取鼠标指针的水平坐标 55 * cilentY可以获取鼠标指针的垂直坐标 56 */ 57 var x = event.clientX; 58 var y = event.clientY; 59 60 //alert("x = "+x + " , y = "+y); 61 62 //在showMsg中显示鼠标的坐标 63 showMsg.innerHTML = "x = "+x + " , y = "+y; 64 65 }; 66 67 }; 68 69 </script> 70 </head> 71 <body> 72 73 <div id="areaDiv"></div> 74 <div id="showMsg"></div> 75 76 </body> 77 </html>
使div可以跟随鼠标移动
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 #box1{ 8 width: 100px; 9 height: 100px; 10 background-color: red; 11 /* 12 * 开启box1的绝对定位 13 */ 14 position: absolute; 15 } 16 17 </style> 18 19 <script type="text/javascript"> 20 window.onload = function(){ 21 22 /* 23 * 使div可以跟随鼠标移动 24 */ 25 26 //获取box1 27 var box1 = document.getElementById("box1"); 28 //绑定鼠标移动事件 29 document.onmousemove = function(event){ 30 31 //解决兼容问题,ie8 32 event = event || window.event; 33 34 //获取滚动条滚动的距离 35 /* 36 * chrome认为浏览器的滚动条是body的,可以通过body.scrollTop来获取 37 * 火狐等浏览器认为浏览器的滚动条是html的, 38 */ 39 var st = document.body.scrollTop || document.documentElement.scrollTop; 40 var sl = document.body.scrollLeft || document.documentElement.scrollLeft; 41 //var st = document.documentElement.scrollTop; 42 43 44 //获取到鼠标的坐标 45 /* 46 * clientX和clientY 47 * 用于获取鼠标在当前的可见窗口的坐标 48 * div的偏移量,是相对于整个页面的, 鼠标和div的左边不一致,相差的距离是滚动条的距离 49 * 50 * pageX和pageY可以获取鼠标相对于当前页面的坐标 51 * 但是这个两个属性在IE8中不支持,所以如果需要兼容IE8,则不要使用 52 */ 53 var left = event.clientX; 54 var top = event.clientY; 55 56 //设置div的偏移量 57 box1.style.left = left + sl + "px"; 58 box1.style.top = top + st + "px"; 59 60 }; 61 62 63 }; 64 65 66 </script> 67 </head> 68 <body style="height: 1000px; 2000px;"> 69 <div id="box1"></div> 70 </body> 71 </html>
冒泡1
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 #box1{ 8 width: 200px; 9 height: 200px; 10 background-color: yellowgreen; 11 } 12 13 #s1{ 14 background-color: yellow; 15 } 16 17 18 </style> 19 <script type="text/javascript"> 20 21 window.onload = function(){ 22 23 /* 24 * 事件的冒泡(Bubble) 25 * - 所谓的冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发 26 * - 在开发中大部分情况冒泡都是有用的,如果不希望发生事件冒泡可以通过事件对象来取消冒泡 27 * 28 */ 29 30 //为s1绑定一个单击响应函数 31 var s1 = document.getElementById("s1"); 32 s1.onclick = function(event){ 33 event = event || window.event; 34 alert("我是span的单击响应函数"); 35 36 //取消冒泡 37 //可以将事件对象的cancelBubble设置为true,即可取消冒泡 38 event.cancelBubble = true; 39 }; 40 41 //为box1绑定一个单击响应函数 42 var box1 = document.getElementById("box1"); 43 box1.onclick = function(event){ 44 event = event || window.event; 45 alert("我是div的单击响应函数"); 46 47 event.cancelBubble = true; 48 }; 49 50 //为body绑定一个单击响应函数 51 // var body= document.getElementsByTagName("body")[0] 52 document.body.onclick = function(){ 53 alert("我是body的单击响应函数"); 54 }; 55 56 57 }; 58 59 60 </script> 61 </head> 62 <body> 63 64 <div id="box1"> 65 我是box1 66 <span id="s1">我是span</span> 67 </div> 68 69 </body> 70 </html>
冒泡练习
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 #box1{ 8 width: 100px; 9 height: 100px; 10 background-color: red; 11 /* 12 * 开启box1的绝对定位 13 */ 14 position: absolute; 15 } 16 17 </style> 18 19 <script type="text/javascript"> 20 window.onload = function(){ 21 22 /* 23 * 使div可以跟随鼠标移动 24 */ 25 26 //获取box1 27 var box1 = document.getElementById("box1"); 28 //绑定鼠标移动事件,页面绑定移入事件 29 document.onmousemove = function(event){ 30 31 //解决兼容问题 32 event = event || window.event; 33 34 //获取滚动条滚动的距离 35 /* 36 * chrome认为浏览器的滚动条是body的,可以通过body.scrollTop来获取 37 * 火狐等浏览器认为浏览器的滚动条是html的, 38 */ 39 var st = document.body.scrollTop || document.documentElement.scrollTop; 40 var sl = document.body.scrollLeft || document.documentElement.scrollLeft; 41 //var st = document.documentElement.scrollTop; 42 43 44 //获取到鼠标的坐标 45 /* 46 * clientX和clientY 47 * 用于获取鼠标在当前的可见窗口的坐标 48 * div的偏移量,是相对于整个页面的 49 * 50 * pageX和pageY可以获取鼠标相对于当前页面的坐标 51 * 但是这个两个属性在IE8中不支持,所以如果需要兼容IE8,则不要使用 52 */ 53 var left = event.clientX; 54 var top = event.clientY; 55 56 //设置div的偏移量 57 box1.style.left = left + sl + "px"; 58 box1.style.top = top + st + "px"; 59 60 }; 61 62 var box2 = document.getElementById("box2"); 63 box2.onmousemove = function(event){ 64 event = event || window.event; 65 //取消冒泡 66 event.cancelBubble = true; 67 }; 68 69 70 71 }; 72 73 74 </script> 75 </head> 76 <body style="height: 1000px; 2000px;"> 77 <div id="box2" style=" 500px; height: 500px; background-color: #bfa;"></div> 78 <div id="box1"></div> 79 </body> 80 </html>