20190711-上午js显示和隐藏

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>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值