CSSOM
概要
狭义的 DOM API 仅仅包含 DOM 树形结构相关的内容。
DOM 中的所有的属性都是用来表现语义的属性,CSSOM 的则都是表现的属性。
CSSOM 是 CSS 的对象模型,在 W3C 标准中,它包含两个部分:
- 描述样式表和规则等 CSS 的模型部分(CSSOM)
- 跟元素视图相关的 View 部分(CSSOM View)。
CSSOM
在实际使用中,CSSOM View 比 CSSOM 更常用一些,因为我们很少需要用代码去动态地管理样式表。
CSSOM View
1、窗体API
- moveTo(x, y) 窗口移动到屏幕的特定坐标;
- moveBy(x, y) 窗口移动特定距离;
- resizeTo(x, y) 改变窗口大小到特定尺寸;
- resizeBy(x, y) 改变窗口大小特定尺寸。
- window.open(uri,target,size) 第三个参数描述窗口的尺寸信息
window.open("about:blank", "_blank" ,"width=100,height=100,left=100,right=100" )
ps: 出于安全考虑,一些浏览器没有实现。
2、滚动API
视口滚动
在window对象上的,是顶层容器滚动提供的API,大部分移动端浏览器会对这部分api做性能优化。它和元素滚动API不同。
scrollX 属性,X方向上当前滚动的距离。
scrollY 属性,Y方向上当前滚动的距离。
scroll(x,y)方法,使得页滚动到指定位置。别名scrollTo,
scrollBy(x,y)方法,使页面滚动指定距离。
要监听视口滚动事件,我们需要在document对象上绑定scroll事件监听函数。
document.addEventListener("scroll",function(event){
//......
});
元素滚动
在Element类,为了支持滚动,加入了以下API。
- scrollTop 属性,表示Y方向上的当前滚动的距离。
- scrollLeft 属性,表示X方向上的当前滚动的距离。
- scrollWidth 属性,元素滚动内容的宽度,一般>=元素宽度。
- scrollHeight 属性,元素滚动内容的高度,一般>=元素高度。
- scroll(x,y) 方法,使元素滚动到指定位置,别名scrollTo
- scrollBy(x,y) 方法,使元素滚动指定距离。
元素也支持scroll事件
element.addEventListener("scroll", function(event){
//......
})
3、布局API
全局尺寸信息
- window.innerHeight 视口的高
- window.innerWidth 视口的宽
- window.devicePixelRatio 像素比(DPR),物理像素和css像素单位的倍率关系。
- window.screen
window.screen.width, window.screen.height 设备的屏幕尺寸。
获取Element对象的尺寸信息。
- element.clientWidth\element.clientHeight
属性表示元素的内部宽度\高度,以像素计。该属性包括内边距,但不包括滚动条(如果有)、边框和外边距。
该属性值会被四舍五入为一个整数。如果你需要一个小数值,可使用 element.getBoundingClientRect()。
- element.getBoundingClientRect()
返回一个ClientRectd对象包含以下属性。
bottom float Y 轴,相对于视口原点(viewport origin)矩形盒子的底部。只读。
height float 矩形盒子的高度(等同于 bottom 减 top)。只读。
left float X 轴,相对于视口原点(viewport origin)矩形盒子的左侧。只读。
right float X 轴,相对于视口原点(viewport origin)矩形盒子的右侧。只读。
top float Y 轴,相对于视口原点(viewport origin)矩形盒子的顶部。只读。
width float 矩形盒子的宽度(等同于 right 减 left)。只读。
x float X 轴,相对于视口原点(viewport origin)矩形盒子的左侧。只读。
y float Y 轴,相对于视口原点(viewport origin)矩形盒子的顶部。只读。
- getClientRects()
会返回一个列表,里面包含元素对应的每一个盒所占据的客户端矩形区域.
CSSOM的更多相关文章
- CSSOM视图模式(CSSOM View Module)相关整理:scrollWidth,scrollLeft,offsetLeft,clientX ,offsetX 定义和区别
转:http://www.zhangxinxu.com/wordpress/2011/09/cssom%E8%A7%86%E5%9B%BE%E6%A8%A1%E5%BC%8Fcssom-view-mo ...
- CSSOM之getComputedStyle,currentStyle,getPropertyValue,getAttribute
js关于CSSOM编程的样式相关几个常用的方法 webkit:getComputedStyle,getPropertyValue IE:currentStyle,getAttribute 前言 jqu ...
- CSSOM视图模式
相关技术文章: CSSOM视图模式(CSSOM View Module)相关整理 W3C CSSOM View Module
- CSSOM View Module
就在8月份,也就是上次gf大姨妈来的时候,W3C出炉了CSSOM视图模块(CSS Object Model View)草案.CSSOM视图模块(CSSOM View Module)定义了一些 API, ...
- [转] CSSOM视图模式(CSSOM View Module)相关整理
以下就是一些API属性的相关内容,包括兼容性,使用,测试等. 一.Window视图属性 这些属性可以hold住整个浏览器窗体大小.微软则将这些API称为“Screenview 接口”.包括:inner ...
- 页面渲染机制(一、DOM和CSSOM树的构建)
1.HTML的加载 HTML是一个网页的基础,下载完成后解析 2.其他静态资源加载 解析HTML时,发现其中有其他外部资源链接比如CSS.JS.图片等,会立即启用别的线程下载. 但当外部资源是JS时, ...
- CSSOM之getboundingclientrect和getclientrects
TextRectangle 对于文本对象,W3C提供了一个 TextRectangle 对象,这个对象是对文本区域的一个解释. 对于 i,span,em等display 是inline的标签,在书写文 ...
- CSSOM视图模式(CSSOM View Module)相关整理(转载)
原文地址 http://www.zhangxinxu.com/wordpress/?p=1907 一.Window视图属性 这些属性可以hold住整个浏览器窗体大小.微软则将这些API称为“Scree ...
- CSSOM视图模式(CSSOM View Module)
一.Window视图属性(window对象) 这些属性可以获取住整个浏览器窗体大小.微软则将这些API称为“Screenview 接口” innerWidth 属性和 innerHeight 属性pa ...
随机推荐
- Apache Ignite 学习笔记(三): Ignite Server和Client节点介绍
在前两篇文章中,我们把Ignite集群当做一个黑盒子,用二进制包自带的脚本启动Ignite节点后,我们用不同的客户端连接上Ignite进行操作,展示了Ignite作为一个分布式内存缓存,内存数据库的基 ...
- 人类又被AI碾压,这次是星际争霸
还记得2017年,那个血洗围棋界的“阿尔法狗”吗? 这个由谷歌旗下 DeepMind 公司开发的 AI ,对阵世界顶尖围棋选手,打出完全碾压式的战绩: AlphaGo vs. 樊麾 - 5 : ...
- 11.3 Daily Scrum
今天的会议上,我们重新规划了一下每个人的分工.大家的安卓开发环境已经配置完毕,于是我们便正式开始进入代码编写的阶段. 由于修改了一下分工,之前发布的任务作废,以新发布的任务为准. Today’s ...
- 《Linux内核分析》第一周学习报告
第一周:计算机是如何工作的 姓名:王玮怡 学号:20135116 第一节 存储程序计算机工作模型(冯诺依曼体系结构) IP指向的内存地址,取指令执行,完成后,IP值自加一,取下一条指令再执行. AP ...
- 在centOS中安装mongodb
自己在一个CentOS6.6的系统中按照官网的说明,走了一遍的安装过程,记录一下. 看过个mongo的视频,上面介绍的安装是用源码安装,而官网上说需要gcc4.8.3的版本,还有scons的编译工具, ...
- python3 selenium打开Chrome报错闪退问题
ChromeDriver不匹配 Google Chrome 已是最新版本 版本 64.0.3282.186(正式版本) (32 位) ChromeDriver应该选择2.35 下载链接:https ...
- Daily Scrum - 11/16
时间:午饭 今天小组例会主要是汇报了各自的进度.任烁那边主要为工程添加了单词的类(包含各个参数等成员变量),方便以后实现算法:拜重阳实现了一个简易的“点进-点出”UI,可谓迈出了艰难的第一步:章玮和罗 ...
- Java入门第二季第2章封装
什么是 Java 中的内部类 问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. 问:那为什么要将一个类定义在另一个类里 ...
- 『编程题全队』Alpha 阶段冲刺博客Day5
1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.完成SlotWidget的设计和功能 2.修改了TitleBar上的功能按钮的CSS样式表 孙慧君: 1.登录框的UI设计 2 ...
- [转帖]VMware Vsphere 6.0安装部署 (三) vCenter Server安装
VMware Vsphere 6.0安装部署 (三) vCenter Server安装 2016年08月29日 14:59:14 dAng1r0Us 阅读数:72942 版权声明:本文为博主原创文 ...