zoukankan      html  css  js  c++  java
  • JS事件对象,筋斗云导航练习,跟随鼠标练习,放大镜练习,进度条练习

    JS事件对象,筋斗云导航练习,跟随鼠标练习,放大镜练习,进度条练习

    • btn.onclick = function(event) { 语句 } 其中event就是事件对象,在这个方法中指向的对象是onclick事件
    • 普通浏览器支持event,也就是以上的写法;蛋疼的ie678支持window.event
    • 所以有了兼容写法如下:
    var event = event || window.event;
    

    本节重点 - 事件的属性

    1.筋斗云导航练习

    • 效果图

    • HTML
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>筋斗云导航栏</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            body {
                background: #eeeeee;
            }
            .nav {
                 880px;
                height: 42px;
                background: #ffffff url("0404Images/rss.png") no-repeat right center;
                margin: 100px auto;
                border-radius: 5px;
                position: relative;
            }
            .cloud {
                background: url("0404Images/cloud.gif") no-repeat center;
                 83px;
                height: 42px;
                position: absolute;
                top: 0;
                left: 0;
            }
            .nav ul {
                list-style: none;
                position: absolute;
            }
            .nav ul li {
                 83px;
                height: 42px;
                float: left;
                text-align: center;
                line-height: 42px;
                cursor: pointer;
            }
        </style>
    </head>
    <body>
        <div class="nav" id="navJS">
            <p class="cloud"></p>
            <ul>
                <li>首页新闻</li>
                <li>师资力量</li>
                <li>活动策划</li>
                <li>企业文化</li>
                <li>招聘信息</li>
                <li>公司简介</li>
                <li>上海校区</li>
                <li>广州校区</li>
            </ul>
        </div>
    </body>
    </html>
    
    • JavaScript
    <script>
        window.onload = function () {
            var nav = document.getElementById("navJS");
            var cloud = nav.children[0];
            var lis = nav.children[1].children;
            var leader = 0;
            var target = 0;
            var clickLeft = 0;
            for (var i=0;i<lis.length;i++) {
                lis[i].onmouseover = function () {
                    target = this.offsetLeft;
                }
                lis[i].onmouseout = function () {
                    target = clickLeft; // 记录点击的位置
                }
    
                lis[i].onclick = function () {
                    clickLeft = this.offsetLeft;
                }
            }
    
            setInterval(function () {
                leader = leader + (target - leader) / 5;
                cloud.style.left = leader + "px";
            },30);
        }
    </script>
    

    2.跟随鼠标练习

    • 效果图

    • html&JavaScript
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>跟随鼠标</title>
        <style>
            img {
                 80px;
                position: absolute;
                left: 0;
                top: 0;
            }
        </style>
        <script>
            window.onload = function () {
                var img = document.getElementsByTagName("img")[0];
                var leaderX = 0;
                var leaderY = 0;
                var targetX = 0;
                var targetY = 0;
                var timer = null;
                document.onmousemove = function (event) {
    
                    clearInterval(timer);
                    var event = event || window.event;
    
                    targetX = event.clientX;
                    targetY = event.clientY;
    
                    timer =  setInterval(function () {
                        leaderX = leaderX + (targetX - leaderX) / 10;
                        leaderY = leaderY + (targetY - leaderY) / 10;
                        img.style.left = leaderX - img.offsetWidth * 0.5 + "px";
                        img.style.top = leaderY - img.offsetHeight * 0.5 + "px";
                    },30);
                }
            }
        </script>
    </head>
    <body>
    <img src="0404Images/img.jpg" alt="">
    </body>
    </html>
    

    3.放大镜练习 注意事项 - block = none的盒子获取不到宽度

    • 效果图

    • html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>放大镜</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            .box {
                 350px;
                height: 350px;
                border: 1px solid #cccccc;
                margin: 100px;
                position: relative;
            }
            .small {
                 350px;
                height: 350px;
                position: relative;
                overflow: hidden;
            }
            .big {
                border: 1px solid #cccccc;
                 450px;
                height: 450px;
                position: absolute;
                top: 0;
                left: 360px;
                overflow: hidden;
                display: none;
            }
            .big img {
                position: absolute;
                left: 0;
                top: 0;
            }
            .mask {
                 100px;
                height: 100px;
                background-color: rgba(255,255,0,0.4);
                position: absolute;
                top: 0;
                left: 0;
                display: none;
                cursor: move;
            }
    
        </style>
    </head>
    <body>
        <div class="box" id="boxJS">
            <div class="small">
                <img src="0407images/001.jpg" alt="">
                <div class="mask"></div>
            </div>
            <div class="big">
                <img src="0407images/0001.jpg" alt="">
            </div>
        </div>
    </body>
    </html>
    
    • JavaScript
    <script>
        var box = document.getElementById("boxJS");
        var mask = box.children[0].children[1];
        var small = box.children[0];
        var big = box.children[1];
        var bigImg = big.children[0];
    
        // 这里获取到的scale永远是0,big盒子初始状态是block = none,获取不到宽度
        //    var scale = big.offsetWidth / small.offsetWidth;
        small.onmouseover = function () {
            mask.style.display = "block";
            big.style.display = "block";
        }
        small.onmouseout = function () {
            mask.style.display = "none";
            big.style.display = "none";
        }
        small.onmousemove = function (event) {
            var event = event || window.event;
            // 获取坐标
            var x = event.clientX - box.offsetLeft;
            var y = event.clientY - box.offsetTop;
            if (x <= 0 || y <= 0 || x >= box.offsetHeight || y >= box.offsetHeight) {
                mask.style.display = "none";
                return;
            }
            mask.style.left = x - mask.offsetWidth * 0.5 + "px";
            mask.style.top = y - mask.offsetHeight * 0.5 + "px";
    
            // 改变大图坐标
            bigImg.style.left = -x * big.offsetWidth / small.offsetWidth + "px";
            bigImg.style.top = -y * big.offsetWidth / small.offsetWidth + "px";
        }
    </script>
    

    4.进度条练习 注意事项 - 鼠标拖动事件的实现,分为以下三步骤

    // 1.鼠标按下
    bar.onmousedown = function (event) {
      // 2.鼠标移动  注意事件源是整个文档,因为这个是在整个文档内拖动
      document.onmousemove = function (event) { }
    }
    // 3.鼠标抬起   清空鼠标移动事件
    document.onmouseup = function () {
      document.onmousemove = null;
    }
    
    • 效果图

    • html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>拖动进度条</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            .box {
                 400px;
                height: 10px;
                background-color: #cccccc;
                margin: 100px;
                position: relative;
            }
            .bar {
                 10px;
                height: 24px;
                background-color: #fa0;
                position: absolute;
                top: -7px;
                left: 0;
                cursor: pointer;
            }
            .mask {
                position: absolute;
                top: 0;
                left: 0;
                 0;
                height: 100%;
                background-color: #ff0000;
            }
        </style>
    </head>
    <body>
    <div class="box" id="boxJS">
        <div class="bar"></div>
        <div class="mask"></div>
    </div>
    </body>
    </html>
    
    • JavaScript
    <script>
        window.onload = function () {
            var box = document.getElementById("boxJS");
            var bar = box.children[0];
            var mask = box.children[1];
            var leading = 0;
            var ending = box.offsetWidth - bar.offsetWidth;
            bar.onmousedown = function (event) {
                var event = event || window.event;
                var leftVal = event.clientX - this.offsetLeft;
                console.log("leftVal = " + leftVal);
                document.onmousemove = function (event) {
                    var event = event || window.event;
    
                    var move = event.clientX - leftVal;
                    if(move < leading) {
                        move = leading;
                    }
                    if(move > ending) {
                        move = ending;
                    }
                    bar.style.left = move + "px";
                    mask.style.width = move + "px";
                }
            }
            document.onmouseup = function () {
                document.onmousemove = null;
            }
        }
    </script>
    
  • 相关阅读:
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    12.20++对王建民老师的评价+个人期末总结
    12.19
    12.18
    12.17
    12.16
  • 原文地址:https://www.cnblogs.com/gchlcc/p/6688248.html
Copyright © 2011-2022 走看看