CSSOM和CSSOM View

news2024/11/27 20:31:59

CSSOM和CSSOM View这两个我都不是熟悉的领域。


1.描述样式表和规则等 CSS 的模型部分(CSSOM)

        cssom中document.styleSheets :获取文档中所有的样式(只读),这个不常见,不做过多的介绍

2.元素视图相关的 View 部分(CSSOM View)

        CSSOM View 这一部分的 API,可以视为 DOM API 的扩展,分为:窗口部分,滚动部分和布局部分

窗口 API

窗口 API 用于操作浏览器窗口的位置、尺寸等

moveTo(x, y) 窗口移动到屏幕的特定坐标;

moveBy(x, y) 窗口移动特定距离;

resizeTo(x, y) 改变窗口大小到特定尺寸;

resizeBy(x, y) 改变窗口大小特定尺寸。

窗口 API 还规定了 window.open() 的第三个参数:


window.open("about:blank", "_blank" ,"width=100,height=100,left=100,right=100" )

滚动 API

视口滚动 API

可视区域(视口)滚动行为由 window 对象上的一组 API 控制

scrollX 是视口的属性,表示 X 方向上的当前滚动距离,有别名 pageXOffset;

scrollY 是视口的属性,表示 Y 方向上的当前滚动距离,有别名 pageYOffset;

scroll(x, y) 使得页面滚动到特定的位置,有别名 scrollTo,支持传入配置型参数 {top, left};scrollBy(x, y) 使得页面滚动特定的距离,支持传入配置型参数 {top, left}。

通过这些属性和方法,我们可以读取视口的滚动位置和操纵视口滚动。不过,要想监听视口滚动事件,我们需要在 document 对象上绑定事件监听函数:


document.addEventListener("scroll", function(event){
  //......
})

元素滚动 API

scrollTop 元素的属性,表示 Y 方向上的当前滚动距离。

scrollLeft 元素的属性,表示 X 方向上的当前滚动距离。

scrollWidth 元素的属性,表示元素内部的滚动内容的宽度,一般来说会大于等于元素宽度。scrollHeight 元素的属性,表示元素内部的滚动内容的高度,一般来说会大于等于元素高度。scroll(x, y) 使得元素滚动到特定的位置,有别名 scrollTo,支持传入配置型参数 {top, left}。scrollBy(x, y) 使得元素滚动到特定的位置,支持传入配置型参数 {top, left}。

scrollIntoView(arg) 滚动元素所在的父元素,使得元素滚动到可见区域,可以通过 arg 来指定滚到中间、开始或者就近。

除此之外,可滚动的元素也支持 scroll 事件,我们在元素上监听它的事件即可:


element.addEventListener("scroll", function(event){
  //......
})

布局 API

全局尺寸信息

我们主要使用的是 innerHeight、innerWidth 和 devicePixelRatio 三个属性,因为我们前端开发工作只需要跟视口打交道

元素的布局信息

事实上,只有盒有宽和高,元素是没有的。于是 CSSOM View 为 Element 类添加了两个方法

getClientRects();

会返回一个列表,里面包含元素对应的每一个盒所占据的客户端矩形区域,这里每一个矩形区域可以用 x, y, width, height 来获取它的位置和尺寸。

getBoundingClientRect()。

这个 API 的设计更接近我们脑海中的元素盒的概念,它返回元素对应的所有盒的包裹的矩形区域,需要注意,这个 API 获取的区域会包括当 overflow 为 visible 时的子元素区域。

此文章为4月Day13学习笔记,内容来源于极客时间《重学前端》

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/423507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科普|汽车毫米波雷达的规定和标准 微功率短距离无线电发射SRRC认证

01 — 24-24.25 GHz 上一篇提到,在我国《微功率短距离无线电发射设备目录和技术要求》中,保留了24-24.25 GHz的频段作为H类设备,可以用于汽车雷达,它的发射功率限值是:20mW (e.i.r.p),近似为13dBm。除了…

【Open CASCADE -生成MFC和QT事例方式】

源代码目录 adm目录:包含编译OCCT的相关工程; adm/cmake目录:包含使用CMake构建OCCT的相关处理脚本; adm/msvc目录:包含window平台 Visual C 2010, 2012, 2013, 2015, 2017 and 2019等版本的32/64平台solutinon文件; data目录: 包…

ESP32驱动1.28寸GC9A01播放视频(二、程序说明和效果展示)

ESP32驱动1.28寸GC9A01播放视频(二、程序下载和效果展示)1.28寸GC9A01屏幕屏幕引脚定义程序说明程序更改1、Arduino_DataBus *bus和Arduino_GC9A01 *gfx要改成ESP32匹配的2、SPI库的SPI.cpp文件中的“SPIClass::begin”函数中,引脚定义需要跟…

分布式跟踪系统

分布式跟踪系统 背景 当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器&#xff0…

护眼灯真的可以保护眼睛吗?推荐五款达到护眼级别的灯

护眼灯是可以起到一定的保护视力的作用。 普通的台灯的出现是为了照明,它的功能只要照明。像眩光、频闪、蓝光等是普通台灯所存在的问题,而这些问题会造成我们的眼睛近视,所以在我国近年来青少年近视率越来越高的重要原因之一。 护眼灯就优化…

对比斐波那契和快排时间复杂度

斐波那契数列时间复杂度 ​ // 计算斐波那契递归Fib的时间复杂度&#xff1f; long long Fib(size_t N) {if(N < 3)return 1;return Fib(N-1) Fib(N-2); }Fib()递归高度是N&#xff0c;那它最后一层就是2^(N-1) 如果N50&#xff0c;最后一层是2^(49)一个恐怖的值 更恐怖…

手撕Udp套接字|实现群聊通信|实现Windows Linux通信交互

​ 专栏和Git地址 操作系统https://blog.csdn.net/yu_cblog/category_12165502.html?spm1001.2014.3001.5482UdpSockethttps://github.com/Yufccode/BitCode/tree/main/Linux/%E4%BB%A3%E7%A0%81/0215Udp%E5%A5%97%E6%8E%A5%E5%AD%97 README 本项目通过Linux套接字编程&…

AiDD AI+软件研发数字峰会开启编程新纪元

随着OpenAI 推出全新的对话式通用人工智能工具——ChatGPT火爆出圈后&#xff0c;人工智能再次受到了工业界、学术界的广泛关注&#xff0c;并被认为向通用人工智能迈出了坚实的一步&#xff0c;在众多行业、领域有着广泛的应用潜力&#xff0c;甚至会颠覆很多领域和行业&#…

go+vue——基于gin框架和gorm的web开发实战

govue——基于gin框架和gorm的web开发实战gin框架视频、资料、笔记安装Go环境&#xff0c; 添加环境变量&#xff08;可能自动添加好&#xff09;下载 Go环境变量goland 报错&#xff1a; GOROOT is not defined创建项目&#xff1a;Golang中的GoPath和GoModule什么是GoPath&am…

kafka安装

kafka安装前置将压缩包拷贝到虚拟机中解压改名更改server.properties启动先启动zookeeper非静默启动。会占用一个黑窗口再启动一个窗口&#xff0c;用jps查看静默启动 加一个-daemon另一种静默启动操作命令创建消息队列查看消息队列创建副本&#xff08;备份&#xff09;单机版…

MySQL数据库,数据的约束

目录 1.数据的约束 1.1约束的类型 1.2NULL约束 1.3UNIQUE约束 1.4DEFAULT约束 1.5PRIMARY KEY约束 1.6FOREIGN KEY约束 1.数据的约束 首先&#xff0c;创建一个名为test的数据库&#xff1a; mysql> create database test charset utf8; Query OK, 1 row affected …

Vue3中shallowRef和shallowReactive的使用?

shallowRef 和 shallowReactive前言shallowRef 和 shallowReactive概述区别shallowReactiveshallowRef总结&#xff1a;注意为什么使用shallowRef和shallowReactive&#xff1f;我们在之前的博客进过 ref 函数和 reactive 函数&#xff0c;他们的作用是将数据转换成响应式的数据…

真空压力控制方法在X射线探测器窗口薄膜材料力学性能测试中的应用

摘要&#xff1a;针对X射线窗口膜材料机械性能测试中对真空度和高压压力的准确控制需要&#xff0c;本文提出了相应的解决方案。解决方案中采用了薄膜电容真空计、压力传感器、电动针阀、压力调节阀和真空压力PID控制器&#xff0c;与真空泵和高压气源配合&#xff0c;可在膜材…

5Element

一、Element-快速入门 1、安装ElementUi组件库 输入npm install element-ui2.15.3 2、引入ElementUi组件库 https://element.eleme.cn/#/zh-CN/component/quickstart //引入element-ui import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css;Vue.…

Java魔法类 Unsafe应用解析

前言 Unsafe是位于sun.misc包下的一个类&#xff0c;主要提供一些用于执行低级别、不安全操作的方法&#xff0c;如直接访问系统内存资源、自主管理内存资源等&#xff0c;这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Ja…

【Linux】man什么都搜不了,No manual entry for xxx的解决方案

本文首发于 慕雪的寒舍 man什么都搜不了&#xff0c;No manual entry for xxx的解决方案 系统 CentOS 7.6 1.问题描述 今天查手册的时候&#xff0c;发现man什么都查不了。不管是系统接口还是函数&#xff0c;都显示没有入口文档&#xff08;No manual entry for&#xff09;…

狂追ChatGPT:开源社区的“平替”热潮

目前&#xff0c;不少优质的类ChatGPT模型都只能通过API接入&#xff0c;而一些开源LLM的效果与ChatGPT相比差距不小。不过&#xff0c;近期开源社区开始密集发力了。 其中&#xff0c;Meta的LLaMA模型泄漏是开源“ChatGPT”运动的代表性事件。基于LLaMA模型&#xff0c;开源社…

条款08: 别让异常逃离析构函数

文章目录背景知识析构函数背景知识 下面是一段测试代码&#xff1a; class Test { public:Test(int para){m_num para;};void test_throw(){throw(3);};~Test() {cout<<"delete Test"<<m_num<<endl;//test_throw();};int m_num; }; int main() …

牛客乔迁新居,新址在……

有个好消息想向大家公布&#xff1a;牛客&#xff08;上海办公室&#xff09;搬家啦&#xff01; 自3月27日起&#xff0c;牛客&#xff08;上海办公室&#xff09;正式乔迁至上海市长宁区长宁路999号兆丰广场办公楼G层G15。新的办公室坐落在上海长宁区的中心地带&#xff0c;…

Talk预告 | 浙江大学特聘研究员廖依伊:面向自动驾驶仿真平台的神经渲染

本期为TechBeat人工智能社区第477期线上Talk&#xff01; 北京时间3月1日(周三)20:00&#xff0c;浙江大学信电学院特聘研究员——廖依伊的Talk将准时在TechBeat人工智能社区开播&#xff01; 她与大家分享的主题是: “面向自动驾驶仿真平台的神经渲染”&#xff0c;届时将探…