当前位置:首页 > 科技  > 软件

关于 CSS 的那些事儿,我从未被告知

来源: 责编: 时间:2024-05-27 17:22:03 79观看
导读CSS 是一种美丽且复杂的技术,我们每天在工作中都会用到。然而,包括我在内的许多开发者都忽略了它的一些重要方面。这很明显,因为在互联网上很难找到关于 CSS 的新知识或高级内容。大多数内容创作者只写一些热门话题,比如

dqf28资讯网——每日最新资讯28at.com

CSS 是一种美丽且复杂的技术,我们每天在工作中都会用到。然而,包括我在内的许多开发者都忽略了它的一些重要方面。dqf28资讯网——每日最新资讯28at.com

这很明显,因为在互联网上很难找到关于 CSS 的新知识或高级内容。大多数内容创作者只写一些热门话题,比如新语言、框架和库。dqf28资讯网——每日最新资讯28at.com

个人对 CSS 的了解仅限于让它正常工作。而这特别令人遗憾,因为我们从未尝试深入研究这个主题。认识到这一点后,做了一些研究,并列出了一些新发现的内容。dqf28资讯网——每日最新资讯28at.com

CSS 性能

CSS 性能是一个非常重要的话题,因为它直接影响网站的效率。由于现代应用程序包含大量的 CSS 代码,即使是微小的错误也可能导致显著的性能下降。dqf28资讯网——每日最新资讯28at.com

子选择器

首先,下面赂你展示一些令我惊讶的东西。只需看看下面的例子,试着找出可能的问题。dqf28资讯网——每日最新资讯28at.com

dqf28资讯网——每日最新资讯28at.com

正如你所看到的,这个例子一点都不复杂。这段 CSS 代码移除了标题中所有段落内链接的文本装饰。这不是普通的 CSS 吗?dqf28资讯网——每日最新资讯28at.com

但你知道使用这样的选择器会导致浏览器执行大量额外工作吗?这个问题适用于我们代码中所有类似的子选择器。dqf28资讯网——每日最新资讯28at.com

这是因为浏览器在解析 CSS 时,从右向左读取选择器。有了这个新知识,我们将这个过程分解成几个步骤:dqf28资讯网——每日最新资讯28at.com

  • 浏览器找到页面上所有的 <a> 标签。
  • 然后它找到包含在段落中的所有锚点。
  • 最后,它将找到的集合缩小到仅包含在 #header 元素内的锚点。

通过使用更具体的选择器,我们可以帮助浏览器避免所有这些额外的工作。我们可以将 .header__link 类应用于锚元素,并用它替换选择器 #header p a。这样,浏览器会更快地找到所需的元素。dqf28资讯网——每日最新资讯28at.com

昂贵的 CSS 属性

所谓昂贵的 CSS 属性,是指这些属性在我们的应用程序中可能会耗费大量性能。但这并不意味着你完全不能使用它们。你只需要理解,如果元素使用了这些属性并且经常渲染——它肯定会影响性能。dqf28资讯网——每日最新资讯28at.com

需要注意的一件棘手事情是,改变某些 CSS 属性需要更新整个布局。几何属性如宽度、高度、顶部等可能导致整个树的重新绘制。dqf28资讯网——每日最新资讯28at.com

还有一些属性很难渲染。虽然这些属性的清单很短,但你可以在这里了解更多关于它们的信息。dqf28资讯网——每日最新资讯28at.com

  • border-radius
  • box-shadow
  • filter
  • :nth-child
  • position: fixed

重绘和重排

重绘(Repaint)和重排(Reflow)是在浏览器中渲染网页过程中两个重要的概念。当页面加载或更新时,浏览器会通过一系列步骤将内容显示在屏幕上,而重绘和重排在这个过程中起着重要作用。dqf28资讯网——每日最新资讯28at.com

为了更好地理解这个过程,我们可以将其分解为几个精确的步骤:dqf28资讯网——每日最新资讯28at.com

  • 从服务器下载的 HTML 文档用于构建文档对象模型(DOM)。
  • 样式被加载和识别,创建 CSS 对象模型(CSSOM)。
  • 基于 DOM 和 CSSOM,形成一个渲染树,这是一个渲染对象的集合。渲染树复制了 DOM 的结构,但不可见的元素(例如 <head> 或 display: none 的元素)不包含在内。换句话说,渲染树描述了 DOM 的视觉表示。
  • 对于渲染树中的每个元素,计算其在页面上的位置,并进行布局。浏览器使用流方法,通常一个操作就足以放置所有元素。例如,表格需要更多的操作。
  • 最后,所有元素在浏览器中被渲染,并且绘制完成。

dqf28资讯网——每日最新资讯28at.com

当页面首次加载时,如果不是空的,至少会执行一次重排和重绘。但它们也会在以下情况下继续发生:dqf28资讯网——每日最新资讯28at.com

  • 当由于节点的宽度、高度或其他坐标的变化,树的一部分需要重新计算时,会触发重排事件。
  • 当由于变化,一些显示的内容必须更新时,这主要适用于诸如背景颜色、半径等样式属性,会触发重绘事件。
  • 此外,当发生重排事件时,总是会伴随一个重绘事件。而重绘则可以独立于重排触发。

关于重排

重排是计算网页上元素布局的过程。它根据元素的内容和样式来确定每个元素的大小和位置。dqf28资讯网——每日最新资讯28at.com

在现代应用程序中,特别是页面上有成千上万个元素和频繁的布局更新时,它很快会变成一个资源消耗大的操作。即使是对文档中单个元素的重排,也可能需要重排其父元素和随后的任何其他元素。dqf28资讯网——每日最新资讯28at.com

由于它是一个用户阻塞操作,了解如何改进重排以及各种文档属性对其持续时间的影响是非常有用的。典型的引发重排过程的情况通常有:dqf28资讯网——每日最新资讯28at.com

  • 对 DOM 的不同操作。例如,添加、删除和更改节点。
  • 元素内容的变化,甚至包括表单字段中的文本。
  • 计算(getComputedStyle)或修改 CSS 属性。
  • 对元素类的操作。
  • 浏览器窗口的操作(调整大小、滚动)。
  • 伪类的激活。:hover 就是一个很好的例子。

关于重绘

重绘是将像素绘制到屏幕上的简单过程。在重排期间确定布局后,浏览器将每个元素绘制到屏幕上。dqf28资讯网——每日最新资讯28at.com

重绘通常比重排消耗的资源少,但它仍然会影响网页的性能。dqf28资讯网——每日最新资讯28at.com

最典型的情况是当元素样式的变化不影响其在屏幕上的大小或位置时。例如,当背景颜色改变时,浏览器只需用新样式重新绘制(或重绘)节点。dqf28资讯网——每日最新资讯28at.com

以下是一些会触发重绘的操作的例子:dqf28资讯网——每日最新资讯28at.com

  • 改变元素的可见性。
  • 改变元素的轮廓。
  • 改变背景。

CSS 可以替代 JS 的地方

JavaScript 和 CSS 是非常棒的技术,尤其是在一起使用时。每种技术都有其独特的优势,结合使用时可以创造出令人难以置信的效果。dqf28资讯网——每日最新资讯28at.com

然而,我可以自信地说,UI 控制中使用 CSS 越多,Web 应用程序就越容错和可靠。dqf28资讯网——每日最新资讯28at.com

观点很简单:dqf28资讯网——每日最新资讯28at.com

  • CSS 本身是一种安全技术。当 CSS 解析器遇到无效属性时,它会简单地忽略并继续。
  • JavaScript 不是一种安全技术。JS 代码中的单个语法错误可能导致整个应用程序失败。换句话说,当使用 JS 控制样式时,确保相应构造的功能正常工作是至关重要的。

现在让我们考虑一些你可以轻松用 CSS 替代 JS 的情况。dqf28资讯网——每日最新资讯28at.com

平滑滚动

以前,要实现平滑滚动,需要使用几行 JavaScript 代码。但现在,这个任务可以完全通过 CSS 的力量来解决。dqf28资讯网——每日最新资讯28at.com

现在你可以通过使用 CSS 属性 scroll-behavior 来实现平滑滚动。dqf28资讯网——每日最新资讯28at.com

dqf28资讯网——每日最新资讯28at.com

文本处理

CSS 提供了两个很棒的属性:text-overflow 和 line-clamp。它们允许我们修剪文本,同时让我们摆脱使用 JavaScript 代码或其他复杂方法来执行此类任务。这两个属性虽然不是新的,但非常有用。dqf28资讯网——每日最新资讯28at.com

text-overflow 属性

dqf28资讯网——每日最新资讯28at.com

这个属性控制文本在不适合一行的情况下如何显示。这个属性的一个完美例子是在卡片标题中使用 text-overflow: ellipsis,它会在被截断的文本末尾显示一个 Unicode 字符 …。dqf28资讯网——每日最新资讯28at.com

请记住,text-overflow: ellipsis 只有在与 white-space: nowrap 和 overflow: hidden 属性配合使用时才有效。dqf28资讯网——每日最新资讯28at.com

dqf28资讯网——每日最新资讯28at.com

line-clamp 属性

dqf28资讯网——每日最新资讯28at.com

line-clamp 属性在需要处理多行文本时非常有用。上面示例中的卡片描述展示了它的效果。dqf28资讯网——每日最新资讯28at.com

这个属性是 CSS Overflow Module Level 3 标准的一部分,虽然目前还处于草案阶段,但已经有大约 95% 的浏览器支持这个属性,但需要加上 -webkit- 前缀。dqf28资讯网——每日最新资讯28at.com

在使用它之前,重要的是要提到它不允许控制显示字符的数量。但它仍然非常有用。dqf28资讯网——每日最新资讯28at.com

要使用 line-clamp 属性,我们需要将其与 display: -webkit-box 和 -webkit-box-orient: vertical 结合使用。示例如下:dqf28资讯网——每日最新资讯28at.com

dqf28资讯网——每日最新资讯28at.com

总结

现代前端开发的世界正在迅速变化,我们不断得到新的机会来帮助我们更快、更好地完成工作。尝试使用 CSS 是非常有趣且有帮助的。如果在不使用 JS 的情况下可以实现相同的结果,请考虑使用 CSS。dqf28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-91021-0.html关于 CSS 的那些事儿,我从未被告知

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 阿里面试:NIO为什么会导致CPU 100% ?

下一篇: 阿里面试:NIO为什么会导致CPU100%?

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 对标苹果的灵动岛 华为带来实况窗功能

    对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    在今天下午的小米Civi 2新品发布会上,小米还带来了一款新的降噪蓝牙耳机Necklace,我们也在发布结束的第一时间给大家带来这款耳机的简单分享。现在大家能见到最多的蓝牙耳机
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 把LangChain跑起来的三个方法

    把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 学习JavaScript的10个理由...

    学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    日前iQOO手机官方宣布,新一代电竞旗舰iQOO 11S将会在7月4日19:00正式与大家见面。随着发布时间的日益临近,官方关于该机的预热也更加密集,截至目前已
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top