pc端网页特效

pc端网页特效

offset系列概述

简介

offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到元素的位移、大小等

  • 获取元素距离带有父级元素的位置
  • 获取元素自身大小(宽度高度)
  • 注意:返回数值不带单位
offset系列相关属性
offset系列属性 作用
element.offsetParent 返回作为该元素带有父级元素 如果父级都没有定位则返回body
element.offsetTop 返回元素相对带有定位父元素的上方的位移
element.offsetLeft 返回元素相对带有定位父元素左边框的位移
element.offsetWidth 返回自身包括padding、边框、内容区的宽度,返回的数值不带有单位
element.offsetHeigth 返回自身包括padding、边框、内容区的高度,返回值不带单位
offset与style区别
  1. offset可以得到内部样式的宽度,高度属性,而style只能得到行内样式的宽度高度
  2. offset系列获得的数值没有单位,style返回的是带有单位的字符串
  3. offset返回的数值包括内边距、外边距,而style只返回内容宽高
  4. offset的属性只能读取,style的属性可读可写
  5. 所以offset获取大小比较好,style修改样式比较好
案例1:获取鼠标在盒子点击的坐标
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        div {
            width: 500px;
            height: 500px;
            background-color: coral;
            position: fixed;
            left: 30%;
            top: 30%;
        }
    </style>
</head>
<body>
    <div></div>

    <script>
        var div = document.querySelector('div')

        div.addEventListener('click', function(e) {
            console.log(e.pageX-div.offsetLeft)
            console.log(e.pageY-div.offsetTop)
        })
    </script>
</body>
</html>
案例2:鼠标拖动盒子
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            border: 0;
            margin: 0;
        }

        .link {
            position: absolute;
            left: 40%;
            background-color: cyan;
        }

        #bg {
            display: none;
            z-index: 1;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, .4);
        }

        .nav {
            text-align: center;
            line-height: 60px;
            font-size: 20px;
            width: 100%;
            height: 60px;
            border-bottom: 2px solid black;
            /*background-color: red;*/

        }

        .login {
            display: none;
            background-color: white;
            z-index: 5;
            position: fixed;
            border: 2px solid black;
            width: 500px;
            height: 300px;
            top: 50%;
            left: 50%;
            margin: -150px 0 0 -250px;
            /*background-color: darkblue;*/
        }

        form > div {
            width: 100%;
            height: 25px;

            font-size: 19px;
            line-height: 25px;
            margin-top: 40px;
            text-align: center;
        }

        input {
            outline: none;

            padding: 0 4px;
            font-size: 18px;

            border: 1px solid;
            border-color: darkgrey;
        }

        #submit {
            position: relative;
        }

        #username {
            padding-left: 9px;
        }

        #username > input {
            width: 300px;
            height: 35px;
        }

        #password > input {
            width: 300px;
            height: 35px;
        }

        #submit > input {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 200px;
            height: 30px;
            margin: -15px 0 0 -100px;
        }
    </style>
</head>
<body>
    <div class="link"><a href="#">点我,立即登录</a></div>
    <div class="login">
        <div class="nav">登录信息</div>

        <form action="1111.html" method="get">
            <div id="username">用户名:&nbsp; <input type="text" placeholder="请输入用户名" name="dd"></div>
            <div id="password">登录密码:&nbsp; <input type="password" placeholder="请输入登录密码" name="ddd"></div>
            <div id="submit"><input type="submit" value="登录信息"></div>
        </form>
    </div>
    <!--覆盖层-->
    <div id="bg"></div>

    <script>

        var link = document.querySelector('.link');
        link.addEventListener('click', function () {
            bg = document.querySelector('#bg')
            login = document.querySelector('.login')
            bg.style.display = 'block';
            login.style.display = 'block';
        })

        var nav = document.querySelector('.nav')
        nav.addEventListener('mousedown', function (e) {

            var x = e.pageX - login.offsetLeft;
            var y = e.pageY - login.offsetTop;
            document.addEventListener('mousemove', move)

            function move(e) {
                nav.style.cursor = 'move'
                login.style.left = (e.pageX - x + 250) + 'px';
                login.style.top = (e.pageY - y + 150) + 'px';

            }

            document.addEventListener('mouseup', function () {
                document.removeEventListener('mousemove', move)
                nav.style.cursor = 'unset'
            })
        })


    </script>
</body>
</html>
案例3:京东查看图片案例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .yuan {
            position: relative;
            width: 600px;
            height: 600px;
            overflow: hidden;

        }

        .huang {
            display: none;
            z-index: 4;
            position: absolute;
            width: 400px;
            height: 400px;
            background-color: rgba(168, 187, 33, .5);
        }

        .yuan > img {
            width: 100%;
            height: 100%;
        }
        .bian > img {
            position: absolute;
            width: 1000px;
            height: 1000px;
        }
        .bian {
            position: relative;
            overflow: hidden;
            display: none;
            float: left;
            width: 700px;
            height: 700px;
            border: 2px solid black;
        }
    </style>
</head>
<body>
<div class="yuan">
    <div class="huang"></div>
    <img src="image/1.png" alt=""></div>
<div class="bian"><img src="image/1.png" alt="" id="d"></div>
<script>
    var huang = document.querySelector('.huang')
    var yuan = document.querySelector('.yuan')
    var bian = document.querySelector('.bian')
    var big = document.querySelector('#d')
    yuan.addEventListener('mouseover', function () {
        yuan.style.cursor = 'move'
        huang.style.display = 'block'
        bian.style.display = 'block'
    })
    yuan.addEventListener('mouseout', function () {
        yuan.style.cursor = 'unset'
        huang.style.display = 'none'
        bian.style.display = 'none'
    })
    yuan.addEventListener('mousemove', function (e) {
        var x = e.pageX - this.offsetLeft;
        var y = e.pageY - this.offsetTop;
        var temp = 0;
        if (x >= 400) {
            temp = 400 - 200;
        } else if (x <= 200) {
            temp = 0 ;
        } else {
            temp = x - 200;
        }
        huang.style.left = temp+'px'
        big.style.left = -1.5*temp+'px'
        if (y >= 400) {
            temp = 400 - 200 ;
        } else if (y <= 200) {
            temp = 0 ;
        } else {
            temp = y - 200;
        }
        huang.style.top = temp+'px'
        big.style.top = -1.5*temp+'px'
    })
</script>
</body>
</html>

元素可视区client系列

简介
  • client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息,通过client系列的相关属性可以动态的得到该元素的边框大小,元素大小等
client相关属性
client系列属性 作用
element.clientTop 返回元素上边框的大小
element.clientLetf 返回元素左边框的大小
element.clientWidth 返回自身包括padding,内容宽度,不含边框,返回数值不带单位
element.clientHeigth 返回自身包含padding,内容高度,不含边框,返回数值不带单位

立刻执行函数

  • 相当于匿名函数
写法
  1. (function(形参){})(实参);
  2. (function(形参){}(实参));

元素scroll系列属性

简介
  • scroll翻译过来就是滚动,我们使用scroll系列的相关属性可以动态的得到该元素的大小,滚动距离等
scroll系列属性 作用
element.scrollTop 返回被卷去的上侧距离,返回数值不带单位
element.scrollLeft 返回被卷去的左侧距离,返回数值不带单位
element.scrollWidth 返回自身实际的宽度,不含边框,返回数值不带单位
element.scrollHeigth 返回自身实际的身高,不含边框,返回数值不带单位

posted @ 2021-11-01 23:56  老彡  阅读(67)  评论(0编辑  收藏  举报