JavaScript基础回顾知识点记录6-操作元素样式和事件对象(介绍基本使用)

  • js 中 操作元素样式
    • 通过js修改元素内联样式(设置和读取的都是内联样式)
    • 获取当前元素显示的样式
      <html>
      	<head>
      		<meta charset="utf-8">
      		<title></title>
      	</head>
      	<style type="text/css">
      		#box1 {
      			width: 200px;
      			height: 200px;
      			background-color: aquamarine;
      		}
      	</style>
      	<body>
      		<button type="button" id="btn1">点我下1</button>
      		<button type="button" id="btn2">点我下2</button>
      		<button type="button" id="btn3">点我下3</button>
      		<br><br>
      		<div id="box1">
      
      		</div>
      	</body>
      	<script type="text/javascript">
      		window.onload = function() {
      			var btn01 = document.getElementById("btn1");
      			var box01 = document.getElementById("box1");
      			btn01.onclick = function() {
      				/*
      				通过js修改元素内联样式:  
      					语法:  元素对象.style.样式名 = 样式值
      					样式名: background-color 是不符合的, 需要改为驼峰命名: backgroundColor
      					注意: 这种方法设置和读取的都是内联样式
      				*/
      				box01.style.width = "400px";
      				box01.style.height = "400px";
      				box01.style.backgroundColor = "red";
      			}
      			/*
      			获取当前元素显示的样式:
      				语法: 元素对象.currentStyle.样式名  。 此方法只有IE浏览器支持
      				其他浏览器获取样式: getComputedStyle(元素对象,null).样式名 ;
      								
      			*/
      			var btn2 = document.getElementById("btn2");
      			btn2.onclick = function() {
      				alert(box01.currentStyle.width);
      			}
      
      			var btn3 = document.getElementById("btn3");
      			btn3.onclick = function() {
      				var style_obj = getComputedStyle(box1, null);
      				alert(style_obj.width);
      			}
      		}
      	</script>
      </html>
      
  • js 中 事件对象
    • 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数
    • 在这个事件对象中封装了当前事件相关的一切信息(鼠标的坐标、键盘那个键被按下,鼠标滚动的方向等)
    • 注意: 在ie8及以下浏览器中,响应函数触发时,不会传递事件对象。 事件对象是作为window对象的属性来存储的。
    • 以一个鼠标移入某个区域后显示x、y坐标为例子
      <html>
      	<head>
      		<meta charset="utf-8">
      		<title></title>
      	</head>
      	<style type="text/css">
      		#areaDiv {
      			width: 200px;
      			height: 100px;
      			border: black 3px solid;
      			margin-bottom: 10px;
      		}
      
      		#showMsg {
      			width: 200px;
      			height: 30px;
      			border: black 3px solid;
      		}
      	</style>
      	<body>
      		<div id="areaDiv"></div>
      		<div id="showMsg"></div>
      	</body>
      	<script type="text/javascript">
      		var areaDiv = document.getElementById('areaDiv');
      		var showMsg = document.getElementById('showMsg');
      
      		/*
      			 onmousemove 事件: 鼠标在元素中移动时触发
      			 事件对象: 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数
      				在这个事件对象中封装了当前事件相关的一切信息(鼠标的坐标、键盘那个键被按下,鼠标滚动的方向等)
      			 note: 在ie8及以下浏览器中,响应函数触发时,不会传递事件对象。 事件对象是作为window对象的属性来存储的。
      			 
      		*/
      
      		areaDiv.onmousemove = function(e) {
      			// 解决事件对象兼容性问题: 两种写法:
      			// if (!e) {
      			// 	e = window.e;
      			// }
      			e = e || window.e;
      			showMsg.innerHTML = 'x坐标:' + e.clientX + ',y坐标:' + e.clientY;
      		}
      
      		areaDiv.onmouseout = function() {
      			showMsg.innerHTML = '';
      		}
      	</script>
      </html>
      
  • 鼠标移动事件,实现某个div跟随鼠标移动(复制代码运行直接看效果更直观)
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<style type="text/css">
    		#box {
    			position: absolute;
    			width: 50px;
    			height: 50px;
    			background-color: #7FFFD4;
    		}
    	</style>
    	<body style="height: 1200px;">
    		<div id="box">
    
    		</div>
    	</body>
    	<script type="text/javascript">
    		/*
    			clientX 和 clientY 是获取当前可见页窗口的坐标
    			pageX 和 pageY 是获取相对当前页面的坐标 (当页面可以往下滚动时,需要使用这个获取坐标),但是在IE8中不支持
    		*/
    		document.onmousemove = function(e) {
    			/*
    				获取滚动条高度
    				IE和火狐不识别滚动条属于body的, 谷歌、edge可以识别。
    				IE和火狐认为滚动条属于html的。documentElement,但是edge识别不了html的滚动条
    			*/
    			var st = document.body.scrollTop || document.documentElement.scrollTop;
    			e = e || window.e;
    			var box = document.getElementById('box');
    			box.style.left = e.clientX + 'px';
    			box.style.top = e.clientY + st + 'px';
    		}
    	</script>
    </html>
    
posted @   土dog的填充之路  阅读(92)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示