您现在的位置是:网站首页> 编程资料编程资料
深入理解CSS中选择器的逻辑处理
2021-09-05
850人已围观
简介 这篇文章主要介绍了CSS中选择器的逻辑处理,深入探讨了浏览器解析选择器的方式,需要的朋友可以参考下
在过去的很长一段时间中,我们都说 CSS 是不带有任何逻辑的,意思是在 CSS 中没有控制流,也没有某种类似于其他编程语言的方式来组织 CSS。CSS 天生缺乏逻辑性的问题导致了预处理器的出现。然而业界却对 CSS 预处理器褒贬不一,支持预处理器的人认为这弥补了 CSS 缺失的特性;而反对预处理器的人则认为 CSS 的设计初衷就不应该带有逻辑性,他们认为根本不应该引入预处理器这个概念。
然而,一种独特的思考方法最近突然蹦入了我的脑袋。它让我感到 CSS 确实拥有逻辑性!很少有人真正那么想过,这大概也是我们一直认为 CSS 的逻辑性匮乏的最大原因吧。
我发现我们可以将复合选择器理解为:主体部分 + 条件部分。首先来看一个例子:
- div.sidebar .login-box a.btn span {
- /*...*/
- }
在这个复合选择器由主体部分是 span,而条件部分是 IF (inside .btn) AND IF (on a) AND IF (inside .login-box) AND IF (inside .sidebar) AND IF (on div)。
也就是说,一个选择器的每一部分都是一个 if 语句,需要在解析选择器时被满足(或者不满足)。有了这种微妙的而又全新的认识,如今我们回头再看看自己曾经写出的 CSS 代码,我们将会意识到选择器写的好或者坏,会对效率产生直接的影响。我们真的会写出下面这段逻辑吗?(伪代码):
- @if exists(span) {
- @if is-inside(.btn) {
- @if is-on(a) {
- @if is-inside(.login-box) {
- @if is-inside(.sidebar) {
- @if is-on(div) {
- # Do this.
- }
- }
- }
- }
- }
- }
也许不会。这看上去太不直接,也太
相关内容
- 一波CSS制作的三角形和圆形小按钮示例利用CSS3实现文本框的清除按钮相关的一些效果用CSS3写的模仿iPhone中的返回按钮HTML5+CSS3实现的音量调节旋转按钮动态特效源码
- 详细解读CSS中的伪类afterCSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- CSS中的选择符实际使用指南
- 解析css中的选择符命名
- CSS中的一些百分比相关调试经验分享
- 深入解读CSS的OOCSS和SMACSS以及BEM
- 在移动Web页面中使用CSS固定页脚
- 详解CSS中的栅格系统
- CSS中固定宽度布局的详细教程CSS中将Span标签设置为固定宽度的方法CSS三列布局两端固定宽度中间自适应CSS三栏布局探讨——中间固定宽度两边自适应宽度
- 使用css实现圆角图形绘制CSS3制作圆角图片和椭圆形图片Css3圆角边框制作代码CSS的一些圆角图形实例分享CSS3绘制圆角矩形的简单示例纯CSS实现圆角折叠菜单的方法CSS实现反方向圆角的示例代码