你也许不知道,CSS 也有编程能力?

栏目: CSS · 发布时间: 7年前

内容简介:原文作者:Jeremy Keith译者:UC 国际研发 Jothy

你也许不知道,CSS 也有编程能力?

原文作者:Jeremy Keith

译者:UC 国际研发 Jothy

写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。

如今编程界有一种令人担忧的趋势——那些 “真正的” 程序员对 CSS 嗤之以鼻。 他们指出,这只是一种声明性语言,而不是一种功能齐全的编程语言。 啧啧啧,它甚至不是一种脚本语言。

这可能是实话,但这并不意味着 CSS 不强大。 它的强大体现在与传统语言不同的地方。

以 CSS 选择器为例。 在最基本的层面上,它们像条件语句一样工作。 这是一个标准的 if 语句:

你也许不知道,CSS 也有编程能力?

条件需要求值为 true 才能执行花括号中的代码。 听起来有点熟?

你也许不知道,CSS 也有编程能力?

这是一个非常简单的映射,但如果条件语句更复杂怎么办?

你也许不知道,CSS 也有编程能力?

那么,这就是后代选择器的作用:

你也许不知道,CSS 也有编程能力?

实际上,通过使用子组合器,兄弟组合器和相邻的兄弟组合器,我们可以得到更具体的信息:

  • condition1 > condition2

  • condition1 ~ condition2

  • condition2 + condition2

AND 只是布尔逻辑的一部分。 还有 OR:

你也许不知道,CSS 也有编程能力?

在 CSS 中,我们使用逗号分隔条件:

你也许不知道,CSS 也有编程能力?

我们还使用 :not() 伪类来完成布尔可能性的集合。如果你添加了数量查询,通过 :nth-child 及其同类,CSS 看起来更像图灵完备了。我见过人们使用相邻的兄弟组合器和 :checked 伪类来构建状态机。

无论如何,我的观点是 CSS 选择器非常强大。然而,我们经常故意选择性地不使用这种力量。 OOCSS(面向对象的 CSS),BEM 和 Smacss 存在的理由正是故意限制选择器的功能,将其局限于类选择器。

从表面上看,这似乎是一个奇怪的选择。毕竟,我们不会故意将自己局限在编程语言的某个子集中,是吧?

答案是我们会,并且我们已经这样做了。这就是模板语言的用途。无论是 PHP 的 Smarty 还是 Twig,还是 JavaScript 的 Mustache,Nunjucks 或 Handlebars,它们都是实现了一部分小而美的功能。有些人为自己没有逻辑而自豪。如果你发现自己试图做一些模板化语言没有提供的东西,那么这是一个好的迹象,你不用试图在模板中这样做;它应该在控制器中完成。

因此,模板语言的存在是为了强制简化并确保复杂性发生在其他地方。这与 BEM 等的故事类似。如果你发现无法在 CSS 中选择某些内容,则表明你可能需要在 HTML 中添加另一个类名。复杂性仅限于 HTML 标记,以保持 CSS 更直接,模块化和可维护。

但是,我们也不要忘记这也是一个选择。并不是说 CSS 本身就无法执行复杂的条件。恰恰相反。正是因为 CSS 选择器(和级联)非常强大,我们才选择划清界限。

英文原文:

https://adactio.com/journal/14574

预告: 第13届D2前端技术论坛将于2019年1月6日在杭州举办

好文推荐:

我想学Flutter,但是我不知道应该如何开始?

“UC国际技术”致力于与你共享高质量的技术文章

欢迎关注我们的公众号、将文章分享给你的好友

你也许不知道,CSS 也有编程能力?


以上所述就是小编给大家介绍的《你也许不知道,CSS 也有编程能力?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

爆裂

爆裂

[美] 伊藤穰一、[美] 杰夫·豪 / 张培、吴建英、周卓斌 / 中信出版集团 / 2017-9-1 / 65.00元

越是在发生重大改变的时刻,越是会出现两极分化,赢家、输家有时只在一念间。未来已经装上了全新的操作系统。这是一个重大升级,对我们而言,随之而来的则是陡峭的学习曲线。在指数时代,替换旧逻辑,我们的思维亟需与世界对接,推翻过去已经成为大众所接受的常识,学会差异化思考才能屹立不倒,不被卷入历史的洪流。 在《爆裂》一书中,伊藤穰一和杰夫·豪将这一逻辑提炼为9大原则,帮助人们驾驭这一动荡时刻,应对当下的......一起来看看 《爆裂》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具