约定:1.<meta name="viewport" content="width=device-width">这种标记简称"wdw"="width=device-width"
约定:2.viewport简称vp
约定:3.常用的属性会有“★”标志
都是只读属性!
其中Chrome或FF没通过的属性标记(未实现)
window对象:
1.★innerHeight:文档(网页)显示区的高度,以像素计。(这里的宽度和高度不包括菜单栏、工具栏以及滚动条等的高度)
2.★innerWidth
对于手机浏览器来说,innerWidth计算的是vp宽度,当没有wdw时候,iphone7的默认vp是980px,所以其innerWidth也是980px;而当加上wdw时,innerWidth值会变成375px,这个值就是wdw的值。(我们认为PC浏览器的vp是个不固定的值,它随着网页宽高的变化而1:1地变化,例如网页900*750px,那么浏览器自动把vp变成900*750px,然后在vp中渲染这个网页,再把vp放入浏览器窗口中给用户看。遇到用户浏览器窗口太小不能完全显示时,则加上滚动条;遇到用户浏览器窗口过大时,放大vp宽至浏览器窗口宽度大小,然后把网页渲染进vp,对于那些百分数的元素放大,对于那些绝对单位值的元素不做放大,最后把vp放入浏览器窗口中,这是布局意义上的放大)
另外,在手机上,如果一网页宽大于wdw设置的值,那么vp的width会等于该网页的宽,渲染完成之后,放入浏览器窗口,会加上水平滚动条。
所以总结一下wdw的所有情况:(约定:网页实际宽简称wtw = webpage true width;不存在wdw时vp宽 = 默认值,如980px;手机浏览器窗口 = mbw = mobile browser window)
一定要时刻记得,wdw用来设置vp的宽,但最后不一定相等!
wtw = wdw:网页刚好完全渲染到vp中,然后vp以1:1放到mbw中
wtw > wdw:vp宽将不等于wdw,它会按照wtw宽适当增加,然后以新宽度渲染网页,最后放入mbw中,但是因为mbw的宽比vp小,所以会加上水平滚动条
wtw < wdw:网页完全渲染到vp中,对于那些设置百分数之类属性的元素会占有更多的空间来补满多出的vp宽,而绝对单位的值的那些元素不做任何放大
3.outerHeight:整个浏览器的高度
4.★pageXOffset pageYOffset(对于整个窗口来说,要对于具体某个元素请看DOMElement对象中的有关属性)
screen对象:
1.availHeight:浏览器可用的屏幕高度,不包括底部任务栏
2.availWidth
3.(未实现)deviceXDPI:屏幕的每英寸水平点数
4.(未实现)deviceYDPI
5.height:屏幕的总高度,相对于availHeight来说这个属性包含了任务栏
6.width:其值和availWidth一样
7.colorDepth:色彩深度,即俗称的颜色多少位(24位就是真彩色)
8.pexelDepth:像素深度
9.(未实现)updateInterval屏幕的刷新率
DOMElement对象:
1.★clientHeight:元素的显示高度(包括内边距,不含边框和外边距)
2.★clientWidth:
对于PC浏览器,它对于网页显示都是1:1的,所以clientWidth获取的总是元素实际的宽度,但是手机浏览器实际上是把网页渲染在vp上再放入浏览器的可见区域中,所以你获取的是元素的实际宽度,但事实上显示出来的宽度要小,因为他已经被缩放过了。
有如下案例:(页面只存在一个div元素,宽高都为40px)
对于iphone7默认vp的宽为980px,那么
不加wdw:document.body.clientWidth=980-8*2=974px(这个获取的是vp宽!),这时获取div的clientWidth是40px,这个值是不会变的,因为就是元素本身的宽度,但是手机上显示出来的显示宽度为22px
加上wdw:document.body.clientWidth=375-8*2=359px,说明这个手机的网页窗口显示宽度为375px,这时候的div显示的宽度是40px(你要知道为什么要设置vp == 手机浏览器窗口大小,就是为了不缩放网页)
3.offsetHeight:clientHeight + 边框
4.offsetWidth
5.offsetTop:元素的上外边框至offsetParent的上内边框之间的像素
6.offsetLeft
7.offsetParent:返回该元素最近的定位父元素
前言:对于一个绝对定位元素,如果一直到body(包括body)都没有在它所有父元素中发现定位(绝对和相对)属性,即该元素不存在定位父元素,那么他将会按照浏览器窗口左上角定位。一般body不设置定位属性(绝对、相对和固定),所以对于offsetParent来说如果返回body,那该元素没有定位父元素,实际上对于没有定位父元素的元素其值应该返回null而不是body。
1.fixed定位元素,返回null(但在ff中返回body,这不符合标准),因为它相对于浏览器窗口定位,对于fixed元素获取的offsetTop和offsetLeft其实就是它的top和left值
2.body的offsetParent永远是null(chrome和ff都是null,测试通过),对body获取其offsetTop和offsetLeft获取的值是相对于浏览器窗口左上角定位
3.static元素永远是最近的拥有relative或absolute的父元素,如果父元素都不存在定位则返回body(实际上应该返回null,表示没有定位父元素,要按照浏览器窗口定位,但是chrome和ff都返回body),这时(这里指如果时的情况)该元素的offsetTop和offsetLeft值是相对于浏览器窗口左上角定位而不是根据返回的body元素进行定位,否则如果存在父元素有定位属性,那么offsetTop和offsetLeft返回的是该父元素左上角定位的值(以自己的边框外部到定位父元素的包括内部)
3.absolute定位元素遵循css定位布局,即最近的拥有relative或absolute的父元素,如果不存在,那么返回body,offsetTop和offsetLeft以浏览器窗口左上角定位
4.relative在css定位布局中不存在定位父元素,但是这里它的offsetParent还是最近的父级定位元素(relative和absolute),如果不存在,返回body,并且offsetTop和offsetLeft以浏览器窗口左上角定位
5.对于absolute & relative,如果父元素都没有定位(绝对和相对)那么就是body,并且offsetTop和offsetLeft以浏览器窗口左上角定位
总结:对于DOMObj.offsetParent返回的值,浏览器不会管DOMObj是static还是absolute还是relative,如果它有定位父元素,那么按照定位父元素左上角定位,否则没有定位父元素的话,那么返回body,并且按照浏览器左上角定位;对于fixed,offsetTop和offsetLeft就是其top和left值。
8.scrollHeight:元素的实际高度(包括内边距,不含边框和外边距)(与clientHeight区别在于:例如一个textarea,宽度为100px,边框宽度1px,当文字太多时显示水平滚动条,这时clientWidth=102px,而scrollWidth=102px + 滚动条滚出去的宽度)
9.scrollWidth
10.scrollLeft:元素(滚动条)滚出的像素
11.scrollTop:scrollHeight=scrollTop+clientHeight
总结:
获取一个元素在窗口左上角定位的信息:
(JS)getBoundingClientRect()
(JQ)offset()
获取一个元素的宽高信息:
(JS)clientWidth clientHeight
说明:包含内边距,不含边框和外边距
(JQ)width() height() innerWidth() innerHeight() outerWidth(false) outerHeight(false)
说明:前两个不含内边距、边框、外边距;中间两个包含内边距,不含边框,外边距;后两个包含内边距,边框,如果为真也会包含外边距
获取鼠标点击位置:
(JS)event.pageX pageY clientX clientY screenX screenY x y
获取触摸点位置:
(JS)event.touches[0].pageX pageY clientX clientY screenX screenY
- 关于Echarts的原生js获取DOM元素与动态加载DOM元素的冲突问题
1.前言: 最近在做的看板项目,因为需要循环加载后台数据,并且用Echarts做数据呈现,所以jQuery和angular等库统统靠边站,Echarts用的是原生js获取DOM元素,至于诸多不兼容等深 ...
- Selenium 定位网页元素
第一 定位元素辅助工具 IE中在元素上右击 -> “检查元素”,或按F12键打开开发者工具: Chrome中在元素上右击 -> “审查元素”,或按F12键打开开发者工具: Firefox ...
- 定位网页元素、透明度、z-index、包裹性和破坏性
一.定位 position属性————规定元素的定位类型,即元素脱离文档流的布局,在页面的任意位置显示 也可以参见以前的总结 <—— 戳 static:默认值,没有定位 relative:相对定 ...
- 利用原生JS实现网页1920banner图滚动效果
内容描述:随着PC设备硬件性能的进步和分辨率的不断提高,现在主流网站逐渐开始采用1920banner图,为适应这一趋势,博主设计了1920banner图的滚动效果,代码利用了原生JS实现了1920ba ...
- 原生js获取Html元素的实际宽度高度
第一种情况就是宽高都写在样式表里,就比如#div1{width:120px;}.这中情况通过#div1.style.width拿不到宽度,而通过#div1.offsetWidth才可以获取到宽度. 第 ...
- 原生JS在网页上复制的所有文字后面自动加上一段版权声明
不少技术博客有这样的处理,当我们复制代码的时候,会自动加上一段本信息版权为XXXX,这是怎么实现的呢? 其实实现的方式很简单,可以在我的网站页面上绑定一个copy事件,当你复制文章内容的时候,自动在剪 ...
- 原生js实现网页触屏滑动
前言: 我有一个html格式的2048游戏,可以用键盘上下左右操作,但是放到手机上就抓瞎了.于是想修改一下代码,将键盘事件改成手机触屏事件. html5 的touch事件 html5支持touch事件 ...
- 通过原生JS实现为元素添加事件
自己写了一个为元素添加事件的方法,并封装到对象中. 说明: id : 目标元素的ID type: 事件的类型,注意的是不能加on fn:事件处理程序 isBubble :规定事件流 代码: var b ...
- 原生js判断某个元素是否有指定的class名的几种方法
[注意]以下方法只对class只有一个值的情况下操作 ************************************************************* 结构部分: <d ...
随机推荐
- ubuntu 下 apt /apt-get command not found 命令找不到
简介:apt 命令在ubuntu下找不到.(针对云平台,等可联网的ubuntu 如果是虚拟机,请确认能否联网 (如是虚拟机且不能联网请参考其他文章,大致方向是先挂载系统镜像再安装)) (ps:一般的 ...
- 最小生成树之Prim算法
描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了! 但是,问题也接踵而来--小Hi现在手上拥有N座城市,且已知这N座城市中任意两座城市之间建造道 ...
- tomcat服务器一闪而过解决方法
JDK没有配置,下载JDK安装到电脑上,然后在电脑->属性->高级系统设置->环境变量,将JDK中bin文件的目录E:\Program Files (x86)\Java\jre7\b ...
- MLlib--GBDT算法
转载请标明出处http://www.cnblogs.com/haozhengfei/p/8b9cb1875288d9f6cfc2f5a9b2f10eac.html GBDT算法 江湖传言:GBDT算法 ...
- Tomcat软件使用常见问题
Tomcat软件使用常见问题 tomcat软件使用的常见问题 1)闪退问题 原因:tomcat软件是java语言开发的. tomcat软件启动时,会默认到系统的环境变量中查找一个名称叫JAVA_HOM ...
- iOracle实战笔记(第五天)
导读 今天的主要内容:维护数据的完整性.索引.管理Oracle的权限和角色. 一.维护数据库的数据的完整性 数据完整性用于确保数据库数据遵从一定的商业规则和逻辑规则.在Oracle中,数据完整性可以使 ...
- TCP长连接和短连接的区别
当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需 ...
- ubuntu 修复 could not open file '/etc/apt/sources.list'
问题描述:could not open file '/etc/apt/sources.list' 问题分析:软件源被清空了,也就是 /etc/apt/sources.list 被删除了 解决问题:1. ...
- .NET: 谈谈共享项目 (Shared Project) 的使用
从 Visual Studio 2015 起,共享项目 (Shared Project) 作为新的一种项目类型被添加到项目模板列表中,它的主要目的是使多个不同类型的项目之间可以共享代码或资源.相比它的 ...
- linux_磁盘分区
分区并没有数据内容只是改变分区表,保存在0磁头,0磁道1扇区除MBR引导后64bytes中,只能有4个组分区,4个以上要一个扩展分区 引导MBR,保存在446字节中 磁盘想要存放数据,首先要分区,可以 ...