20190711-上午js显示和隐藏
——Javee
昨天晚上心血来潮,做了一个动态轮播图片的效果,可控制左右轮播,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
#window{
width: 1000px;
height: 300px;
padding: 25px 0 25px 0;
background-color: black;
margin: 30px auto;
box-sizing: border-box;
position: relative;
overflow: hidden;
}
#background{
width: 3600px;
position: absolute;
}
#background>img{
width: 400px;
height: 250px;
float: left;
}
#btndiv{
width: 200px;
margin: 50px auto 0;
}
button{
padding: 20px;
font-size: 20px;
}
</style>
</head>
<body>
<div id="btndiv">
<button onclick="index=-1;">向左</button>
<button onclick="index=1;">向右</button>
</div>
<div id="window" onmouseover="stop();" onmouseout="move();">
<div id="background" style="left: -1200px;">
<img src="img/1.jpg" />
<img src="img/2.jpg" />
<img src="img/3.jpg" />
<img src="img/1.jpg" />
<img src="img/2.jpg" />
<img src="img/3.jpg" />
<img src="img/1.jpg" />
<img src="img/2.jpg" />
<img src="img/3.jpg" />
</div>
</div>
<script>
index = -1;
function move(){
var node = document.querySelector("#background");
var left = parseInt(node.style.left);
if(index == -1 && Math.abs(left) >= 2400) left = -1200;
if(index == 1 && Math.abs(left) <= 0) left = -1200;
left += index;
node.style.left = left + "px";
mymove = requestAnimationFrame(move);
}
var mymove = requestAnimationFrame(move);
function stop(){
cancelAnimationFrame(mymove);
}
</script>
</body>
</html>
实现的效果如下图(鼠标放在图片上就会停止,移开继续轮播):
display和visibility的异同点:
visibility属性是隐藏元素但保持元素的浮动位置,而display实际上是设置元素的浮动特征,虽然它们都可以达到隐藏页面元素的目的,但它们的区别在于如何回应正常文档流。
visibility属性:
确定元素显示还是隐藏;
visibility="visible|hidden",visible显示,hidden隐藏。
当visibility被设置为"hidden"的时候,元素虽然被隐藏了,但它仍然占据它原来所在的位置。
display属性:
就有一点不同了。visibility属性是隐藏元素但保持元素的浮动位置,而display实际上是设置元素的浮动特征。
block:
当display被设置为block(块)时,容器中所有的元素将会被当作一个单独的块,就像<DIV>元素一样,它会在那个点被放入到页面中。(实际上你可以设置<span>的display:block,使其可以像<DIV>一样工作。
inline:
将display设置为inline,将使其行为和元素inline一样---即使它是普通的块元素如<DIV>,它也将会被组合成像<span>那样的输出流。
none:
最后是display被设置:none,这时元素实际上就从页面中被移走,它下面所在的元素就会被自动跟上填充。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#dvd1, #dvd2{
width: 300px;
height: 400px;
float: left;
color: white;
font-size: 5em;
text-align: center;
line-height: 400px;
}
#dvd1{
background-color: #0088FF;
}
#dvd2{
background-color: greenyellow;
}
.btn{
padding: 20px;
color: white;
background-color: mediumvioletred;
border: none;
margin-top: 20px;
font-size: 2em;
border-radius: 10px;
cursor: pointer;
text-align: center;
width: 300px;
box-sizing: border-box;
}
#btn{
position: absolute;
top: 400px;
}
</style>
</head>
<body>
<div id="dvd1">11111</div>
<div id="dvd2">22222</div>
<div id="btn" onselectstart="return false"> <!-- 这行代码是禁止div里面的元素被复制 -->
<div onclick="toggle()" class="btn">display控制蓝色区域显示或隐藏</div>
<div onclick="toggle2()" class="btn">visbility控制蓝色区域显示或隐藏</div>
</div>
<script>
function toggle(){
var dvd1 = document.querySelector("#dvd1");
var view = dvd1.style.display;
if(view == "") dvd1.style.display = "none";
else dvd1.style.display = "";
}
function toggle2(){
var dvd1 = document.querySelector("#dvd1");
var view = dvd1.style.visibility;
if(view == "" || view == "visible") dvd1.style.visibility = "hidden";
else dvd1.style.visibility = "visible";
}
</script>
</body>
</html>
树形结构:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
a{
text-decoration: none;
color: black;
}
a:hover{
color: red;
}
h5{
background: url("img/fold.gif") no-repeat;
text-indent: 20px;
}
dt{
background: url("img/fclose.gif") no-repeat;
text-indent: 20px;
margin-bottom: 20px;
}
dd{
background: url("img/doc.gif") no-repeat -17px;
text-indent: 20px;
}
.view > dd{
display: none;
}
</style>
</head>
<body>
<h5 id="title">树形菜单</h5>
<ul>
<dl id="tree1">
<dt><a href="javascrit:;" onclick="toggle('tree1')">文学艺术</a></dt>
<dd>小说散文</dd>
<dd>先锋写作</dd>
<dd>诗词风韵</dd>
</dl>
<dl id="tree2">
<dt><a href="javascrit:;" onclick="toggle('tree2')">贴图专区</a></dt>
<dd>小说散文</dd>
<dd>先锋写作</dd>
<dd>诗词风韵</dd>
</dl>
<dl id="tree3">
<dt><a href="javascrit:;" onclick="toggle('tree3')">房产论坛</a></dt>
<dd>小说散文</dd>
<dd>先锋写作</dd>
<dd>诗词风韵</dd>
</dl>
<dl id="tree4">
<dt><a href="javascrit:;" onclick="toggle('tree4')">娱乐八卦</a></dt>
<dd>小说散文</dd>
<dd>先锋写作</dd>
<dd>诗词风韵</dd>
</dl>
</ul>
<script>
function toggle(dlId){
var node = document.getElementById(dlId);
if(node.className == ""){
node.className = "view";
}else{
node.className = "";
}
}
</script>
</body>
</html>