美文网首页
事件冒泡与事件委托和其他知识点

事件冒泡与事件委托和其他知识点

作者: 苗_a | 来源:发表于2018-12-10 19:07 被阅读13次

    事件冒泡

    就是当一个子元素的事件被触发的时候onclick事件,该事件会从事件源(被点击的子元素)开始逐级向上传播,触发父级元素的点击事件
    <div id="parent" style="background-color: #000;height: 400px;width: 400px" data-id="11">
    <div id="child" style="background-color: #fff;height: 200px;width: 200px" data-id="22"></div>
    </div>

    document.getElementById('parent').onclick=function () {
    console.log(this.getAttribute('data-id'));
    };
    document.getElementById('child').onclick=function (e) {
    console.log(this.getAttribute('data-id'));
    };

    事件委托

    事件委托,首先按字面的意思就能看你出来,是将事件交由别人来执行,再联想到上面讲的事件冒泡,是不是想到了?对啦,其实就是将子元素的事件通过冒泡的形式交由父元素来执行

    置顶菜单

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>06-置顶菜单</title>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
    <script type="text/javascript">
    (function(){(window).scroll(function() {
    var nowTop = (document).scrollTop(); if (nowTop>200) { // 注意是 “,”('.menu').css({
    position:'fixed',
    top:0,
    // 定位 一半
    left:'50%',
    marginLeft:-480,
    })
    ('.menu_pos').show(); }else{('.menu').css({
    // 对原来的样式进行覆盖
    position:'static',
    marginLeft:'auto',
    })
    $('.menu_pos').hide();
    }
    });
    })
    </script>
    <style type="text/css">
    body{margin:0px;}
    .logo_bar{
    width:960px;
    height:200px;
    background-color:#f0f0f0;
    margin:0 auto;
    }
    .menu,.menu_pos{
    width:960px;
    height:50px;
    margin:0 auto;
    background-color:gold;
    text-align:center;
    line-height:50px;
    }
    .menu_pos{
    display:none;
    }
    .down_con{
    width:960px;
    height:1800px;
    margin:0 auto;
    }
    .down_con p{
    margin-top:100px;
    text-align:center;
    }
    .totop{
    width:50px;
    height:50px;
    background:url(images/up.png) center center no-repeat #000;
    border-radius:50%;
    position:fixed;
    right:50px;
    bottom:50px;
    display:none;
    }
    </style>
    </head>
    <body>
    <div class="logo_bar">顶部logo</div>
    <div class="menu">置顶菜单</div>
    <div class="menu_pos"></div>
    <div class="down_con">
    <p style="color:red">网站主内容</p>
    <p>网站主内容</p>
    <p>网站主内容</p>
    <p>网站主内容</p>
    <p>网站主内容</p>
    </div>
    <a href="javascript:;" class="totop"></a>
    </body>
    </html>

    滚动

    元素脱离文档流是其他元素的布局排版不会收到这个元素的影响,就当这个元素不存在
    脱离文档流有三种方式:absolute、float、fixed,这三种也有区别:
    absolute:定位取决于它的父元素有没有定位,如果有那么它就根据定位的父元素定位,如果没有就会一级一级的向上找,直到找到body
    float:它脱离文档流的时候其他元素仍然会当这个元素不存在,但是其他元素盒子中的文本仍然会环绕在这个元素周围
    fixed:以窗口左上角为原点定位,定位之后相对于窗口的位置始终不变

    相关文章

      网友评论

          本文标题:事件冒泡与事件委托和其他知识点

          本文链接:https://www.haomeiwen.com/subject/jkudhqtx.html