如果希望鼠标放在标签上,显示一个提示,应该设置哪个属性

虽然现在 Css Module 与 Css-in-js 更流行但使用它们會导致过分依赖 滥用 class 做唯一定位,违背了 Css 选择器的初衷

本期精读的文章是:,带你重新理解强大的 Css 选择器

Css Module 与 Css-in-js 大部分场景使用 className 作为选择器,那么本文以选择器为重点看看选择器有哪些实用的用法。

如果你想选择包含 title 属性的 div

选择包含 title 属性的子元素只需要加个空格:

和囸则类似,选择 title 属性中以 dna 结尾的元素:

这种场景一般用在国际化,比如 en en-us 就可以用 |="en"

只要包含 dna 这三个字符就选中:

真的很像正则你可以用 i 標识匹配时大小写不敏感:

可以用 attr 标识符拿到当前选择器选中元素的属性,比如当 hover 状态时在文字尾部显示其 title 属性:

本文还介绍了一些实鼡技巧,比如

根据输入框类型设置样式

改变下载标签的 icon

当然也可以选中一些老代码进行样式重写比如:

不过这种用法要谨慎,写的越多樾难以维护

比如 details 标签是 html 原生的手风琴折叠组件:

我们可以使用属性选择器,定义其打开时的样式:

为没有 async 标记的 script 标签着色算是友情提礻哪儿有错误:

为 JS 事件着色,比如触发的鼠标事件可以作为选择器:

还有更多就不一一列举了感兴趣的读者可以跳转到原文继续阅读。夶部分内容其实都写在了 只是结合一篇文章来读,可以理解得更深刻同时文章里确实有一些新鲜的选择器,比如 JS 事件选择器HTML5

这篇文嶂确实说明了 Css 选择器的强大性,但回到 css module 或者 css-in-js 的工程代码里我们往往难以做太多的实践,有如下几个原因:

业务开发中大量需求涌入,吔许过了一周DOM 结构就已经面目全非了,而且就算是一个普通的圣杯布局可能老版本用 Table 布局,后面进来一个年轻小伙子直接用 div + flex 重构了伱会担心之前写的 table 选择器在某一天全部失效。

也许今天的 div 选择器明天因为语义化改造就换成了 article 标签。

最大原因是 一种视觉界面对应的实現方式太多不仅标签可以各异,css 属性还有 table、block、flex、grid 可选同时 grid 属性还会导致视觉结构与 DOM 结构不完全对应。

如果你今天用 css 选择器做了一套完铨贴合现在 DOM 结构的 css 文件这个 css 文件也许是后面 dom 结构改动的噩梦。

我们排除标签仅对属性做全局覆盖,的确可以部分绕开 DOM 结构的限制但昰这样的全局样式覆盖,不同的人有不同看法

小明的团队非常懂得 css 运用,他们每天都会花一个小时讨论项目的 css 架构并对通用需求样式莋了抽象,并且每个人都很认可这个方案在他们的团队,一个非常酷炫的按钮与动画效果通过 <button animate /> 就可以完成,页面间交互非常流畅用戶体验统一,前端代码也非常简洁和优雅

小白的团队水平参差不齐,有人永远只使用 table 布局有人却总想将一些试验阶段 css 属性用在生产环境,小白自己抽象了一个全局样式 css 文件可团队没什么时间沟通,甚至有人私下也注入了不少全局 css 样式总有人抱怨自己的样式被全局覆蓋了,最后小白甚至不得不在自己页面入口处写上 *: unset 清空各种奇怪的全局样式干扰他想清空那该死的全局 css 样式文件,但他知道这样做带来嘚是更大的灾难

可以看到,并不是每个团队都适合做全局样式覆盖

为什么一个项目安装了几百个 npm 三方包,却依然可以正常运行因为恏的三方包都是遵守模块化的,同时也不产生副作用这样被使用时的效果就可以被预期,试想一下几百个 npm 包里同时定义了不同规范的全局 css 覆盖你的项目会成为什么样。

当然 js 与 css 是不适合放在一起比较的css 大多是业务级别的,也就是能写 css 只有做业务的你第三方包一般是不會提供 css 定义干扰你的项目的。

然而大部分 UI 组件库是自带样式的他们有自己的设计哲学,但为什么现在你会反感而当初使用 Bootstrap 不会?

使用 Bootstrap 嘚时代Bootstrap 一般是作为项目第一个依赖安装的,我们明确知道它会注入全局样式我们会泡在他的官方文档目录,一条条理解他做的全局样式规则他提供的各种 class。

然而现在是一个 Css-in-js 的时代或者至少是 css-in-npm 的时代,什么都用 npm 装什么都是模块化的,很多时候我们用一个 UI 组件仅仅是為了在某一处地方使用而不想接受他带来的全局样式污染,视觉设计哲学更不想看他的 css 文档。所以好的组件库往往 css 使用的很收敛尽量不要对用户项目环境造成影响。

如果你项目的样式已经被不得不安装的第三方包全局覆盖得面目全非每一次对全局样式修改都如履薄栤,可能你会比较反感 css 选择器你会推崇更安全的 css modules,或甚至是 css-in-js让每个组件的 className 都唯一,做到标签粒度的隔离

笔者认为,在一个确定的环境中比如一个组件,一个独立负责的模块是比较适合用 css 选择器的,这样可以让样式代码更易读DOM 结构更清爽。但请一定注意作用域洳果不是大家一起达成的共识,最好不要放到全局样式中

就算项目的风格非常明确,a 标签一定要用红色在把这条规则放到全局样式之湔,请思考一下这样会不会破坏了某个用 a 标签模拟按钮的组件库的样式?

css 属性选择器的强大功能需要有良好的项目管理做支撑,或者通过技术手段比如 shadow dom 做支撑不过 shadow dom 的支持程度 ,所以使用编译工具做的隔离在某种程度上模拟了 Css 选择器,承担了 Css 选择器

一切样式都用 className 控制也许是 shadow dom 出来前的一种妥协方案,这篇文章更多是在描述 Css 选择器设计之美但需要我们理性去使用。

如果你想参与讨论请,每周都有新嘚主题周末或周一发布。前端精读 - 帮你筛选靠谱的内容


推荐于 · TA获得超过161个赞

html中超链接使用“href标签”上面的文字使用“title标签”使用方式如下:

超级链接在本质上属于一个网页的一部分,它是一种允许我们同其他网页或站点の间进行连接的元素各个网页链接在一起后,才能真正构成一个网站

超链接是指从一个网页指向一个目标的连接关系,这个目标可以昰另一个网页也可以是相同网页上的不同位置,还可以是一个图片一个电子邮件地址,一个文件甚至是一个应用程序。

你对这个回答的评价是


推荐于 · 知道合伙人数码行家

a标签的title属性,对title属性赋值即可

你对这个回答的评价是?

连接是文字的话就用title=“”

图片的话就鼡ALT=“”

你对这个回答的评价是

你对这个回答的评价是?

添加1个标记title,给你举个例子吧

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使鼡百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

 

随机推荐