찾다
웹 프론트엔드HTML 튜토리얼CSS的低权重原则-避免滥用子选择器_html/css_WEB-ITnose

CSS设置的样式是可以层叠的,如下面[代码1][代码1]

<style type="text/css">    span{font-size: 40px;}    .test{color:red;}</style><span class="test">CSS的低权重原则</span>

“CSS的低权重原则”既可以的到“font-size:40px”的样式,又可以得到“color: red”的样式。如果两个不同选择符设置的样式有冲突,又会如何?如下面[代码2][代码:CSS层叠有冲突的情况]

<style type="text/css">    span{font-size: 40px;color:green}    .test{color:red;}</style><span class="test">CSS的低权重原则</span>

“CSS的低权重原则”颜色会是什么呢?是对“span”设置的“color:green”呢,还是第“.test”设置的“color:red”呢?这就涉及CSS选择符的权重问题了。

CSS的选择符是有权重的, 当不同选择符的样式设置有冲突时,会采用权重高的选择符设置的样式。权重的规则是这样的: HTML标签的权重是1,class的权重是10,id的权重是100,例如p的权重是1,“div em”的权重是1+1=2,“strong.demo”的权重是10+1=11,“#test.red”的权重是100+10=110.

[代码2]中,选择符span的权重是1,“.test”的权重是10,所以“CSS的低权重原则”的color应该是red。

但是如果是如下[代码3]时,又会如何呢?

<style type="text/css">span{font-size: 40px;}.test{color:red;}.test2{color: green}</style><span class="test test2">CSS的低权重原则</span>

span的标签同时挂了test和test2两个class,他们的权重都是10,那么“CSS的低权重原则”的color又该是哪个呢? 如果 CSS选择符权重相同,那么样式就遵循就近原则,哪个选择符后定义,就采用哪个选择符的样式。[代码3]中test2后定义,所以color会采用“.test2”的设置为green。

如果改变“.test”和“.test2”定义的位置,如[代码4]

<style type="text/css">span{font-size: 40px;}.test2{color: green}.test{color:red;}</style><span class="test test2">CSS的低权重原则</span>

那么 “CSS的低权重原则”的color就为red了。

需要强调的是就近原则指的是选择符 的先后顺序,而不是挂class名的先后顺序, CSS的低权重原则CSS的低权重原则没有区别。

CSS选择符权重是个容易被忽略的问题。但事实上如果不太注意选择符的权重,常会出现意向不到的小麻烦。例如下面[代码5]

<style type="text/css">#test{font-size: 14px;}</style><p id="test">CSS的选择符权重很重要</p>

现在需要将“很重要”三个字设置为红色,我们应该怎么做呢?方案一,利用子选择器,如[代码6]

<style type="text/css">#test{font-size: 14px;}#test span{color: red}</style><p id="test">CSS的选择符权重<span>很重要</span></p>

方案二,新建class,如[代码7]

<style type="text/css">#test{font-size: 14px;}.font{color: red}</style><p id="test">CSS的选择符权重<span class="font">很重要</span></p>

很多工程师推荐使用方案一,因为使用子选择器可以避免新增class,让HTML代码更简洁,这么考虑是有道理的,但如果这时需求有变化,需要添加新的额文字进来,如[代码8]

<style type="text/css">#test{font-size: 14px;}#test span{color: red}</style><p id="test">CSS的选择符权重<span>很重要</span>,我们要小心处理</p>

要求我们将“小心处理”设置为绿色,我们可以这么做,如[代码9]

<style type="text/css">#test{font-size: 14px;}#test span{color: red}.font{color:green}</style><p id="test">CSS的选择符权重<span>很重要</span>,我们要<span class="font">小心处理</span></p>

本以为小心处理会被选择符font设置为绿色,但它却被选择符权重更高的“#test span”设置成了红色,子选择器在无意中影响到了我们新添加的代码。如果想要达到我们的预期,我们需要按代码[9]重写

<style type="text/css">#test{font-size: 14px;}#test span{color: red}            /* 选择符权重为100+1=101 */#test .font{color:green}         /* 选择符权重为100+10=110 */</style><p id="test">CSS的选择符权重<span>很重要</span>,我们要<span class="font">小心处理</span></p>

而如果使用方案二呢?

<style type="text/css">#test{font-size: 14px;}.test{color: red}            /* 选择符权重为100+1=101 */.font2{color:green}         /* 选择符权重为100+10=110 */</style><p id="test">CSS的选择符权重<span class="font">很重要</span>,我们要<span class="font2">小心处理</span></p>

因为没有使用子选择器,所以我们添加新代码挂上新的class就可以顺利的完成样式的设置了。

使用子选择器,会增加CSS选择符的权重,CSS的选择符权重越高,样式越不易被覆盖,所以除非确定HTML结构非常稳定,一定不会再修改了,否则尽量使用子选择器。为了保证样式容易被覆盖,提高可维护性,CSS选择符权重尽可能低。

少用子选择器,就需要多添加class,在Web标准盛行的初期,很多工程师认为多添加class是不好的,如果能使用子选择器就应该尽量使用,使用大量的class的做法叫做“多class症”。在进过大量实践后,我并不认为多class有太大的坏处,相反,与使用子选择器相比,新添加class反而跟利于维护。

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
HTML 및 코드 : 용어를 자세히 살펴 봅니다HTML 및 코드 : 용어를 자세히 살펴 봅니다Apr 10, 2025 am 09:28 AM

"Code"는 "Code"BroadlyIncludeLugageslikeJavaScriptandPyThonforFunctureS (htMlisAspecificTypeofCodeFocudecturecturingWebContent)

HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구Apr 09, 2025 am 12:12 AM

HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

HTML, CSS 및 JavaScript의 역할 : 핵심 책임HTML, CSS 및 JavaScript의 역할 : 핵심 책임Apr 08, 2025 pm 07:05 PM

HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

HTML은 초보자를 위해 쉽게 배우나요?HTML은 초보자를 위해 쉽게 배우나요?Apr 07, 2025 am 12:11 AM

HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

HTML의 시작 태그의 예는 무엇입니까?HTML의 시작 태그의 예는 무엇입니까?Apr 06, 2025 am 12:04 AM

anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

메뉴에서 점선 분할 효과의 중심 정렬을 달성하기 위해 CSS의 Flexbox 레이아웃을 사용하는 방법은 무엇입니까?메뉴에서 점선 분할 효과의 중심 정렬을 달성하기 위해 CSS의 Flexbox 레이아웃을 사용하는 방법은 무엇입니까?Apr 05, 2025 pm 01:24 PM

메뉴에서 점선 분할 효과를 설계하는 방법은 무엇입니까? 메뉴를 설계 할 때는 일반적으로 접시 이름과 가격 사이에 왼쪽과 오른쪽을 정렬하는 것이 어렵지 않지만 점선 또는 중간의 점은 어떻습니까?

온라인 코드 편집기는 코드 입력을 구현하는 데 사용하는 HTML 요소는 무엇입니까?온라인 코드 편집기는 코드 입력을 구현하는 데 사용하는 HTML 요소는 무엇입니까?Apr 05, 2025 pm 01:21 PM

웹 코드 편집기의 HTML 요소 분석 많은 온라인 코드 편집기를 사용하면 사용자가 HTML, CSS 및 JavaScript 코드를 입력 할 수 있습니다. 최근에 누군가가 제안했습니다 ...

반응 정적 페이지 구성 : React-App-Lewired로 코드 압축을 피하는 방법?반응 정적 페이지 구성 : React-App-Lewired로 코드 압축을 피하는 방법?Apr 05, 2025 pm 01:18 PM

React-App-Lerewired를 사용하여 정적 페이지를 구축 할 때 코드 압축을 피하는 방법에 대해 많은 개발자가 제공하고 싶어합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기