一、offset系列属性

   <div id="dv"></div>
<!-- 已在style标签里设置div宽高各100px -->
<script>
//在style标签里面的样式属性无法获取,但是在style属性中设置的样式可以获取
console.log(document.getElementById("dv").style.width);//为空---无法获取 //所以引出了offset系列,总共有四个属性如下:
//1.可以通过offsetWidth获取元素的宽(带边框)
console.log(document.getElementById("dv").offsetWidth);//100 //2.可以通过offsetHeight获取元素的高(带边框)
console.log(document.getElementById("dv").offsetHeight);//100 //3.可以通过offsetLeft获取元素距离左边的值
//注意:
//没有脱离文档流,值=父级元素的margin和padding和border+自己的margin
//脱离文档流,值=自己的left+自己的margin
console.log(document.getElementById("dv").offsetLeft);//8---没有清除边距 //4.可以通过offsetLeft获取元素距离上边的值
console.log(document.getElementById("dv").offsetTop);//8---没有清除边距
//注意:
//没有脱离文档流,值=父级元素的margin和padding和border+自己的margin
//脱离文档流,值=自己的left+自己的margin
</script>

二、scroll系列属性

  • 获取和封装

    <div id="dv"></div>
<!-- 已在style标签里设置div宽高各100px -->
<script>
//scrollWidth:获取元素实际内容的宽(不带边框),如果元素里面没有内容,就是元素的宽
console.log(document.getElementById("dv").scrollWidth);//100
//scrollHeight:获取元素中内容的实际高度(不带边框),如果元素里面没有内容或者内容高度没有超过元素的高就是元素的高,超过以后就是内容的高度
console.log(document.getElementById("dv").scrollHeight);//100
//scrollTop:获取向上卷曲的距离-----当出现滚动条时
console.log(document.getElementById("dv").scrollTop);//0
//scrollLeft:获取向上卷曲的距离------当出现滚动条时
console.log(document.getElementById("dv").scrollLeft);//0
</script>
    <script>
//封装函数:实时获取向左卷曲的距离和向上卷曲的距离
function getScroll(){
return {
left:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0,
top:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0
}
}
//浏览器的滚动事件-----需要设置高度出现滚动条,然后滚动鼠标才会触发
window.onscroll=function(){
console.log(getScroll().top);
}
</script>
  • 案例:固定导航栏案例

<!--  固定导航栏案例-->
<div id="nav">设置了宽度100%,高度50px,红色背景</div>
<div id="navbar">设置了宽度100%,高度10px,黄色背景</div>
<div id="main">设置了宽度100%,高度1000px,蓝色背景</div>
<script>
//效果预期:拖动滚动条,让黄色导航栏始终在屏幕的上面
//获取卷曲部分距离
function getScroll(){
return {
left:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0,
top:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0
}
}
//注册滚动事件
window.onscroll=function(){
//如果卷曲部分距离大于等于红色部分的高度
if(getScroll().top>=document.getElementById("nav").offsetHeight){
//黄色部分应该设置固定定位在顶部
document.getElementById("navbar").style.position="fixed";
document.getElementById("navbar").style.left="0";
document.getElementById("navbar").style.top="0";
//蓝色部分的外边距应该=黄色部分额高度
document.getElementById("main").style.marginTop=document.getElementById("nav").offsetHeight+"px";
}else{//如果卷曲部分距离小于红色部分的高度,一切恢复
document.getElementById("navbar").style.position="";
document.getElementById("main").style.marginTop="";
}
}
</script>

三、client系列属性

<div id="dv">设置了宽高各500px,10px边框</div>
<script>
//clientWidth:获取可视区域的宽(没有边框)
console.log(document.getElementById("dv").clientWidth);//500
//clientHeight:获取可视区域的高(没有边框)
console.log(document.getElementById("dv").clientHeight);//500
//clientLeft:获取左边边框的宽度
console.log(document.getElementById("dv").clientLeft);//10
//clientTop:获取上边边框的宽度
console.log(document.getElementById("dv").clientTop);//10
</script>

系列属性(offset、scroll、client)的更多相关文章

  1. JavaScript 特效之四大家族(offset/scroll/client/event)

      三大系列:offset.scroll.client 事件对象:event(事件被触动时,鼠标和键盘的状态)(通过属性控制)   三大系列都是以DOM元素节点的属性形式存在的. 类比访问关系,也是以 ...

  2. offset,scroll,client系列

    offsetHeight: 元素高,height+border+paddingoffsetWidth: 元素宽,width+border+paddingoffsetTop: 距离offsetParen ...

  3. offset / scroll / client Left / Top

    1.offsetHeight / Width (只读) offsetHeight:表示该元素在垂直方向占用的空间大小,包含元素的高度+上边框高度+下边框高度 offsetWidth:表示该元素在水平方 ...

  4. 三大家族,offset,scroll,client

    1.client 1.1主要成员 1.clientWidth 获取网页可视区域宽度(两种用法)    clientHeight 获取网页可视区域高度 (两张用法) 盒子调用: 指盒子本省 浏览器调用: ...

  5. JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动

    一.计时器 setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复) setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行 ...

  6. offset、client、scroll开头的属性归纳总结

    HTML元素有几个offset.client.scroll开头的属性,总是让人摸不着头脑.在书中看到记下来,分享给需要的小伙伴.主要是以下几个属性: 第一组:offsetWidth,offsetHei ...

  7. javascript中常用坐标属性offset、scroll、client

    原文:javascript中常用坐标属性offset.scroll.client 今天在学习js的时候觉得这个问题比较容易搞混,所以自己画了一个简单的图,并且用js控制台里面输出测试了下,便于理解. ...

  8. DOM盒模型和位置 client offset scroll 和滚动的关系

    DOM盒模型和位置 client offset scroll 和滚动的关系 概览 在dom里面有几个描述盒子位置信息的值, pading border margin width height clie ...

  9. js offset系列属性

    offsetParent:返回该元素有定位的父级,如果父级都没有定位则返回body offsetTop:返回元素相对父级(带有定位的父级)上方的偏移 offsetLeft:返回元素相对父级(带有定位的 ...

随机推荐

  1. Oracle和SQL Server 用当前日期减去 '0001-01-01' 得出的天数不一致,相差2天,谁知道原因?

    Oracle和SQL Server 用当前日期减去 '0001-01-01' 得出的天数不一致,相差2天.求大佬科普

  2. react实现提示消息容器,可以动态添加,删除内部子提示消息

    import React, { useState, useRef, useEffect } from 'react' import PropTypes from 'prop-types' import ...

  3. oracle给用户授权存储过程

    https://www.jianshu.com/p/fab356d68ae2 grant connect,resource to xinomonitor; 发现不能进行断点调试,然后授如下权限 gra ...

  4. asp.net后台或前端获取TemplateField绑定的文本

    GridView中使用最多的一个是BoundField,还有一个是TemplateField 这两个各有其特点,BoundField的话比较简单,设置好DataField.HeaderText等就可以 ...

  5. vue基础部分

    一 vue概念 是一个构建用户界面的javascript框架 二 如何使用vue 1. 导入vue.js文件 2. 展示HTML 3. 建立vue对象,写JavaScript代码 vue的简单实用:申 ...

  6. 用python代码编写象棋界面,棋盘覆盖问题

    编写象棋界面 import turtle t=turtle.Pen() t.speed(100) def angle(x,y): t.penup() t.goto(x+3,y+3) t.pendown ...

  7. cdh的web管理界面503

    503 Service Unavailable No server is available to handle this request.       重启 agent  以及 server   

  8. centos8 安装 mongodb 4.2 (使用yum)

    1.制作 repo 文件 参考 mongodb 官方的安装文档,使用下面的脚本制作Yum库安装mongodb4.2,但安装过程提示 "Failed to synchronize cache ...

  9. windows和linux下的spice客户端使用方法

    1.Linux客户端 安装spice yum install virt-viewer 连接远程虚拟机 #remote-viewer spice://IP:PORTremote-viewer spice ...

  10. 安装腾讯QQ问题记录

    安装腾讯QQ的时候遇到两个错误,记录一些解决方法 1.安装文件失败,请尝试手动卸载QQ或更改安装目录,再执行安装程序,错误码:0x00008013 问题原因:卸载QQ没有完全卸载,导致文件残留. 如果 ...