>  기사  >  웹 프론트엔드  >  CSS의 스태킹 및 가중치 설명

CSS의 스태킹 및 가중치 설명

巴扎黑
巴扎黑원래의
2017-07-19 10:08:091844검색

여러 선택기에 의해 동일한 태그가 선택되고 각 선택기가 동일한 스타일로 설정된 경우 브라우저에서 로드할 때 어떤 스타일을 따라야 합니까?

다른 선택기로 설정된 동일한 스타일의 경우 로드 시 하나만 선택되며 겹쳐지지 않습니다.

누구의 말을 들어야 하는가의 문제를 해결하기 위해 캐스케이딩(Cascading)이라는 개념이 도입되었습니다.

CSS 스타일 계단식 가중치 값

CSS 사양에 따르면 스타일 규칙이 구체적일수록 가중치 값이 높아집니다. 가중치 값을 계산하는 기준은 많은 기사에서 설명하는 것처럼 "클래스는 10, 태그는 1, ID는 100"이 아닙니다. 하지만 대부분의 경우 올바른 결과를 얻을 수 있습니다.

먼저 "중요>인라인>ID>클래스>레이블|의사 클래스|속성 선택>의사 개체>상속>와일드카드"의 기억하기 쉬운 순서를 살펴보겠습니다.

선택기 가중치 계산

A : 태그의 스타일 속성(인라인 스타일)에 규칙을 작성하면 A=1, 그렇지 않으면 A=0이 됩니다. 인라인 스타일의 경우 선택자가 없으므로 B, C, D의 값이 됩니다. 모두 0 입니다. 즉, A=1, B=0, C=0, D=0(1,0,0,0으로 축약됨, 아래에서도 동일함)입니다.

B: 이 선택기의 ID 수를 셉니다. 있으면 B=1, 없으면 B=0입니다(예를 들어 #header와 같은 선택자는 0, 1, 0, 0으로 계산됩니다).

C: 선택기의 의사 클래스 및 기타 속성 수를 계산합니다(클래스, 속성 선택기 등 포함, 의사 요소 제외). (예를 들어 .logo[id='site-logo'] 와 같은 선택자는 0, 0, 2, 0으로 계산됩니다.) (0,0,2,0인 이유는 나중에 자세히 설명하겠습니다).

D: 이 선택기의 의사 요소 및 레이블 수를 셉니다. (예를 들어 p:first-letter와 같은 선택기는 0, 0, 0, 2로 평가됩니다.)



여러 선택기가 동일한 태그를 선택하고 동일한 스타일을 설정하면 브라우저에서 로드할 속성 값 중 하나를 선택하여 로드하지 않습니다. 값이 계단식으로 표시됩니다. /다른 값을 덮어씁니다.

비교를 위해서는 비교가 필요합니다. 다음은 선택자 간의 가중치 비교입니다. 1. 선택자가 레이블을 선택합니다. 선택기는 태그를 선택하지 않습니다.

먼저 선택기의 가중치에 대해 이야기해 보겠습니다. id>class>label>* (와일드카드)

① 선택기는 태그를 선택합니다.

먼저: 두 태그가 모두 선택된 경우 선택기 가중치를 비교합니다.

선택기에는 가중치가 있으며, 가중치가 더 큰 선택기가 가중치가 작은 선택기 위에 쌓입니다.

중량 계산: 선택기가 선택한 범위가 클수록 가중치는 작아집니다. id>class>label>*

방법: 선택자 수를 세고 먼저 ID 수를 비교한 다음 클래스 수를 비교하고 → 마지막으로 태그 수를 비교합니다.

그림의 주석 순서(ID 수, 클래스 수, 태그 수)

페이지에 표시되는 스타일:

콘솔 디스플레이:

초: 선택기 가중치가 동일한 경우에는 코드 작성 순서를 비교합니다. CSS.

CSS 코드에는 위에서 아래로 로드되는 로드 순서가 있으며 나중에 로드하면 이전 로드를 덮어씁니다.

 #box1 .box2 .box3 p{      (1,2,1)

    color: red;

  }

 .box1 #box2 .box3 p{    (1,2,1)

    color: green;

 }

 .box1 .box2 #box3 p{    (1,2,1) 书写顺序最后,层叠前面的样式    color: blue;

 }

②선택기에 선택된 태그가 없습니다: 일부 스타일은 상속될 수 있습니다. 누가 상속받나요?

첫 번째: 각 선택기에 의해 선택된 요소와 HTML의 대상 요소 p 사이의 거리를 비교하여 더 가까운 요소와 먼 요소를 쌓아 놓습니다. 근접성 원리라고 합니다.

 #box1{    

   color: red;

 }

  .box1 .box2{

    color: green;

  } 

  .box3{           选中的标签距离p最近,继承他的

    color: blue;

  }

둘째: 거리가 같으면 가중치를 비교하면 가중치가 큰 캐스케이드의 가중치가 작아집니다.

 #box1 .box2 #box3{               (2,1,0)

    color: red;

  }

  .box1 #box2.box2 #box3{   (2,2,0)    color: green;

  }

  .box1 .box2 #box3.box3{     (1,3,0)

    color: blue;

  }

다시: 거리가 동일하면 선택기 가중치는 쓰기 순서에 따라 동일합니다.

 #box1 .box2 #box3.box3{

    color: red;

  }

  .box1 #box2.box2 #box3{

    color: green;

  }

  #box1.box1 #box2 .box3{

    color: blue;

  }

특히, 가중치 비교 과정에서 특정 스타일 속성의 가중치를 최대로 높일 수 있는 중요한 단어가 있습니다.

근접성의 원칙에 따라 중요한 것은 상속에 영향을 미치지 않습니다.

 #box1 .box2 #box3.box3{

    color: red;

  }

  #box3{

    color: green !important;    将这条属性的权重提升的最大,与选择器权重无关

  }

  #box1.box1 #box2 .box3{

    color: blue;

  }

요약:

마지막으로:

위로 이동 비교 예를 들어 인라인 CSS를 기반으로 하며 CSS의 인라인, 인라인 및 외부 링크 유형 중 이름에서 알 수 있듯이 인라인 또는 외부 링크의 가중치는 인라인 > 인라인 = 외부 링크입니다. 인라인 표현식과 일치하지 않습니다!

위 내용은 CSS의 스태킹 및 가중치 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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