zoukankan      html  css  js  c++  java
  • 02 网页换肤

    效果图:

    02 网页换肤

    思路:
    要应用的样式css文件单独保存,通过HTML中link标签链接属性变化来应用样式。

    1. 获取link标签
    2. 遍历所要改变的标签名
    3. 绑定点击事件
    4. 设置className类名应用样式
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>网页换肤</title>
    	<style>
    		body, ul, li {
    			margin: 0;
    			padding: 0;
    		}
    
    		html, body { height: 100%; }
    
    		body { font: 12px/1.5 Tahoma; }
    
    		li { list-style-type: none; }
    		
    		a:link, a:visited { text-decoration: none; }
    
    		a:hover { text-decoration: underline; }
    
    		#outer {
    			 500px;
    			margin: 0 auto;
    			overflow: hidden;
    			zoom: 1;
    		}
    
    		#skin, #nav {
    			overflow: hidden;
    			zoom: 1;
    		}
    
    		#skin { margin: 10px 0; }
    
    		#skin li {
    			float: left;
    			 6px;
    			height: 6px;
    			cursor: pointer;
    			overflow: hidden;
    			margin-right: 10px;
    			text-indent: -9999px;
    			border: 4px solid;
    		}
    
    		#skin li.current { background: #fff!important; }
    
    		#red {
    			border-color: red;
    			background: red;
    		}
    
    		#green {
    		    border-color: green;
    		    background: green;
    		}
    		
    		#black {
    		    border-color: black;
    		    background: black;
    		}
    
    		#nav { border: 1px solid #fff; }
    
    		#nav li {
    			float: left;
    			 82px;
    			line-height: 25px;
    			text-align: center;
    			border-right: 1px solid #fff;
    		}
    
    		#nav li.last {
    			 83px;
    			border-right- 0;
    		}
    
    		#nav li a { color: #fff; }
    
    	</style>
    	<!-- // 应用网页默认皮肤样式 -->
    	<link rel="stylesheet" href="green.css">
    	<script>
    		window.onload = function() {
    
    			// 获取第一个link标签
    			var oLink = document.getElementsByTagName("link")[0];
    
    			// 获取id为skin下的所有li标签
    			var oSkin = document.getElementById("skin").getElementsByTagName("li");
    
    			// 遍历skin下的所有li标签
    			for(var i = 0; i < oSkin.length; i++) {
    
    				// 绑定点击事件
    				oSkin[i].onclick = function() {
    
    					// 枚举oSkin对象的属性,初始化class类名
    					for(var p in oSkin) oSkin[p].className = "";
    
    					// 设置当前class类名为current
    					this.className = "current";
    
    					// 应用相对应的样式文件
    					oLink["href"] = this.id + ".css"; 
    				}
    			}
    		}
    	</script>
    </head>
    <body>
    	<div id="outer">
    		<ul id="skin">
    			<li id="red" title="红色">红</li>
    			<li id="green" class="current" title="绿色">绿</li>
    			<li id="black" title="黑色">黑</li>
    		</ul>
    		<ul id="nav">
    			<li><a href="javascript:;">新闻</a></li>
    			<li><a href="javascript:;">娱乐</a></li>
    			<li><a href="javascript:;">体育</a></li>
    			<li><a href="javascript:;">电影</a></li>
    			<li><a href="javascript:;">音乐</a></li>
    			<li class="last"><a href="javascript:;">旅游</a></li>
    		</ul>
    	</div>
    </body>
    </html>
    
    

    一、CSS样式:

    1. body { font: 12px/1.5 Tahoma; }社么意思?
    解释:
    1.5是行高(line-height),1.5表示是12px的1.5倍,即font: 12px;line-height: 1.5。也可以理解font-size:12px;line-height:1.5em,即字符高度的1.5倍。
    这是css中font的简写写法。em单位是指父元素的字体大小。
    字体:字体大小/字体行高 字体格式。

    详细写法:

    body {
    	font-size: 12px;
    	line-height: 1.5;
    	font-family: Tahoma;
    }
    
    

    **tips: **
    tahoma 大河马字体,Tahoma为Windows操作系统的英文默认字型。Tahoma是种非常圆滑的字体。这个字体比较均衡,中英文混排显示时,不会出现中英文不对齐的状态。

    sans-serif 表示是无衬线字体,是一种通用字体族。

    1. px像素(Pixel),相对长度单位。像素px是相对于显示器屏幕分辨率而言的。
    2. em是相对长度单位,相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

    因此用px来定义字体,就无法用浏览器字体放大的功能。
    任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合:1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明font-size:62.5%,这就使em值变为16px*62.5%=10px,这样12px=1.2em,10px=1em,也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

    CSS中em属性有如下特点

    1. em的值并不是固定的;
    2. em会继承父级元素的字体大小。

    所以我们在写CSS的时候,需要注意

    1. body选择器中声明Font-size=62.5%;
    2. 将你的原来的px数值除以10,然后换上em作为单位;
    3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。

    2. CSS中zoom:1的作用
    兼容IE6、IE7、IE8浏览器,经常会遇到一些问题,可以使用zoom:1来解决
    zoom属性是IE浏览器的专有属性,Firefox等浏览器不支持。它可以设置或检索对象的缩放比例。

    zoom的使用方法:
    zoom : normal | number
    normal :  默认值。使用对象的实际尺寸
    number :  百分数 | 无符号浮点实数。浮点实数值为1.0或百分数为100%时相当于此属性的 normal 值用白话讲解就是zoom:后面的数字即放大的倍数,可以是数值,也可以是百分比。而这个属性只要在IE中才起作用。

    二、JavaScript

    for-in语句是一种精准的迭代语句,可以用来枚举对象的属性。
    for(var p in oSkin) oSkin[p].className = "";这一句了,会搞不懂这个p代表啥。
    那上面就是把oSkin这个对象存在的属性名赋值给变量P,这里的oSkin是一个HTMLCollection[li, li.current, li],HTMLCollection 对象的行为和只读数组一样,所以可以使用 JavaScript 的方括号,通过编号或名称索引一个 HTMLCollection 对象。

    总结:

    通过设置className类名,实现样式切换。知道设置clasName类名也是一种不错的选择,可以把多个样式单独保存一个文件中,实现代码优化!还是很多可以优化的,现因能力有限,先实现简单的功能,日后再添加其他功能。汗!技术能力严重不足,很多都需要参考源码来了解,不过多多研究原生的JavaScript代码,有益于增加扎实的基础,也是一种实力的。

    别问丧钟为谁而鸣,明天的太阳照常升起。
  • 相关阅读:
    django实例(1)
    django笔记补充
    django笔记
    Docker自学纪实(六)搭建docker私有仓库
    Docker自学纪实(四)搭建LNMP部署wordpress
    Docker自学纪实(三)Docker容器数据持久化
    Docker自学纪实(二)Docker基本操作
    Docker自学纪实(一)Docker介绍
    CentOS 7.4 基于LNMP搭建wordpress
    CentOS7安装配置VSFTP
  • 原文地址:https://www.cnblogs.com/yypbingo/p/6221051.html
Copyright © 2011-2022 走看看