美文网首页
Day13(scroll 家族,JSON,demo固定菜单栏,点

Day13(scroll 家族,JSON,demo固定菜单栏,点

作者: AnnQi | 来源:发表于2017-09-26 21:11 被阅读0次

Offset ‘自己的’的意思

1、offsetWidth 自己的宽度 offsetHeight 自己的高度;

width+padding+border;
div width=200px;border=3px;padding-right=15px;
div offsetWidth=200+6+15=221;
offsetWidth和div.style.width的区别
div.style.width获取到的是字符串,并且可以进行修改

2、offsetWidth获取到的是数值类型,只能获取,不能修改;

offsetLeft 获取div距离最近的带有定位的父级,相当于是左边距;

3、offsetParent 返回自己的父亲元素(带有定位的);

如果所有父级都没有定位,则返回body
和parentnNode区别,parentNode返回父亲,不管是否带有定位;

4、event事件

div.onclick=function(event){},这个envent就是它点击的时候,浏览器所执行的所有事件;
pageX、pageY 距离文档的X轴距离
clientXc、clientY 距离浏览器可见区域的X轴距离;
screenX、screenY 距离屏幕。超出了浏览器;

Scroll 家族

Offset家族 自己的
Scroll 滚动家族
scrollTop 被卷去的头部
它就是当你滑轮滚动浏览网页隐藏在屏幕上方的距离
页面滚动事件:

Window.onscroll=function(){执行语句};

谷歌浏览器,以及:没有声明DTD(<!DOCTYPE html>)的浏览器(怪异模式):

document.body.scrollTop;//仅限谷歌以及怪异模式浏览器、

火狐以及其他浏览器:

document.documentElement.scrollTop;

iE9以上++++++++++++++++++:

var scrollTop=document.body.scrollTop ||
document.documentElement.scrollTop ||
window.pageYOffset;   //兼容性写法

JSON ***********************************************

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,我们称之为javascript对象表示法,使用json进行传输数据是很常用的
Json就是javascript
Json其实很像我们学过的CSS条
var myjson={k:v,k:v,k:v…..} json用键值对的方法表示 key:value

封装自己的scroll;

scrollTo(x,y)

使当前页面跳转到(x,y)这个坐标
window.scrollTo(0,500);
格式:window.scroll(Xpos,Ypos);
两个值一个都不能省略,不想跳给个0都行,就是不能少
Xpos 必须,想要跳转的X轴的位置
Ypos 必须,想要跳转的Y轴的位置
Xpos一般用不上,给个0就行,因为一般大部分网页水平滚动条是不让出现的

demo 固定缓动菜单栏

<style>
        *{
            margin: 0;
            padding: 0;
        }
        img{
            position: absolute;
            left: 0;
            top: 100px;
        }
        .cur{
            height: 3000px;
        }

    </style>

![](images/aside.jpg)
<div class="cur"></div>
<script src="JavaScript/base.js"></script>
<script>
    var img = document.getElementById("img");
    var timer = null;
    var leader = 0, target = 0;
    window.onscroll = function(){
        clearInterval(timer);
        target = scroll().top + 100;
        timer = setInterval(function(){
            leader = leader + (target - leader) /10;
            img.style.top = leader + "px";
        },50)
    }
</script>

demo 点击缓动规定位置

<style>
        *{
            margin: 0;
            padding: 0;
        }
        html,body{
            width: 100%;
            height: 100%;
        }
        .box{
            position: fixed;
            top: 0;
            left: 100px;
        }
        .box div{
            width: 50px;
            height: 50px;
            border: 1px solid yellow;
            cursor: pointer;
        }
        .box .tp{
           border-top: none;
        }
        .one,.b1{
            background: pink;
        }
        .two,.b2{
            background: cornflowerblue;
        }
        .three,.b3{
            background: cyan;
        }
        .four,.b4{
            background: cornsilk;
        }
        .five,.b5{
            background: orchid;
        }
        .cur{
            width: 100%;
            height: 100%;
        }
        .cur div{
            font-size: 30px;
            width: 100%;
            height: 100%;
        }

    </style>
<div class="box" id="box">
    <div class="one" >首页</div>
    <div class="two tp" >商城</div>
    <div class="three tp" >关于</div>
    <div class="four tp" >我的</div>
    <div class="five tp">收藏</div>
</div>
<div class="cur" id="cur">
    <div class="a b1">首页</div>
    <div class="a b2">商城</div>
    <div class="a b3">关于</div>
    <div class="a b4">我的</div>
    <div class="a b5">收藏</div>
</div>
<script>

    function $(id){    // 获取 id
           return document.getElementById(id);
     }
    var box = document.getElementById("box");
    var cur = document.getElementById("cur");
    var divs = box.getElementsByTagName("div");
    var divs2 = cur.getElementsByTagName("div");
    var timer = null;
    var leader = 0,target = 0;

    for(var i = 0;i<divs.length;i++){
        divs[i].index = i;  //通过创建index属性,赋予每一个 divs 一个索引号
        divs[i].onclick = function(){
            clearInterval(timer);
            target = divs2[this.index].offsetTop; //通过索引值,获取 divs2 的offsetTop
            timer=setInterval(function(){
                leader=leader+(target-leader)/10;
                window.scrollTo(0,leader);//屏幕滑动
                if(Math.round(leader)==target){//当启始值等于目标值,就表示到达目的了,就清除计时器
                    clearInterval(timer);
                }
            },30);
        }
    }

</script>

相关文章

网友评论

      本文标题:Day13(scroll 家族,JSON,demo固定菜单栏,点

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