一:排他思想
如果有同一组元素,想要某个元素实现某种样式,需要用到排他思想。
- 先将其他元素的这个属性清空(干掉他人)。
- 在这个特殊元素下添加表现(留下自己)。
二:小案例
1.百度换肤,点击相应的图片,背景变成相应的图片。
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>百度换肤</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
body{
background-image: url(../img/BDOne.jpg);
background-repeat: no-repeat;
background-size: cover;
}
.baidu{
overflow: hidden;
margin: 100px auto;
background-color: #FFFFFF;
width: 410px;
padding-top: 3px;
}
.baidu li{
list-style: none;
float: left;
margin: 0 1px;
}
.baidu li img{
width: 100px;
cursor: pointer;
}
</style>
</head>
<body>
<ul class="baidu">
<li><img src="../img/BDOne.jpg" ></li>
<li><img src="../img/BDTwo.jpg" ></li>
<li><img src="../img/BDThree.jpg" ></li>
<li><img src="../img/BDFour.jpg" ></li>
</ul>
<script type="text/javascript">
//1获取元素
var imgs=document.querySelector(".baidu").querySelectorAll("img");
for(var i=0;i<imgs.length;i++){
imgs[i].onclick=function(){
//将这个路径给<body>
document.body.style.backgroundImage='url('+this.src+')';
}
}
</script>
</body>
</html>
效果:
2.表格换行变色
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>表格隔行变色</title>
<style type="text/css">
table{
margin: 100px auto;
height: 30px;
text-align: left;
}
table thead{
background-color: skyblue;
}
tbody td{
border-bottom: 1px solid #d7d7d7;
font-size: 12px;
color: blue;
}
.bg{
background-color: rgb(222, 225, 230);
}
</style>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="5px">
<thead>
<tr>
<th>属性名</th>
<th>值</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>color</td>
<td>#ff0000或red或rgb(3,5,8)</td>
<td>给文本设置颜色</td>
</tr>
<tr>
<td>text-align</td>
<td>left,right,center</td>
<td>文本水平对齐方向</td>
</tr>
<tr>
<td>text-decoration</td>
<td>none,underline,overline,line-through</td>
<td>文本修饰线</td>
</tr>
<tr>
<td>text-transform</td>
<td>capitalize,uppercase,lowercase</td>
<td>大小写转换,首字母大写</td>
</tr>
<tr>
<td>line-height</td>
<td>固定值或百分比</td>
<td>文字行高</td>
</tr>
<tr>
<td>text-indent</td>
<td>px,em</td>
<td>文本首行缩进</td>
</tr>
<tr>
<td>letter-spacing</td>
<td>px</td>
<td>字符间距</td>
</tr>
<tr>
<td>word-spacing</td>
<td>px</td>
<td>单词间距</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
//1.获取元素
var trs=document.querySelector("tbody").querySelectorAll("tr");
//利用循环注册事件
for(var i=0;i<trs.length;i++){
//鼠标经过事件
trs[i].onmouseover=function(){
this.className="bg";
}
trs[i].onmouseout=function(){
this.className="";
}
}
</script>
</body>
</html>
效果:
3.表单的全选取消
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>表单全选取消全选</title>
<style type="text/css">
table{
margin: 100px auto;
height: 30px;
width: 320px;
}
thead th{
background-color: skyblue;
border: 1px solid #d7d7d7;
}
tbody td{
font-size: 12px;
border: 1px solid #d7d7d7;
}
.bg{
background-color: rgb(222, 225, 230);
}
</style>
</head>
<body>
<table cellspacing="0" cellpadding="">
<thead>
<tr>
<th>
<input type="checkbox" id="j_cbAll"/>
</th>
<th>商品</th>
<th>价格</th>
</tr>
</thead>
<tbody id="j_tb">
<tr>
<td><input type="checkbox" /></td>
<td>iPhone8</td>
<td>8000</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>iPad Pro</td>
<td>5000</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>iPad Air</td>
<td>2000</td>
</tr>
<tr>
<td><input type="checkbox" /></td>
<td>Apple Watch</td>
<td>2000</td>
</tr>
</tbody>
</table>
<script>
//1.获取事件源
var trs=document.querySelector("tbody").querySelectorAll("tr");
var j_cbAll=document.getElementById("j_cbAll");//全选按钮
var j_tb=document.getElementById("j_tb").getElementsByTagName('input');//下面所有的复选框
console.log(j_cbAll);
//2.注册事件,处理程序
for(var i=0;i<trs.length;i++){
//鼠标经过事件
trs[i].onmouseover=function(){
this.className="bg";
}
trs[i].onmouseout=function(){
this.className="";
}
}
//2.注册事件处理程序:全选和取消全选
j_cbAll.onclick=function(){
for(var j=0;j<j_tb.length;j++){
j_tb[j].checked=this.checked;
}
}
//2.注册事件处理程序:下面影响上面的
for (var i = 0; i < j_tb.length; i++) {
j_tb[i].onclick=function(){
//每次点击循环检查4个按钮是否都选中
//控制全选按钮是否选中
var flag=true;
for (var i = 0; i < j_tb.length; i++) {
if(!j_tb[i].checked){
flag=false;
break;//提高执行效率
}
}
j_cbAll.checked=flag;
}
}
</script>
</body>
</html>
效果: