zoukankan      html  css  js  c++  java
  • 计时器中qq上的一个功能,延时作用

    在qq主页面板上的最上方有自己的用户名,往用户名上移动会出现一个大框,往大框中移动,大框不会消失,如果离开大框或者姓名,大框就会消失,这一功能用到display:none的效果还有就是计时器的延时功能,用到onmoseover;

    onmouseover 属性在鼠标指针移动到元素上时触发。

    注释:onmouseover 属性不适用以下元 素:<base>、<bdo>、<br>、<head>、<html>、<iframe>、<meta>、<param>、<script>、<style> 或 <title>。

    onmoseover的相反是onmouseout;

    且看如下代码:

    HTML代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>javascript二级联动</title>
        <style type="text/css">
            #block1{              
                 40px;
                height: 40px;
                background: red;
                float: left;
            }
            #block2{
                 240px;
                height: 240px;
                background: gray;
                float: left;
                margin-left: 5px;
            }
        </style>
    </head>
    <body>
    <div id = "block1"></div>
    <div id = "block2"></div>
    </body>
    </html>
    

     javascript代码如下:

    var block1 = document.getElementById("block1");
    var block2 = document.getElementById("block2");
    block1.onmouseover = function(){
       block2.style.display = 'block';
    }
    

     这一步实现的是将鼠标移到block1的时候block2出现;但是鼠标离开block1,block2仍然出现,我们需要将block2消失,则需要用到onmoseout来操作,如下:

    block1.onmouseout = function(){
        block2.style.display = 'none';
    }
    

     但是,这个效果还是有欠缺,因为从block1移动到block2的时候无法选中block2,而是很快的消失了,那么,我们需要一个延时来让block2慢点消失,给他一个setTimeout,并且500毫秒,因为setTimeout会有一个返回值,所以在之前设置一个var timer = null;一开始timer不知道要赋值什么,所以为null,再在下面的程序中将值付给timer,如下:

    block1.onmouseout = function(){
       timer = setTimeout("block2.style.display = 'none'",1000);
    }
    

     移到block2时需要block2一直显示,并且,之前block1的延时取消none这个延时的动作,所以如下代码:

    block2.onmouseover = function(){
        clearTimeout(timer);
        block2.style.display = 'block';
    }
    

     那么block2移除鼠标时会怎么样呢?我们希望移除block2会消失,并且,移到block1的时候依然为显示,所以这边也需要一个延时,然后在block鼠标以上去的时候清除定时器的延时,这样block2移到block1上时不会出现消失了。如下代码

    block2.onmouseout = function(){
           time = setTimeout(" block2.style.display = 'none'",1000);
    }
    

     javascript总的代码如下:

    var block1 = document.getElementById("block1");
    var block2 = document.getElementById("block2");
    var timer = null;
    block1.onmouseover = function(){
        block2.style.display = 'block';
        clearTimeout(time);
    }
    block1.onmouseout = function(){
       timer = setTimeout("block2.style.display = 'none'",1000);
    }
    block2.onmouseover = function(){
        clearTimeout(timer);
        block2.style.display = 'block';
    }
    block2.onmouseout = function(){
        timer = setTimeout(" block2.style.display = 'none'",1000);   
    }
    

    block1.onmuseout与 block1.onmouseout一样,所以整合后为:

    var block1 = document.getElementById("block1");
    var block2 = document.getElementById("block2");
    var timer = null;
    block1.onmouseover = function(){
        block2.style.display = 'block';
        clearTimeout(time);
    }
    block2.onmouseout = block1.onmouseout = function(){
       timer = setTimeout("block2.style.display = 'none'",1000);
    }
    block2.onmouseover = function(){
        clearTimeout(timer);
        block2.style.display = 'block';
    }
    

    将javascript代码保存,在HTML中设置一个路径即可;

  • 相关阅读:
    jquery效果,多个div,点击任何一个div,那么这个div会切换文字,变换背景颜色,再次点击其他的div ,这个div会发生刚才的变化,之前点击的div的颜色会变回来
    用js动态的改变img标签里面的src属性实现图片的循环切换
    清除浮动
    清除浮动clearfix
    转移符 个人工作中使用记录一下
    12.Django数据库操作(执行原生SQL)
    11.Django数据库操作(查)
    10.Django数据库操作(增删改)
    9.Django里的数据同步migrations命令
    8.Django模型类例子
  • 原文地址:https://www.cnblogs.com/shenq/p/4355861.html
Copyright © 2011-2022 走看看