如何通过CSS路径修改字体样式?结合font-family和选择器定位

说白了,改CSS字体就是选对元素、用对字体名、管好优先级和自定义字体加载这几个关键点。
先说最重要的,选元素得精准,去年我们跑那个项目,就因为用了错误的类选择器,导致大半页面字体没变,排查了半天。
另外一点,font-family得按顺序写,浏览器会一个一个找,最后得有个备选方案,比如.text{font-family: 'MyFont', Arial, sans-serif;},还有个细节挺关键的,自定义字体用@font-face引入时,记得加font-display: swap,去年我们用auto,结果加载时文本全白屏,用户反馈特惨。
等等,还有个事,优先级太容易踩坑,比如某个角落用了!important,整个样式表可能都得重写。
说实话挺坑的,但解决后效率确实高。

其实很简单,选器、字体、优先级、自定义字体加载,四个环环相扣。
比如去年我们测试3 000量级活动页面,发现用了CDN加子集化,字体加载速度直接翻倍。
但后来发现不对,CDN缓存没设置对,又得手动清理。
最后提醒个坑,自定义字体路径写错,9 9 %是路径问题,少看一眼就可能卡死半天。
建议先从简单元素选择器开始测,逐步加复杂度。

CSS选择器优先级计算:!important的替代方案

1 . 尽量用类和ID,ID用得少,类用得多。
2 . ID用一次,类可以用很多次。
3 . 深层嵌套选择器要改,用扁平化。
4 . CSS变量好,定义全局变量,方便覆盖。
5 . BEM命名规范,块、元素、修饰符,冲突少。
6 . CSS模块化,类名加唯一哈希,避免污染。
7 . 样式加载,先基础,后组件,最后主题。
8 . BEM和Utility-First,大型项目用BEM,工具类用Utility-First。
9 . 特异性计算,内联最优先,然后ID,类,元素。
1 0. 别用!important,破坏规则,调试难,组件化差。
你自己掂量。

css选择器有哪些?各种选择器优先级大小顺序

说实话,CSS选择器这东西,我当年刚学的时候也头疼。
你列的这些选择器,确实把基础都盖满了。

就拿标签名选择器来说吧,我当年接手过一个老项目,代码里全是
这种写法。
当时老板说为了兼容老浏览器,我就没改。
结果后来发现,每次改版都得手动一个个删掉,真是够折腾的。
现在主流都用外部样式表,根本不用碰这些 inline style。

类选择器.divClass这玩意儿用得最多了。
我之前做的那个电商网站,商品列表那个
,里面套着个,CSS里就这么写.product-list .price{color: green;}。
有意思的是,后来改活动页的时候,发现有个地方写成了.product-list > .price(后代选择器),结果嵌套层级多了,优先级不一样,价格颜色显示混乱了。
当时真是抓狂,最后硬是找了个通配符加了个!important才搞定。

ID选择器myDiv优先级最高,这点我一直记得。
有次做表单验证,用户输入框<input id="username" type="text">,本来想用.form-control统一样式,结果忘了给username单独设样式,导致验证错误提示没颜色。
这块我没亲自跑过,但数据我记得是ID比类多用了大概6 0%左右,毕竟ID代表唯一,类更灵活。

后代选择器.divClass span这用法特别。
我有个客户做知识付费网站,他们的课程卡片是个.course-card,里面标题是

,简介是

,本来想统一.course-card h3 和.course-card p颜色,结果有个第三方组件用了.course-card .content span,导致样式被覆盖。
后来我就琢磨了,后代选择器虽然能精确定位,但写多了容易出bug。

群组选择器div, span, img这招我常用。
比如某个页面需要给所有元素加灰色背景,div, span, p, img, a{background: eee;},一网打尽。
不过有个坑得注意,优先级相同时,会按顺序计算,第一个匹配到的生效。
我记得有次加全局阴影,结果div第一个,div多了个box-shadow,后来发现是另一个.card里的div没加阴影,真是麻烦。

你说的优先级计算,确实这么算。
但有个特例得注意,比如divmyDiv,虽然ID优先级1 00,但因为是后代选择器,整体优先级是1 00+1 =1 01 ,比.divClass span的1 1 高。
当时做表单的时候,表单域

<input class="form-control" name="username">,本来想用.form-control统一,结果form1 .form-control优先级更高,样式就乱套了。

说实话,CSS优先级这东西,写多了就容易混乱。
我有个习惯,重要元素直接用ID,普通元素用类,布局结构用标签,关键位置再加个!important。
当然,这只是我的个人风格,你用啥方法都行,关键是保持一致。

css的基本选择器有哪几种

说实话,CSS选择器这事儿吧,我当年刚学的时候也头疼过。
标签选择器这玩意儿最直接,就像你说的,选所有同类元素。
我有个项目就是用标签选择器统一设置所有

标签的字体,一开始觉得挺好,结果后来发现某个老设计师做的模块里混进了几个伪装成

,全被统一改样了,当时真是哭笑不得。

class选择器我用的最多。
比如做组件库的时候,一个按钮可能就有btn btn-primary两个class,优先级高那个影响大。
有意思的是,class选择器有个骚操作,你可以用element.class这种组合方式,比如.btn.active,这在UI交互里特别实用。
不过要注意,class太泛滥的话,页面渲染慢是肯定的,我这有个老项目,几百个class的DOM,浏览器卡成PPT。

id选择器这东西,我基本只用在全局导航或者弹出层上。
比如main-nav、login-modal,这种唯一标识的元素用id最合适。
但有个坑,以前有个客户非要我在一堆营销Banner上用id,结果他换了几个Banner,忘了改id,整个页面样式乱成一锅粥。
所以现在教新人,我第一句就讲:id在一个页面里必须唯一,别乱用。

优先级这块,我印象最深的是内联样式,这玩意儿太霸道了。
有次改一个老系统,改CSS根本没用,得去改HTML里直接加的style="color: red;"。
后来发现是某个插件默认加了内联样式,改了半天。
所以现在写CSS,我尽量不直接用内联,改class或者id方便多了。

整体来说,这三者得配合着用。
标签选基础,class搞复用,id做特殊标记。
不过现在CSS3 新选择器也多了,比如:hover、[data-type="foo"]这种,用起来更灵活,但兼容性还是得看情况。
我有个项目用:focus做键盘导航,结果IE1 1 直接卡死,真是让人头疼。