【译】谨慎使用CSS中的波浪选择器

最近我的一些项目都遇到了一些类似的样式问题。它们都错误地使用了波浪选择器,并造成了很多地方的CSS代码臃肿( CSS Bloat )。大家可能以前也都遇到或者使用过波浪选择器,毕竟它作为CSS选择器已经很长时间了, 甚至IE7都支持 。波浪选择器用来选择所有匹配到的兄弟元素。

一个例子

<ul>
<li class="something-important">Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
.something-important {color: red;
}
.something-important ~ li {font-style: italic;color: grey;
}

效果:

这里我们的波浪选择器匹配了 .something-important 的所有兄弟元素,item2,3,4。

所以问题在哪儿呢?

它太容易制造出脆弱的代码了。

我的经验里,使用波浪选择器一般都是通过type而不是class来选择兄弟元素的。这样会造成你不知道这个选择器写这儿到底是干嘛用的。上面这个例子我们就不知道 .something-important ~li 选择到的<li>标签是个啥,不如直接给这些li标签加上 .not-important 来的简单直接。

通常来说多敲几个字给每个元素都加上class可以给未来的维护减少很多不必要的麻烦。

“在写代码的时候,永远假设最后一个维护你的代码是一个知道你家住在哪儿的沉默的精神病人。写点人读得懂的代码。—— John Woods ”

用武之地

待编辑

避免CSS代码臃肿

我认为这篇文章并不仅仅就是告诉大家避免使用波浪选择器,更多的是让大家知道遇到CSS的问题时不要从加上更多的CSS的代码开始。这从来都不是保持代码可维护性的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML + CSS 实现 GitHub 项目标签、徽章样式

经常会在GitHub上项目介绍的README.md文件中看到许多漂亮的标签&#xff0c;这些标签可以显示version、stars、license等信息 我们可以通过 https://shields.io/ 这个网站在线制作图标&#xff0c;填写label、message、color三个字段&#xff0c;点击Make Badge就可以生成图标…

instant.page —— 一个 JS 脚本实现网站预加载,提升页面加载速度

instant.page 使用即时预加载技术&#xff0c;在用户点击之前预先加载页面。当用户的鼠标悬停在一个链接上超过 65 毫秒时&#xff0c;浏览器会对此页面进行预加载&#xff0c;当用户点击链接后&#xff0c;就从预加载的缓存中直接读取页面内容&#xff0c;从而达到缩短页面加载…

PWN-COMPETITION-HGAME2022-Week1

PWN-COMPETITION-HGAME2022-Week1enter_the_pwn_landenter_the_evil_pwn_landoldfashion_orwser_per_fatest_your_nctest_your_gdbenter_the_pwn_land 栈溢出&#xff0c;需要注意的是下标 i 的地址比输入s的地址更高 s溢出会覆盖 i &#xff0c;于是需要小心地覆写 i 的值&am…

Hexo 博客添加 README.md 以及部署到 GitHub 丢失/显示不正常解决方法

GitHub 项目的README.md为自述文件&#xff0c;可对该项目进行介绍&#xff0c;解释等。 使用 Github Pages 和 Hexo 搭建的博客&#xff0c;如果在最开始建立仓库的时候没有创建README.md文件&#xff0c;那么在后期如何添加呢&#xff1f; 添加方法&#xff1a;在根目录 so…

REVERSE-COMPETITION-HGAME2022-Week1

REVERSE-COMPETITION-HGAME2022-Week1easyasmcreakmeFlag Checker猫头鹰是不是猫easyasm 程序一开始将si设置为0&#xff0c;然后si和28比较&#xff0c;如果si小于28则进入循环 循环体中&#xff0c;si作为下标&#xff0c;从输入中取值存入al&#xff0c;然后al左移4位&…

谷歌浏览器检查更新时出错:无法启动更新检查(错误代码为 3: 0x80080005 -- system level)

谷歌浏览器检查更新报错&#xff1a;检查更新时出错&#xff1a;无法启动更新检查&#xff08;错误代码为 3: 0x80080005 – system level&#xff09;&#xff0c;如下图所示&#xff1a; 网上的解决方法都是因为谷歌被墙&#xff0c;所以要重新下载&#xff0c;事实上并不是…

PWN-COMPETITION-HGAME2022-Week2

PWN-COMPETITION-HGAME2022-Week2blindecho_severoldfashion_noteblind 访问/proc/self/mem即可修改当前进程的内存&#xff0c;.text段也是可修改的 程序开始的时候直接输出了write的地址&#xff0c;泄露libc&#xff0c;然后在__libc_start_main上喷射shellcode # -*- cod…

Sharepoint学习笔记—Site Definition系列-- 1、创建Site Columns

https://www.cnblogs.com/wsdj-ITtech/archive/2012/08/12/2470219.html Site Columns是Sharepoint网站的一个重要底层结构&#xff0c;它是一类可重用的列定义或模板&#xff0c;可以将其分配给一个或多个 SharePoint 网站的一个或多个列表。 一个Site Column是由几个属性定义…

利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 文章目录● 前言● 注册 Cloudflare● 添加站点● 修改DNS● 开启 HTTPS● 重定向强制 HTTPSHTTP&#xff08;超文本…

REVERSE-COMPETITION-HGAME2022-Week2

REVERSE-COMPETITION-HGAME2022-Week2xD MAZEupx magic 0fake shellcreakme2upx magic 1xD MAZE 迷宫题&#xff0c;不过不是上下左右&#xff0c;而是只有前进 0-512&#xff0c;1-64&#xff0c;2-8&#xff0c;3-1 每一次v14加上前进的单位后&#xff0c;需要保证map[v14]3…

Github+jsDelivr+PicGo 打造稳定快速、高效免费图床

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 本文原创首发于我的个人博客&#xff1a;www.itrhx.com&#xff0c;欢迎访问&#xff01; 本文在我个人博客上的链接…

用于科研的移动机器人平台推荐

作者&#xff1a;知乎用户 链接&#xff1a;https://www.zhihu.com/question/59738106/answer/268510238 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 最近看到一篇介绍机器人移动平台的文章&#xff0c;与题主分…

turtlebot3入门教程

旨在用于教育&#xff0c;研究&#xff0c;产品原型和爱好应用的目的。 TurtleBot3的目标是大幅降低平台的尺寸和价格&#xff0c;而不会牺牲性能&#xff0c;功能和质量。 由于提供了不同可选&#xff0c;如底盘&#xff0c;计算机和传感器&#xff0c;TurtleBot3可以通过各…

UI设计工具比较:Sketch、Adobe XD、墨刀、Mockplus、Axure RP

UI设计工具&#xff0c;分为2个派系。 其中&#xff0c;最大、最主流的派系&#xff0c;是Sketch、Adobe XD、墨刀这个派系。 这个派系的软件&#xff0c;操作方式、思路都非常接近&#xff0c;连常用快捷键都一样&#xff0c;会一个就等于都会了。 在一个无限大的画布上&…

光学字符识别 Tesseract-OCR 的下载、安装和基本用法

OCR&#xff1a;即Optical Character Recognition&#xff0c;光学字符识别&#xff0c;是指检查纸或者图片上打印的字符&#xff0c;通过检测暗、亮的模式确定其形状&#xff0c;然后用字符识别方法将形状翻译成计算机文字的过程&#xff1b; Tesseract-OCR&#xff1a;一款由…

利用官方支持为基于GitHub Pages的Hexo博客启用HTTPS

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; HTTP&#xff08;超文本传输协议&#xff09;&#xff0c;是一个基于请求与响应&#xff0c;无状态的&#xff0c;应…

标注功能介绍

Mockplus3.5.0.1版本中&#xff0c;新增了标注功能。多种标注模式&#xff0c;智能生成&#xff0c;随时查看。原型设计效率更高。 Mockplus的标注功能有以下四种模式&#xff1a; 1、无选中标注 在未选中任何组件时&#xff0c;按住Ctrl键&#xff0c;鼠标经过某个组件&#…

REVERSE-COMPETITION-HGAME2022-Week3

REVERSE-COMPETITION-HGAME2022-Week3Answers Windowscreakme3hardenedfishmanAnswer’s Windows 含有GUI的程序&#xff0c;ida打开&#xff0c;ShiftF12打开字符串窗口&#xff0c;发现"right"和"wrong" 对"right"查找交叉引用&#xff0c;来…

NuGet的简单使用

什么是NuGet&#xff1f; NuGet&#xff08;读作New Get&#xff09;是用于微软.NET开发平台的软件包管理器&#xff0c;是一个Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时&#xff0c;NuGet能够令你在项目中添加、移除和更新引用的工作变得更加…

Python3 爬虫学习笔记 C02 【基本库 requests 的使用】

Python3 爬虫学习笔记第二章 —— 【基本库 requests 的使用】文章目录【2.1】 requests 简介【2.2】 requests 基本用法 【2.3】 requests 构建 GET 请求 【2.3.1】 基本用法【2.3.2】 二进制数据抓取 【2.3.3】 添加 headers【2.4】 requests 构建 POST 请求 【2.5】 request…