javascript基础(样式的操作,浏览器兼容样式操作,其他的样式相关属性,滚动的样式)(三十)

1.样式的操作:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			
			#box1{
				width: 100px;
				height: 100px;
				background-color: red;
				
				margin-top: 50px;
			}
			
		</style>
		
		<script type="text/javascript">
			
			window.onload = function(){
				
				/*
				 * 点击按钮以后,修改box1的样式
				 */
				
				//获取按钮和box1
				var btn01 = document.getElementById("btn01");
				var btn02 = document.getElementById("btn02");
				var box1 = document.getElementById("box1");
				
				//定义一个变量
				var l = 100;
				
				//为btn01绑定一个单击响应函数
				btn01.onclick = function(){
					
					/*
					 * 修改元素的样式
					 * 		语法:元素.style.样式名 = 样式值;
					 * 		注意样式名中带有-不能直接写
					 * 			像
					 * 				background-color
					 * 				border-width
					 * 				border-left-style
					 * 		- 这种带有-的样式名,需要将其修改为驼峰命名法,然后在操作
					 * 			将-去掉,然后将-后的字母改大写
					 * 			backgroundColor
					 * 			borderWidth
					 * 
					 * 		- 通过style修改的样式都是元素的内联样式,
					 * 			而内联样式的优先级最高的,所以我们通过JS修改的样式往往会立即显示
					 * 			但是如果在样式后添加了!important,则无法通过内联样式进行覆盖
					 * 			所以我们要尽量去避免使用!important
					 */
					
					l += 10;
					
					//修改box1的宽度
					box1.style.width = l + "px";
					box1.style.height = l + "px";
					
					//修改背景颜色为黄色
					box1.style.backgroundColor = "yellowgreen";
					
					
				};
				
				btn02.onclick = function(){
					
					
					/*
					 * 语法:
					 * 	元素.style.样式名
					 * 
					 * - 通过style只可以读取内联样式,不能读取样式表中的样式
					 * 		如果没有内联样式则不能读取
					 */
					
					//读取box1的样式
					alert(box1.style.backgroundColor);
					
					
				};
				
				
			};
			
			
		</script>
	</head>
	<body>
		
		<button id="btn01">修改样式</button>
		<button id="btn02">读取样式</button>
		
		<div id="box1"></div>
		
	</body>
</html>


2.浏览期兼容操作:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			
			#box1{
				height: 100px;
				background-color: red;
				width: 500px;
				margin-top: 50px;
			}
			
		</style>
		
		<script type="text/javascript">
			
			window.onload = function(){
				
				/*
				 * 点击按钮以后,修改box1的样式
				 */
				
				//获取按钮和box1
				var btn01 = document.getElementById("btn01");
				var btn02 = document.getElementById("btn02");
				var box1 = document.getElementById("box1");
				
				
				//为btn01绑定一个单击响应函数
				btn01.onclick = function(){
					
					/*
					 * 读取元素的当前生效的样式
					 * 	语法:元素.currentStyle.样式名
					 * 	
					 *  currentStyle只有IE浏览器支持,在其他的浏览器中不好使
					 */
					//alert(box1.currentStyle.width);
					
					/*
					 * 正常浏览器需要使用一个getComputedStyle()这个方法来获取当前的样式
					 * 	这个方法就是window的方法,可以直接使用
					 * 参数:
					 * 	  1.要获取样式的元素
					 * 	  2.要获取的元素的伪类,如果不需要可以传null
					 * 
					 * - 这个方法会返回一个对象,在这个对象中封装了元素的当前样式
					 * 
					 * - 注意此方法IE8及以下的浏览器不支持
					 * 
					 * - 通过currentStyle和getComputedStyle()读取到的样式都是只读的,不能修改
					 * 		如果需要修改,则需要使用style。
					 * 
					 */
					
					//var st = getComputedStyle(box1 , null);
					
					//alert(st.width);
					//alert(getComputedStyle(box1 , null).width);
					
					
					//getComputedStyle(box1 , null).width = "300px";
					
					//alert(getComputedStyle(box1 , null).width);
					//alert(box1.currentStyle.width);
					
					alert(getStyle(box1 , "width"));
					
				};
				
			};
			
			/*
			 * getComputedStyle()适用于IE9及以上的浏览器
			 * currentStyle使用于IE8及以下的浏览器
			 * 为了可以兼容所有的浏览器,我们需要自定义一个函数,来获取元素的样式
			 */
			
			/*
			 * 用来获取任意元素的当前样式
			 * 	参数:
			 * 		obj 要获取样式的元素
			 * 		name 要获取的样式的名字
			 * 
			 * 在读取元素的样式时,如果元素没有设置样式,
			 * 	则火狐、Chrome等浏览器会自动计算元素的样式值
			 * 	而IE浏览器,有使用不会自动计算,而是返回默认值,比如宽度会返回auto
			 * 		
			 */
			function getStyle(obj , name){
				
				//判断浏览器中是否含有getComputedStyle这个方法
				if(window.getComputedStyle){
					//支持正常的浏览器
					return getComputedStyle(obj,null)[name];
				}else{
					//只支持IE
					return obj.currentStyle[name];
				}
				
				//return window.getComputedStyle?getComputedStyle(obj,null)[name]:obj.currentStyle[name];
				
			}
			
			
		</script>
	</head>
	<body>
		
		<button id="btn01">读取样式</button>
		<button id="btn02">读取样式</button>
		
		<div id="box1" ></div>
		
	</body>
</html>


3.其他的样式相关属性:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			
			#box1{
				width: 200px;
				height: 200px;
				background-color: silver;
				margin-top: 20px;
				
				/*设置边框*/
				/*border: 10px solid red;
				
				padding: 100px;*/
			}
			
		</style>
		
		<script type="text/javascript">
			
			window.onload = function(){
				
				//获取按钮和box1
				var btn01 = document.getElementById("btn01");
				var box1 = document.getElementById("box1");
				
				
				btn01.onclick = function(){
					
					/*
					 * clientWidth
					 * clientHeight
					 * 	- 获取元素的可见宽度和高度
					 * 	- 获取到的值包括元素的内容区和内边距
					 * 	- 这些属性都是只读,只能看不能修改
					 */
					
					//alert(box1.clientHeight);
					//box1.clientHeight = "500px" ;
					
					/*
					 * offsetWidth
					 * offsetHeight
					 * 	- 可以用来获取元素整个的可见框的大小
					 * 	- 它获取到的值,包括内容区、内边距和边框
					 */
					//alert(box1.offsetWidth);
					
					/*
					 * offsetParent
					 * 	- 可以返回当前元素的定位父元素
					 * 	- 定位父元素,指离当前元素最近的开启了定位的祖先元素
					 * 			如果所有的祖先元素都没有开启定位,则返回body
					 */
					var op = box1.offsetParent;
					
					//alert(op)
					
					/*
					 * offsetLeft(水平偏移量)
					 * offsetTop(垂直偏移量)
					 * 	- 获取当前元素相对于其定位父元素的偏移量
					 */
					
					//输出box1相对于其定位父元素的水平偏移量
					alert(box1.offsetTop);
					
					
				};
				
			};
			
		</script>
	</head>
	<body>
		
		<button id="btn01">点我一下</button>
		
		<div id="box3" style="width: 400px; height: 400px; background-color: skyblue;">
			<div id="box2" style="width: 300px; height: 300px; background-color: honeydew; ">
				<div id="box1"></div>
			</div>
		</div>
		
		
	</body>
</html>


4.滚动的样式:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#box1{
				width: 200px;
				height: 200px;
				background-color: silver;
				
				overflow: auto;
			}
			
			#box2{
				width: 450px;
				height: 500px;
				background-color: #bfa;
			}
			
		</style>
		
		<script type="text/javascript">
			
			window.onload = function(){
				//获取按钮和box1
				var btn01 = document.getElementById("btn01");
				var box1 = document.getElementById("box1");
				
				
				btn01.onclick = function(){
					
					//获取box1的高度
					//alert(box1.clientHeight);
					/*
					 * scrollHeight
					 * 	- 可以获取元素滚动区域的高度
					 * scrollWidth
					 * 	- 可以获取元素滚动区域的宽度
					 */
					//alert(box1.scrollWidth);
					
					/*
					 * scrollTop
					 * 	- 垂直滚动条滚动的距离
					 * scrollLeft
					 * 	- 水平滚动条滚动的距离
					 */
					//alert(box1.scrollLeft);
					
					//当 scrollHeight - scrollTop = clientHeight时,则说明垂直滚动条滚动到底了
					//当 scrollWidth - scrollLeft = clientWidth时,则说明水平滚动条滚动到底了
					//alert(box1.scrollHeight - box1.scrollTop);
					
				};
				
			};
			
		</script>
	</head>
	<body>
		
		<button id="btn01">点我一下</button>
		
		<br /><br />
		
		<div id="box1">
			<div id="box2"></div>
		</div>
		
		
	</body>
</html>


滚动的样式练习:

<!DOCTYPE html>

<html>

	<head>

		<meta charset="UTF-8">

		<title></title>

		<style type="text/css">
			#info{

				width: 200px;

				height: 400px;

				background-color: #bfa;

				overflow: auto;

			}

			
		</style>

		

		<script type="text/javascript">
			

			window.onload = function(){

				

				/*

				 * 当滚动条滚动到底时,使表单项可用

				 */

				

				//为p元素绑定一个滚动条滚动的事件

				var info = document.getElementById("info");

				

				//获取两个表单项

				var inputs = document.getElementsByTagName("input");

				

				/*

				 * onscroll

				 * 	- 滚动条滚动的事件,当元素的滚动条滚动时会触发

				 */

				info.onscroll = function(){

					

					//检查滚动条是否滚动到底

					if(this.clientHeight == this.scrollHeight - this.scrollTop){

						//当进入判断,则说明滚动条滚动到底了

						//使两个表单项变成可用状态

						//disabled属性用来设置表单项是否禁用

						//设置为true,表示禁用,设置为false表示可用

						inputs[0].disabled = false;
						inputs[1].disabled = false;

					}

					

				};

				

			};

			

			
		</script>

	</head>

	<body>

		

		<h3>亲爱的用户,欢迎注册</h3>

		<p id="info">

			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册
			请仔细阅读以下协议,如果你不同意,你就别注册

		</p>

		

		<!--

			如果在表单项中添加disabled="disabled",则可以将表单项变成不可用的状态

		-->

		我已仔细阅读,同意协议 <input type="checkbox" disabled="disabled" />	

		<br /><br />

		<input type="submit" value="注册" disabled="disabled" />

	</body>

</html>


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鸭蛋炒饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值