”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > CSS 的演变:从基础到现代魔法

CSS 的演变:从基础到现代魔法

发布于2024-09-13
浏览:642

The Evolution of CSS: From Basics to Modern-Day Magic

CSS,即层叠样式表,自 20 世纪 90 年代末首次出现以来,一直是网页设计领域的无名英雄。将其视为网络世界的神奇衣橱——将简单、无聊的 HTML 转变为视觉上令人惊叹的交互式仙境。在本文中,我们将深入探讨 CSS 的迷人演变,从它卑微的开始到现在作为每个 Web 开发人员工具包中的终极向导的角色。

早期:CSS 1.0 和 2.0

我们的故事始于 1994 年,当时一位名叫 Håkon Wium Lie 的有远见的人提出了一种用于设计网页样式的新语言。快进到 1996 年,万维网联盟 (W3C) 发布了第一个官方 CSS 1.0 规范。那时,CSS 就像一个小巫师,书中只有几个咒语:

颜色和背景:基本文本和背景颜色——还没有彩虹!
Font Magic: 对字体的有限控制,例如选择大小、样式和系列。
文本技巧:简单的文本对齐和装饰。
间距魔法:带有边距、填充和边框的基本布局控件。
然后 1998 年 CSS 2.0 出现了,我们的小巫师学到了一些新技巧:

元素定位:静态、相对、绝对和固定定位。
Z-Index: 将元素堆叠在一起,就像层蛋糕一样。
媒体类型:屏幕、打印机等的不同样式规则。
高级选择器: 酷炫的新选择器,例如 :hover 可以让事情变得有趣。
但也有一个黑暗的一面:浏览器支持不一致。开发人员经常不得不使用古怪的“黑客”和咒语来让东西在不同的浏览器上工作,这使得 CSS 2.0 感觉就像用一根破损的魔杖施展咒语!

过渡阶段:CSS 2.1 和浏览器之战

欢迎来到 2000 年代初,这个时期被称为“浏览器战争”。将其想象为 Internet Explorer 和 Netscape Navigator 之间的一场史诗般的战斗,双方都试图用自己对 CSS 的解释来超越对方。结果呢?行为不一致,让开发人员感到沮丧。

CSS 2.1 于 2011 年问世,这是一次适度的更新,旨在修复 CSS 2.0 中的错误和歧义。它给场景带来了更多的稳定性,但真正的魔法仍在后台酝酿......

现代时代:CSS3 和现代魔法的兴起

魔法终于来了!从 2000 年代末开始,CSS3 开始推出,但这一次有所不同——它是模块化的! CSS3 不仅仅是一本咒语书;它也是一本咒语书。它是一个完整的库,具有独立的模块,涵盖从布局(Flexbox、Grid)到动画等所有内容。这种新方法让浏览器更快地采用功能,突然之间,网络开发人员就拥有了一些非常强大的魔法!

1. Flexbox 和 Grid:布局向导

Flexbox(灵活框布局):Flexbox 就像一个一维布局向导,使创建复杂布局变得轻而易举。需要对齐或分布容器中的物品?无论您的内容多么不可预测,Flexbox 都能满足您的需求!
CSS 网格: 将网格视为布局大师。它带来了二维控制,使开发人员能够制作复杂的响应式网格,而无需诉诸讨厌的浮动或定位技巧。借助 grid-template-columns 和 grid-template-rows 等工具,您就是布局宇宙的主人。

2.响应式设计:像变色龙一样适应

随着智能手机和平板电脑的兴起,网站需要比以往更具适应性。输入媒体查询——让您的网站根据宽度、高度和分辨率等设备特征改变其外观的咒语。这就是“移动优先”方法的用武之地:首先针对较小的屏幕进行设计,然后针对较大的屏幕进行增强。结果呢?像手套一样适合各种设备的网络!

3. 动画和过渡:让页面栩栩如生

有了 CSS3,网络有了自己的生命力!开发人员可以直接在 CSS 中创建流畅、具有视觉吸引力的动画,无需使用 JavaScript。想象一下这样的效果:

过渡: 由状态变化(如悬停效果)触发的简单动画,具有过渡属性、过渡持续时间等。
动画:使用@keyframes创建多阶段动画的更复杂序列。
突然之间,网站可以跳舞、跳跃和做出反应——吸引用户并使网络变得更加活跃!

4. 自定义属性(CSS 变量):您的个人药水成分

CSS 变量,也称为自定义属性,使样式变得动态且可定制。想要在几秒钟内更改网站的主题吗?定义一次神奇的成分并在整个样式表中使用它们。例如:

:root {
  --primary-color: #3498db;
  --secondary-color: #2ecc71;
}

body {
  background-color: var(--primary-color);
  color: var(--secondary-color);
}

现在您可以更改单个值,整个网站就会像魔术一样发生变化!

5. 变换和过滤器:掌握视觉效果

CSS3 还为我们提供了变换和过滤器——用于弯曲和扭曲现实的工具:

变换:应用旋转、缩放、平移和倾斜等效果来创建令人惊叹的视觉效果。
滤镜:添加模糊、灰度或阴影等动态效果,使元素流行起来,而无需依赖外部图形软件。

6. CSS Houdini:解锁终极魔法

现在,来认识一下 CSS Houdini,这是一组新的 API,可让开发人员更深入地访问浏览器的 CSS 渲染引擎。想象一下编写您自己的 CSS 魔法 — 带类型检查的自定义属性、新的布局算法等等!虽然仍处于早期阶段,但 Houdini 有潜力改变一切。

展望未来:CSS 的未来

我们神奇的语言的下一步是什么?握紧你的魔杖——还有更多精彩等着你:

容器查询:基于容器大小的样式,而不仅仅是视口。
子网格:增强的 CSS 网格功能,实现更精确的控制。
CSS 嵌套: Sass 和其他预处理器的一个熟悉功能即将引入原生 CSS。
新颜色函数: 支持现代色彩空间和 color-mix() 等函数。
CSS 将变得更加强大,突破网页设计的界限。所以,拿起你的魔杖(或者,你知道,你的键盘)并准备好创造一些网络魔法!

版本声明 本文转载于:https://dev.to/ram_nathawat/the-evolution-of-css-from-basics-to-modern-day-magic-4nk7?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 使用 Golang 进行身份验证、授权、MFA 等
    使用 Golang 进行身份验证、授权、MFA 等
    "Ó o cara falando de autenticação em pleno 2024!" Sim! Vamos explorar como realizar fluxos de autenticação e autorização, e de quebra, entender a dife...
    编程 发布于2024-11-07
  • 什么是“export default”以及它与“module.exports”有何不同?
    什么是“export default”以及它与“module.exports”有何不同?
    ES6 的“默认导出”解释JavaScript 的 ES6 模块系统引入了“默认导出”,这是一种定义默认导出的独特方式。 module.在提供的示例中,文件 SafeString.js 定义了一个 SafeString 类并将其导出为默认导出using:export default SafeStri...
    编程 发布于2024-11-07
  • SafeLine 如何通过高级动态保护保护您的网站
    SafeLine 如何通过高级动态保护保护您的网站
    SafeLine 由长亭科技在过去十年中开发,是一款最先进的 Web 应用程序防火墙 (WAF),它利用先进的语义分析算法来提供针对在线威胁的顶级保护。 SafeLine 在专业网络安全圈中享有盛誉并值得信赖,已成为保护网站安全的可靠选择。 SafeLine 社区版源自企业级 Ray Shield ...
    编程 发布于2024-11-07
  • 在 React 中创建自定义 Hook 的最佳技巧
    在 React 中创建自定义 Hook 的最佳技巧
    React 的自定义 Hooks 是从组件中删除可重用功能的有效工具。它们支持代码中的 DRY(不要重复)、可维护性和整洁性。但开发有用的自定义钩子需要牢牢掌握 React 的基本思想和推荐程序。在这篇文章中,我们将讨论在 React 中开发自定义钩子的一些最佳策略,并举例说明如何有效地应用它们。 ...
    编程 发布于2024-11-07
  • 如何解决 PHPMailer 中的 HTML 渲染问题?
    如何解决 PHPMailer 中的 HTML 渲染问题?
    PHPmailer的HTML渲染问题及其解决方法在PHPmailer中,当尝试发送HTML格式的电子邮件时,用户可能会遇到一个意想不到的问题:显示实际的HTML代码在电子邮件正文中而不是预期内容中。为了有效地解决这个问题,方法调用的特定顺序至关重要。正确的顺序包括在调用 isHTML() 方法之前设...
    编程 发布于2024-11-07
  • 通过 REST API 上的 GraphQL 增强 React 应用程序
    通过 REST API 上的 GraphQL 增强 React 应用程序
    In the rapidly changing world of web development, optimizing and scaling applications is always an issue. React.js had an extraordinary success for fr...
    编程 发布于2024-11-07
  • 为什么我的登录表单无法连接到我的数据库?
    为什么我的登录表单无法连接到我的数据库?
    登录表单的数据库连接问题尽管结合使用 PHP 和 MySQL 以及 HTML 和 Dreamweaver,您仍无法建立正确的数据库连接问题。登录表单和数据库之间的连接。缺少错误消息可能会产生误导,因为登录尝试仍然不成功。连接失败的原因:数据库凭据不正确: 确保用于连接数据库的主机名、数据库名称、用...
    编程 发布于2024-11-07
  • 为什么嵌套绝对定位会导致元素引用其父级而不是祖父母?
    为什么嵌套绝对定位会导致元素引用其父级而不是祖父母?
    嵌套定位:绝对内的绝对嵌套的绝对定位元素可能会在 CSS 中表现出意想不到的行为。考虑这种情况:第一个 div (#1st) 位置:相对第二个 div (#2nd) 相对于 #1st 绝对定位A第三个div(#3rd)绝对定位在#2nd内问:为什么#3rd相对于#2nd而不是#1st绝对定位?A: ...
    编程 发布于2024-11-07
  • 如何高效地从字符串中剥离特定文本?
    如何高效地从字符串中剥离特定文本?
    高效剥离字符串:如何删除特定文本片段遇到操作字符串值的需求是编程中的常见任务。经常面临的一项特殊挑战是删除特定文本片段,同时保留特定部分。在本文中,我们将深入研究此问题的实用解决方案。考虑这样一个场景,您有一个字符串“data-123”,您的目标是消除“data-”前缀,只留下“123”值。为了实现...
    编程 发布于2024-11-07
  • 如何将通讯录与手机同步?在 Go 中实现 CardDAV!
    如何将通讯录与手机同步?在 Go 中实现 CardDAV!
    假设您帮助管理一个小型组织或俱乐部,并拥有一个存储所有会员详细信息(姓名、电话、电子邮件...)的数据库。 在您需要的任何地方都可以访问这些最新信息不是很好吗?好吧,有了 CardDAV,你就可以! CardDAV 是一个得到良好支持的联系人管理开放标准;它在 iOS 联系人应用程序和许多适用于 A...
    编程 发布于2024-11-07
  • C/C++ 开发的最佳编译器警告级别是多少?
    C/C++ 开发的最佳编译器警告级别是多少?
    C/C 开发的最佳编译器警告级别编译器在检测代码中的潜在问题方面发挥着至关重要的作用。通过利用适当的警告级别,您可以尽早识别并解决漏洞或编码错误。本文探讨了各种 C/C 编译器的建议警告级别,以提高代码质量。GCC 和 G 对于 GCC 和 G,广泛推荐的警告级别是“-墙”。此选项会激活一组全面的警...
    编程 发布于2024-11-07
  • 如何使用 Vite 和 Axios 在 React 中实现 MUI 文件上传:综合指南
    如何使用 Vite 和 Axios 在 React 中实现 MUI 文件上传:综合指南
    Introduction In modern web applications, file uploads play a vital role, enabling users to upload documents, images, and more, directly to a ...
    编程 发布于2024-11-07
  • 为什么 `justify-content: center` 不将 Flex 容器中的文本居中?
    为什么 `justify-content: center` 不将 Flex 容器中的文本居中?
    带有 justify-content 的非居中文本:center在 Flex 容器中, justify-content 属性使 Flex 项目水平居中,但是它无法直接控制这些项目中的文本。当文本在项目内换行时,它会保留其默认的 text-align: start 值,从而导致文本不居中。Flex 容...
    编程 发布于2024-11-07
  • 情感人工智能和人工智能陪伴:人类与技术关系的未来
    情感人工智能和人工智能陪伴:人类与技术关系的未来
    情感人工智能和人工智能陪伴:人类与技术关系的未来 人工智能(AI)不再只是数据分析或自动化的工具。随着情感人工智能的进步,机器不再只是功能助手,而是演变成情感伴侣。利用情商 (EI) 的人工智能陪伴正在改变我们与技术互动的方式,提供情感支持,减少孤独感,甚至增强心理健康。但这些人工智能伴侣在复制人类...
    编程 发布于2024-11-07
  • ## Go 中的空接口:什么时候它们是个好主意?
    ## Go 中的空接口:什么时候它们是个好主意?
    Go 中空接口的最佳实践:注意事项和用例在 Go 中,空接口(interface{})是一个强大的工具,它允许抽象不同类型。然而,它们的使用引发了关于最佳实践以及何时适合使用它们的问题。空接口的缺点引起的一个担忧是类型安全性的损失。使用空接口时,编译器无法在编译时强制执行类型检查,从而导致潜在的运行...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3