内容简介:原文作者:Jeremy Keith译者:UC 国际研发 Jothy
原文作者:Jeremy Keith
译者:UC 国际研发 Jothy
写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。
如今编程界有一种令人担忧的趋势——那些 “真正的” 程序员对 CSS 嗤之以鼻。 他们指出,这只是一种声明性语言,而不是一种功能齐全的编程语言。 啧啧啧,它甚至不是一种脚本语言。
这可能是实话,但这并不意味着 CSS 不强大。 它的强大体现在与传统语言不同的地方。
以 CSS 选择器为例。 在最基本的层面上,它们像条件语句一样工作。 这是一个标准的 if 语句:
条件需要求值为 true 才能执行花括号中的代码。 听起来有点熟?
这是一个非常简单的映射,但如果条件语句更复杂怎么办?
那么,这就是后代选择器的作用:
实际上,通过使用子组合器,兄弟组合器和相邻的兄弟组合器,我们可以得到更具体的信息:
-
condition1 > condition2 -
condition1 ~ condition2 -
condition2 + condition2
AND 只是布尔逻辑的一部分。 还有 OR:
在 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日在杭州举办
好文推荐:
“UC国际技术”致力于与你共享高质量的技术文章
欢迎关注我们的公众号、将文章分享给你的好友
以上所述就是小编给大家介绍的《你也许不知道,CSS 也有编程能力?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 听说玩这些游戏能提升编程能力?
- 一叶见秋--编程语言能力的差异
- 只要4步,把编程知识内化为能力!
- 闲鱼是如何利用 RxJava 提升异步编程能力的
- 软件测试员必须编写代码吗?掌握多少编程能力才够?
- CCF CCSP2016:算法编程是最基本、最重要的能力
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithm Analysis in Java
Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00
As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!