JS学习笔记 - fgm练习 - 网页换肤
总结:
1. 点击按钮,div内部变色,边框保持颜色不变。
实现原理:其实本来就把background 和 border 分别设置了同一个颜色,看似是一个整体,其实本来就是分开的。
那么点击的时候,只需要更改background 的颜色。 border 部分不需要设置。
2. for in 循环,遍历数组的用法:
for(var p in oSkin) oSkin[p].className = ""; 等价于下面的代码:
for(var i=0; i<aDiv.length; i++)
{
3. 把要更改的式样分别用外部样式表存起来,只更改引入link的href值。
oLink['href'] = this.id + ".css";
疑问:
1. 更改类名,引发按钮的背景色变化,CSS里要设置 !important 才生效, 原理是?
.active{
background: white!important;
/* 这里设置了important才能生效,原理? */
}
案例写的:
<link href="green.css" rel="stylesheet" type="text/css" />
<script>
window.onload = function ()
{
var oLink = document.getElementsByTagName("link")[0];
var oSkin = document.getElementById("skin").getElementsByTagName("li"); for(var i = 0; i< oSkin.length; i++)
{
oSkin[i].onclick = function ()
{
for(var p in oSkin) oSkin[p].className = "";
this.className = "current";
oLink['href'] = this.id + ".css";
}
} };
</script>
自己做的:
<style>
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}
body{
background-color: #a3c5a8;
}
ul{
margin: 5px auto;
width: 500px;
height: 25px;
display: block;
border: 1px solid white;
background: green;
}
ul li{
list-style: none;
float: left;
width: 83px;
text-align: center;
box-sizing: border-box;
border-right: 1px solid white;
}
ul li:last-child{
border: none;
}
ul li a{
color: white;
text-decoration: none;
font-size: 12px;
line-height: 25px;
}
ul li a:hover{
text-decoration: underline;
}
#outer{
margin: 8px auto;
width: 500px;
}
/* .click_div{
width: 14px;
height: 14px;
display: inline-block;
margin-right: 7px;
} */
#outer div{
margin-right: 7px;
border-width: 4px;
border-style: solid;
width: 6px;
height: 6px;
display: inline-block;
}
/* 选色按钮的构成:background 6px
border 4px *2, 一共14px
每次点击,border颜色不变,设置background颜色变化。 */
#div1{
background-color: red;
border-color: red;
}
#div2{
background-color: green;
border-color: green;
}
#div3{
background-color: black;
border-color: black;
}
.active{
background: white!important;
/* 这里设置了important才能生效,原理? */
}
</style> <script>
window.onload = function()
{
oDivOuter = document.getElementById('outer');
aDiv = oDivOuter.getElementsByTagName('div'); var oBody = document.getElementsByTagName('body')[0]; // 用TagName记得指定是第几个
var oUl = document.getElementsByTagName('ul')[0]; // var btnColor = this.style.backgroundColor; var oBodyColor = ["pink", "#a3c5a8", "#ccc"];
var oUlColor = ["red", "green", "black"] for(i=0; i<aDiv.length; i++)
{
aDiv[i].index = i; aDiv[i].onclick = function()
{
for(var i=0; i<aDiv.length; i++)
{
aDiv[i].className = '';
};
this.className = "active"; // this.style.border = "4px" + btnColor + "solid"; oBody.style.backgroundColor = oBodyColor[this.index];
oUl.style.backgroundColor = oUlColor[this.index];
};
};
};
</script>
</head>
<body>
<div id="outer">
<div id="div1"></div>
<div id="div2" class="active"></div>
<div id="div3"></div>
<ul>
<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><a href="javascript:;">旅游</a></li>
</ul>
</div>
</body>
JS学习笔记 - fgm练习 - 网页换肤的更多相关文章
- JS学习笔记 - fgm练习 2-12- 全选反选 判断CheckBox是否选中 &&运算符
练习地址:http://www.fgm.cc/learn/lesson2/12.html 总结: 1. && 运算符,从左向右依次执行,如果遇到 false,就不再继续执行后面的语句 ...
- JS学习笔记 - fgm练习 2-11- 改变图片路径 var img = new Image(); 图片预加载
<style> *{ margin: 0;padding: 0; list-style: none; } body{ background: black; } .outer{ margin ...
- JS学习笔记 - fgm练习 2-5 - 函数传参 设置div样式
练习地址:http://www.fgm.cc/learn/lesson2/05.html <script> window.onload = function(){ var oDiv = d ...
- JS学习笔记 - fgm练习 - 鼠标移入/移出div样式改变
思路: div的默认样式正常设置. 鼠标移入时,发生改变的样式有3个,即 边框颜色,div背景色,字体颜色. 把这三个css改变设置在一个类名下,再通过js给div动态 添加/去除这个类名,实现div ...
- JS学习笔记 - fgm练习 - 数字自增 定时器 数字比大小Math.max
<script> window.onload = function(){ var oP = document.getElementsByTagName('p')[0]; var i = 0 ...
- JS学习笔记 - fgm练习 - 限制输入框的字符类型 正则 和 || 或运算符的运用 i++和++i
<script> window.onload = function(){ var aInp = document.getElementsByTagName('input'); var oS ...
- JS学习笔记 - fgm练习 - 输入数字求和 正则replace onkeyup事件
<style> body{font-size: 12px;} .outer{ width: 500px; margin: 0 auto; } span{ color: #999; } in ...
- JS学习笔记 - fgm练习 - 输入法下拉框 三元表达式
<script> window.onload = function() { var oBtn = document.getElementsByTagName('input')[0]; va ...
- JS学习笔记 - fgm练习 - 多按钮控制同个div属性
总结: 1. 注意body里的结构安排,全部装在大div,避免多次设置不同部分居中. 2. 一排按钮居中:装在大div里,text-align: center; 3. 把相同的部分封装成函数,即 同个 ...
随机推荐
- Webhook
Webhook就是用户通过自定义回调函数的方式来改变Web应用的一种行为,这些回调函数可以由不是该Web应用官方的第三方用户或者开发人员来维护,修改.通过Webhook,你可以自定义一些行为通知到指定 ...
- 华为OJ平台试题 ——数组:整形数组合并
代码: /* * 将两个整型数组依照升序合并,而且过滤掉反复数组元素 */ #include <stdio.h> #define N 256 #define M 512 /* * 合并数组 ...
- C++模板类代码只能写在头文件?
这个问题,实际上我几年前就遇到了.最近写个模板类玩的时候,再次遇到. 当我非常仔细的将定义和实现分开,在头文件中保留了最少的依赖后,一切就绪.cpp单独编过.但是当使用的时候,就会报告所有的函 ...
- js--11对象的创建方式
<html> <head> <title>Object</title> </head> <body> <script ty ...
- js---11闭包
//匿名立即调用函数 (function(){//把a,b,f全部隐藏在函数中,外部访问不到, var a = 5; var b = 6; function f(){ alert(a); } wind ...
- js插件---10个免费开源的JS音乐播放器插件
js插件---10个免费开源的JS音乐播放器插件 一.总结 一句话总结:各种插件都有很多,多去找. 二.js插件---10个免费开源的JS音乐播放器插件 亲测可用 音乐播放器在网页设计中有时候会用到, ...
- JS --- 延迟加载的几种方式
标题:JS延迟加载,也就是等页面加载完成之后再加载 JavaScript 文件. JS延迟加载有助于提高页面加载速度. 1. defer 属性 HTML 4.01 为 <script>标 ...
- 1.STL list
初始化一个链表 list<,,,, }; 链表排序 mylist.sort(); 链表反转 mylist.reverse(); 链表删除头部和尾部 mylist.pop_back();//删除尾 ...
- jq实现回车键执行方法
$(function(){ $(document).keypress(function (e){ if(e.keyCode == 13){ //执行你想执行的方法,keyCode代表不同的按键 } } ...
- Java证书通信
一.概念介绍: 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击.其重点在于数据的安全性.身份认证是用来判断某个身份的真实性 ...