首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

深入理解浏览器原理

2.1.4 运行流程 渲染进程共享:开启浏览器新窗口或新选项卡时,创建新的浏览器进程,并创建RenderView。不同页面/iframe可共享同个渲染进程。...UI线程停止选项卡的加载转圈。 8. 导航到其他站点 导航完成后,再次将不同的URL放到地址栏导航,浏览器会检查当前渲染网站的beforeunload事件。...大多数显示器每秒刷新屏幕60次(60 fps),当你在每一帧移动屏幕时,动画对人眼来说会很平滑(视觉停留效应)。但是如果动画错过了两者之间的帧或程序运行JS时,则页面将出现卡顿。...如果发生滚动,图层已经被栅格化需要合成一个新帧。通过移动图层和合成新帧,可以以相同的方式实现动画。 7.1 分层 为了找出哪些元素需要在哪些层中,主线程遍历布局树以创建层树。...2) 通过获取此信息,合成器线程可以确保在该区域中发生事件时将输入事件发送到运行JavaScript的主线程。如果输入事件来自该区域之外,则合成器线程在不等待主线程的情况下继续合成新帧。

4.7K31

媒体查询特性 - 适应用户偏好 | perfers-reduced-motion | prefers-color-scheme | Save data

引言: 当我们在使用APP时,我们在 设置中常会发现这么一项操作:如无图模式、夜间模式等等,这些设置项来自对用户偏好的考量。为了打造轻应用的进展中,在web中也将逐步实现这样的特性。...今天,我们就来了解一下关于在web中打造用户偏好的特性。 适应用户偏好 在过去的几年里,浏览器实现了各种功能,可以使用CSS、JavaScript或检查服务器端的首选项来响应web上的用户偏好。...这项特性是在Safari10.1中引入的,目前在Safari、IOS Safari、Firefox和Chrome的最新版本中得到支持。...例如,你可是在CSS中使用下面如下的方式来检查用户是否喜欢Dark模式。...由于这项特性会跟踪用户,所以在Safari Technology Preview 75中被禁用了。同时,不确定其他浏览器是否也会禁用这项功能。

30520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    每天都在用的浏览器,你知道它是如何工作的吗?

    2.1.4 运行流程 渲染进程共享:开启浏览器新窗口或新选项卡时,创建新的浏览器进程,并创建RenderView。不同页面/iframe可共享同个渲染进程。...UI线程停止选项卡的加载转圈。 8. 导航到其他站点 导航完成后,再次将不同的URL放到地址栏导航,浏览器会检查当前渲染网站的beforeunload事件。...大多数显示器每秒刷新屏幕60次(60 fps),当你在每一帧移动屏幕时,动画对人眼来说会很平滑(视觉停留效应)。但是如果动画错过了两者之间的帧或程序运行JS时,则页面将出现卡顿。...2) 通过获取此信息,合成器线程可以确保在该区域中发生事件时将输入事件发送到运行JavaScript的主线程。如果输入事件来自该区域之外,则合成器线程在不等待主线程的情况下继续合成新帧。...passive: true 选项,提示浏览器在主线程中监听事件,合成器线程也可以继续合成新帧。

    2.2K20

    Google IO 2023 — 前端开发者划重点

    Web UI(CSS)的最新特性 过去几个月迎来了 Web UI 的黄金时代,大量新的 Web 功能随着浏览器的功能广泛落地,这里介绍了 20 个关于 CSS 以及 Web UI 开发相关的新特性,...比如去年,我们看到 Firefox 97、Chrome 99 和 Safari 15.4 同时推出了 CSS 级联层,大家期待已久的容器查询也在几个月后的浏览器版本中互相兼容。...Internet Explorer 6 推出时带来了很多 CSS 新特性,但是有很多奇葩的 Bug 导致页面无法渲然。...当我们编写复杂的关键帧动画时,这是非常方便的。比如现在我们准备从零到百分之百平移元素,并在不同的关键帧点上旋转元素,在中间位置缩放元素。...首先我们可以在页面浏览器中设置忽略列表和文件夹,甚至还可以使他们完全不可见。 调用堆栈也不会显示这些代码的位置,所以我们看到的堆栈跟踪将会非常准确且直接。

    51130

    Window对象

    open(): 打开一个新的浏览器窗口或查找一个已命名的窗口。 postMessage: 可以安全地实现跨源通信。 print(): 打印当前窗口的内容。...setInterval(): 按照指定的周期来调用函数或计算表达式。 setTimeout(): 在指定的毫秒数后调用函数或计算表达式。 stop(): 停止页面载入,相当于点击了浏览器的停止按钮。...动画相关 onanimationcancel: 当CSS动画意外中止时,即在任何时候它停止运行而不发送animationend事件时将发送此事件,例如当animation-name被改变,动画被删除等...onanimationend: 当CSS动画到达其活动周期的末尾时,按照(animation-duration*animation-iteration-count) + animation-delay进行计算...onanimationiteration: 此事件将会在CSS动画到达每次迭代结束时触发,当通过执行最后一个动画步骤完成对动画指令序列的单次传递完成时,迭代结束。

    2.5K20

    Safari 18.0 WebKit 新特性介绍

    CSS 视图过渡 WebKit 在 Safari 18 中增加了对Transition API 的支持。它提供了一种优化的浏览器 API,用于将元素从一个状态动画到另一个状态。...Safari 支持CSS 视图过渡模块第 1 级规范,该规范增加了用于定义过渡动画的新 CSS 属性和伪元素,以及一个新的浏览器 API 来启动过渡动画并响应不同的过渡状态。...它通过捕捉页面的当前(旧)状态并应用动画过渡到新状态来工作。默认情况下,浏览器在状态之间应用交叉淡入淡出。 调用document.startViewTransition()方法来启动捕捉。...在这个演示中查看视图过渡的实际效果 样式查询 Safari 18.0 的 WebKit 在测试 CSS 自定义属性时增加了对样式查询的支持。...这可以在频繁调用 getImageData() 时提高性能。 Safari 18.0 的 WebKit 扩展了 2D 画布对 currentcolor 的支持。

    37310

    Github 移除 JQuery 的过程

    没有通过CSS选择器查询DOM元素的标准方法,也没有对元素的视觉样式进行动画处理的标准方法,而由Internet Explorer开创的XMLHttpRequest接口与许多其他api一样,在浏览器之间是不一致的...在GitHub的早期,当它的大部分功能仍然得到充实时,这使得小型开发团队能够快速地进行原型化,并获得新的功能,而不必专门为每个web浏览器调整代码。...实现CSS类名切换; CSS现在支持在样式表而不是JavaScript中定义可视化动画; $.ajax请求可以使用Fetch标准执行; addEventListener()接口足够稳定,可以跨平台使用;...例如,在我们删除了特定于jQuery的CSS伪选择器(如:visible或:checkbox)的最终用法之后,我们能够删除Sizzle模块;当最后一个$.ajax调用被fetch()替换时,我们能够删除...每当某个IE版本的使用低于某个阈值时,我们就会停止向它提供JavaScript,并专注于测试和支持更现代的浏览器。早期放弃对IE8-9的支持使我们能够采用许多本机浏览器特性,否则这些特性将很难填充。

    2.1K10

    WWDC24 - iOS18 下的 WebKit 有哪些更新?

    基于 CSS View Transitions Module Level 1 规范,引入了一些新的 CSS 属性和伪元素,一起构成了定义过渡动画的规则,并且提供一个新的浏览器 API 来启动过渡动画,并响应不同的过渡状态的变化...它的工作方式是通过捕获页面的当前的(旧)状态,然后将其动画过渡到新的状态。默认情况下,浏览器会应用一个在状态间的交叉淡入淡出效果。...另外,你还可以通过为指定元素设置 CSS 的 view-transition-name 属性名称,要求浏览器独立跟踪元素状态的改变。然后,你可以使用伪元素来为其定制动画。...- 样式查询 WebKit 增加了对样式查询(Style Queries)的支持,可以在测试 CSS 自定义属性时使用。...多年以来,背景滤镜只能在 Safari 中运行。当你在属性名称前添加 -webkit-backdrop-filter前缀时,它才可以使用。

    18210

    前端技能图谱

    矢量图形动画(如SVG) 单页面应用 安全性(如跨域) 授权(如HTTP Basic、JWT等等) 工程化 代码质量(如JSLint / ESLint / TSLint / CSLint) 代码分析(...如Code Climate) 测试覆盖率 构建系统(gulp、grunt、webpack等等) 自动构建(脚本) 兼容性 跨浏览器测试 (Chrome,IE,Firefox,Safari等等) 跨平台测试...(Windows、GNU/Linux,Mac OS等等) 跨设备测试(Desktop,Android,iOS,Windows Phone) 跨版本测试(同一个浏览器的不同版本) 前端特定 CSS / CSS3...动画 JavaScript 动画 Web字体嵌入 Icon 字体 图形和图表 CSS Sprite(如glue) DOM操作(如jQuery、React等等) 模板引擎(如JSX、Handlebars...可用性 压缩(如Minify、Uglify、CleanCSS等等) 设计 切页面 线框图(Wireframe) 响应式设计 网格布局(Grid Layout) Flexbox布局 SEO Sitemap(站点地图

    1.8K90

    从零开始学 Web 之 CSS3(六)动画animation,Web字体

    moveTest; animation-duration: 2s; 如需在 CSS3 中创建动画,需要学习 @keyframes 规则。...@keyframes 规则用于创建动画。在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。 使用 @keyframes关键字来创建动画。...并不会立刻进行到动画的初始状态 backwards:不会保留动画结束时的状态,在添加了动画延迟的前提下,如果动画有初始状态,那么会立刻进行到初始状态 both:会保留动画的结束时状态,在有延迟的情况下也会立刻进入到动画的初始状态...+、iOS Mobile、Safari4.2+; OpenType(.otf)格式 .otf字体被认为是一种原始的字体格式,其内置在TureType的基础上,支持这种字体的浏览器有Firefox3.5+...SVG字体渲染的一种格式,支持这种字体的浏览器有Chrome4+、Safari3.1+、Opera10.0+、iOS Mobile Safari3.2+ 3、使用步骤 需要注意的是,我们在使用 Web

    1.4K10

    如何用JavaScript捕获CSS3的动画事件

    CSS3动画执行起来平滑且快速,但不像JavaScript动画,你可以一帧一帧控制。幸运的是,你可以在任何一个元素上使用事件处理来决定动画的状态。同时它支持连续播放不同动画这种细粒度的控制。...`anim.addEventListener("animationiteration", AnimationListener, false);` animationinteration事件会在每一次新的动画执行过程中被触发...浏览器兼容性 在撰写本文时,Firefox,Chrome,Safari,Opera和IE10支持CSS3动画和相关联的事件处理程序。...,都会调用AnimationListener函数。...更多来自本作者的内容 在JavaScript演示中查看CSS3动画事件 演示页面显示一个按钮。当它被点击时,“enable”类被切换开始flash动画。当动画事件触发时,状态显示在控制台中。

    2.1K20

    2023 年前端大事记

    scrollend 事件会在以下情况触发:浏览器动画结束或滚动完成、用户的触摸被释放、用户的鼠标释放了滚动键、用户的按键被释放、滚动到片段完成、滚动捕捉完成、scrollTo() 完成、用户滚动了可视视口...Web UI(CSS)的最新特性:过去几个月谷歌迎来了 Web UI 的黄金时代,大量新的 Web 功能随着浏览器的功能广泛落地。...这个事件通常在 HTML 文档即将被卸载时被调用,理论上,它可以在用户离开页面时运行一些代码,如保存用户数据、执行清理任务或在离开页面时发送分析数据等。...然而,这个事件在很多浏览器中并不稳定且可靠性差,会影响到网站性能,在一些浏览器中它是先于 bfcache(浏览器的前进后退缓存操作)运行的,这将阻止正常的 bfcache 进行,这是一个历史遗留问题,Safari...引入了新的块模板语法。内置控制流可以在构建时起作用,同时还引入了内置的 for 循环,改善了开发者体验。 新引入的可延迟的视图。可延迟的视图通过前所未有的便捷性,实现了声明性且强大的延迟加载。

    39810

    PWA - 令人惊奇的web用户体验新方法

    Android 上可以设置全屏显示,由于 Safari 支持度的问题,所以在 IOS 上并不可以 ),并且还能进行 ”推送通知” 。...安全:PWA使用https进行通信加密,防止了被第三方获取数据以及数据被篡改 推送:做到在不打开网页的前提下,推送新的消息 可安装:能够将 Web像 APP 一样添加到桌面,可以在主屏幕上创建图标 为什么是渐进式...如果 /sw.js 内容有更新,当访问网站页面时浏览器获取了新的文件,逐字节比对 /sw.js 文件发现不同时它会认为有更新启动 更新算法,于是会安装新的文件并触发 install 事件。...直到所有已打开的页面都关闭,旧的 Service Worker 自动停止,新的 Service Worker 才会在接下来重新打开的页面里生效 自动更新所有页面 self.addEventListener...上能够全屏启动,不显示地址栏 ( 由于 Iphone 手机的浏览器是 Safari ,所以不支持哦) 控制屏幕 横屏 / 竖屏 展示 定义启动画面 可以设置你的应用启动是从主屏幕启动还是从 URL 启动

    2.7K10

    使用CSS提高网站性能的30种方法

    21.用途意志改变必要时 该意志改变性质警告浏览器某个元素将以特定方式进行动画处理,以便浏览器可以提前进行优化: .animatedelement { will-change: transform,...不应将其应用于太多的元素或在页面加载时立即启动动画。给予浏览器一点时间进行优化。 22. @transkey_groupall~trans HTTP协议保存-数据标题指示用户已请求缩减的数据。...这将有利于具有大量CSS的大型站点,这些站点的页面具有不同的设计或由一系列组件构成。 不需要在第一个页面加载时为不使用的组件下载一个包含CSS的大型样式表。...当空间允许时,媒体查询和固有的网格布局可以应用更复杂的桌面设计。 在移动的和桌面浏览器中彻底测试您的样式。...至少,使用以下内容: 桌面:Firefox、Chrome(Chrome、Edge、Brave、Opera或Vivaldi)和Safari浏览器 移动的:Android上的Chrome和iOS上的Safari

    3.5K20

    10条让web app更快的HTML5最佳实践

    Tip 2: 使用CSS Transition代替JavaScript动画 CSS Transition能带来更高的性能,更少的代码,更容易维护和理解....和在简单数据存储时比客户端数据库更快,可以用来实现一些简单的状态,进度保存....Tip 4: 使用JavaScript原生API 随着更高版本JavaScript的普及, 像Array prototype新增了很多API都可以在大多数浏览器中直接使用.例如: 通常情况下这些原生方法比手动编写循环要快...Tip 6: enable硬件加速来增强视觉体验 某些浏览器可能使用GPU加速让高速动画更加平滑.Firefox Minefield, IE9, Safari已经宣称实现了硬件加速....在支持并启动了硬件加速的情况下, 动画, rotation, scaling, opacity肯定会更加平滑. 所有实际操作都发生在GPU而不需要内容的重绘.

    1.1K60

    CSS硬件加速的好与坏

    每个人都痴迷于60桢每秒的顺滑动画。为了实现这个顺滑体验现在用的最流行的一个做法就是使用『CSS硬件加速』。在一些极端例子中,强制使用translate3d意味着大大提高应用程序的性能。...这些特性在实现一个流畅的动画时特别有用。浏览器不会在动画的每一帧都绘制一次,而是生成DOM元素的快照,并作为GPU纹理(也被叫做层)存储起来。...每次合成层更新,一堆新的像素就可能需要传输给GPU。因此为了高性能,在动画开始之后避免层的更新也是很重要的(避免动画进行中时有其他层一直更新导致拥堵)。...如果你在使用Safari的web检查器,选择『层』标签后就能在侧栏看到『绘图』区域。这里的数字代表了Safari提交当前层的新纹理次数。在Colorful Boxes这个demo上试一试。...即使它需要可以显示成千上万的书本封面(在左右滑动时),你也不需要一次性构建这么多合成层。只需要一个小小的修改,那就是在滑动时将旧图片的层移出作为新图片的层使用。用户根本不会感觉到变化。

    1.1K20

    【Web前端】如何兼容性地开发响应式站点

    一、浏览器生态:了解你的网站用户 在设计和开发站点之前,了解目标用户所使用的浏览器是非常重要的。...在实际的站点开发中,你可能发现某些旧版浏览器依然有一部分用户在使用,比如IE11(在某些企业环境中仍然很常见),或者老版本的Safari。...因此,理解这些浏览器特性支持的差异,尤其是对于一些现代CSS特性,是开发过程中必须考量的因素。 二、CSS特性支持的现状 在设计CSS时,首先要检查你希望使用的特性在目标浏览器中的支持情况。...因此,在实际开发中我们需要进行兼容处理。 三、CSS中的回滚机制 在处理旧浏览器时,回滚策略是指在浏览器不支持某些CSS特性时,提供一个后备样式。...但如果浏览器支持网格布局,特性查询会应用新的网格样式。 五、旧版弹性盒(Flexbox)的处理 弹性盒(Flexbox)是现代CSS布局的核心之一,能轻松实现各种复杂的对齐和布局需求。

    7110

    浏览器事件

    浏览器事件 常用浏览器事件与DOM事件,包括鼠标事件、键盘事件、框架/对象事件、表单事件、剪贴板事件、打印事件、拖动事件、多媒体事件、动画事件、过渡事件。...动画相关 onanimationcancel: 当CSS动画意外中止时,即在任何时候它停止运行而不发送animationend事件时将发送此事件,例如当animation-name被改变,动画被删除等...onanimationiteration: 此事件将会在CSS动画到达每次迭代结束时触发,当通过执行最后一个动画步骤完成对动画指令序列的单次传递完成时,迭代结束。...ononline: 该事件在浏览器开始在线工作时触发。 onoffline: 该事件在浏览器开始离线工作时触发。 onshow: 该事件当元素在上下文菜单显示时触发。...动画相关 animationend: 该事件在CSS动画结束播放时触发 animationiteration: 该事件在CSS动画重复播放时触发 animationstart: 该事件在CSS动画开始播放时触发

    2.4K20

    精通 Intersection Observer API

    考虑一个当下典型的站点页面,有很多 scroll 事件在发生 -- 广告模块、从底部滚动进来的新内容、时不时需要运行动画的元素,或是页面中的很多图片,都会滚动至被用户看到后才会加载或执行。...最后至关重要的是,要理解不同于传统 scroll 事件的是,Intersection Observer 并不是在每次交集改变后不间断地轮询。相反,回调只在阈值大约达到时被调用。...Demo 1 – 动画 在第一个小项目中,我们用一种简单的方式来看看 Intersection Observer API。...当它们完全进入视口(root)后,向目标元素上附加一个样式类名,触发对应的 CSS 动画。...features=IntersectionObserver"> 一旦 polyfill 被加载,以上 demos 就能在 Safari、IE7+ 等浏览器上运行了。

    1.3K10

    这几个库让你交互动效满满,告别静态时代

    Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。 如果我们需要使用Threejs来绘图,只需要创建一个最小绘图环境即可。...Threejs在底层其实还是调用html5中的canvas api来实现绘图的。...但和我们一般绘制2D图像不同,该库提供canvas,svg,CSS3D和WebGL渲染器,使我们能够在设备和浏览器之间创建丰富的交互式体验。...既然与JQ大法API基本一致,那对我们的小伙伴来说简直是开箱即用哇,根本都不用熟悉新的API直接一把梭了~ popmotion 这个功能性动画库目前已有17K Star,整个包大小却仅有11KB,精简极致的一个动画库...它允许开发人员根据动作创建动画和交互,这些动作是可以启动和停止的值流,并使用CSS,SVG,React,Three.js和任何接受数字作为输入的API进行创建。

    2.4K21
    领券