찾다
웹 프론트엔드CSS 튜토리얼기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

Jianweizhizhu, 이 기사에서는 기초를 테스트하기 위한 두 가지 흥미로운 CSS 인터뷰 질문을 공유할 것입니다!

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

오늘 포럼에서 재미있는 질문을 봤습니다. 간단한 코드는 다음과 같습니다.

<div>
    <p id="a">First Paragraph</p>
</div>

스타일은 다음과 같습니다.

p#a {
    color: green;
}
div::first-line {
    color: blue;
}

질문을 하세요. <p> 색상은 녹색인가요, 파란색인가요? <code><p></p> 内的文字的颜色,是 green 还是 blue 呢?

有趣的是,这里的最终结果是蓝色,也就是 color: blue 生效了。【推荐学习:css视频教程

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

不对,正常而言,ID 选择器的优先级不应该比伪类选择器高么?为什么这里反而是伪类选择器的优先级更高呢?

并且,打开调试模式,我们定位到 <p></p> 元素上,只看到了 color: green 生效,没找到 div::first-line 的样式定义:

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

只有再向上一层,我们找到

的样式规则,才能在最下面看到这样一条规则:

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

因此,这里很明显,是<p></p> 标签继承了父元素 <div> 的这条规则,并且作用到了自身第一行元素之上,覆盖了原本的 ID 选择器内定义的 <code>color: green

再进行验证

这里,另外一个比较迷惑的点在于,为什么 ID 选择器的优先级比 ::first-line 选择器更低。

我们再做一些简单的尝试:

下面的 DEMO 展示了 ::first-line 样式和各种选择器共同作用时的优先级对比,甚至包括了 !important 规则:

  • 第 1 段通过标签选择器设置为灰色
  • 第 2 段通过类选择器设置为灰色
  • 第 3 段通过 ID 选择器设置为灰色
  • 第 4 段通过 !important bash 设置为灰色

综上的同时,每一段我们同时都使用了 ::first-line 选择器。

<h2 id="first-line-nbsp-vs-nbsp-tag-nbsp-selector">::first-line vs. tag selector</h2>
<p>This paragraph ...</p>  

<h2 id="first-line-nbsp-vs-nbsp-class-nbsp-selector">::first-line vs class selector</h2>
<p class="p2">This paragraph color i...</p>  

<h2 id="first-line-nbsp-vs-nbsp-ID-nbsp-selector">::first-line vs ID selector</h2>
<p id="p3">This paragraph color is set ...</p>  

<h2 id="first-line-nbsp-vs-nbsp-important">::first-line vs !important</h2>
<p id="p4">This paragraph color is ....</p>
p {
  color: #444;
}
p::first-line {
  color: deepskyblue;
}

.p2 {
  color: #444;
}
.p2::first-line {
  color: tomato;
}

#p3 {
  color: #444;
}
#p3::first-line {
  color: firebrick;
}

#p4 {
  color: #444 !important;
}
#p4::first-line {
  color: hotpink;
}

CodePen Demo -- ::first-line: demo

https://codepen.io/KittyGiraudel/pen/kWobaa/569e082a67400f5fb39a96030d0e9b6c

看看效果:

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

可以看到,无论是什么选择器,优先级都没有 ::first-line 高。

究其原因,在于,::first-line 其实是个伪元素而不是一个伪类,被其选中的内容其实会被当成元素的子元素进行处理,类似于 ::before::after 一样,因此,对于父元素的 color 规则,对于它而言只是一种级联关系,通过 ::first-line 本身定义的规则,优先级会更高!

这也是为什么,在 MDN 文档中,更推荐的是双冒号的写法(当然浏览器都支持单冒号的写法)-- MDN -- ::first-line

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

再来一题,MDN 的错误例子?一个有意思的现象

说完上面这题。我们再来看看一题,非常类似的题目。

在 MDN 介绍 :not 的页面,有这样一个例子:

/* Selects any element that is NOT a paragraph */
:not(p) {
  color: blue;
}

意思是,:not(p) 可以选择任何不是 <p></p> 标签的元素。然而,上面的 CSS 选择器,在如下的 HTML 结构,实测的结果不太对劲。

<p>p</p>
<div>div</div>
<span>span</span>
<h1 id="h">h1</h1>

结果如下:

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

CodePen Demo -- :not pesudo demo

https://codepen.io/Chokcoco/pen/KKZbWjy

意思是,:not(p) 仍然可以选中 <p></p> 元素。是的,在多个浏览器,得到的效果都是一致的。

看到这里,你可以再停一下,思考一下,为什么 <p></p> 元素的颜色仍旧是 color: blue

흥미롭게도 여기서 최종 결과는 파란색입니다. 이는 color: blue가 적용된다는 의미입니다. [추천 학습: CSS 동영상 튜토리얼]<p></p> 기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!🎜🎜아니요, 일반적으로 ID 선택기는 우선순위가 의사 클래스 선택자보다 높습니까? 여기서 의사 클래스 선택기가 더 높은 우선순위를 갖는 이유는 무엇입니까? 🎜🎜그리고 디버그 모드를 켠 후 <p></p> 요소를 배치하고 color: green이 적용되는 것만 확인했지만 div::first- 라인 스타일 정의: 🎜🎜 기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!🎜🎜한 단계 위로 올라가서
의 스타일 규칙을 찾은 경우에만 하단에서 다음과 같은 규칙을 볼 수 있습니다. 🎜🎜 기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!🎜🎜그러니까, <p></p> 태그는 상위 요소인 <div>에서 이 규칙을 상속하고 이를 요소의 첫 번째 행에 적용하여 원본을 재정의한다는 점은 분명합니다. ID 선택기. <code>색상: 녹색이 정의되어 있습니다. 🎜

다시 확인

🎜여기서 또 다른 혼란스러운 점은 ID 선택기가 ::first -line보다 높은 우선순위를 갖는 이유입니다. 코드> 선택기가 더 낮습니다. 🎜🎜몇 가지 간단한 시도를 해보겠습니다. 🎜🎜다음 데모에서는 <code> 중요한 규칙을 포함하여 다양한 선택기로 작업할 때 ::first-line 스타일의 우선순위를 비교합니다! : 🎜
  • 태그 선택기를 통해 단락 1이 회색으로 설정됨
  • 클래스 선택기를 통해 단락 2가 회색으로 설정됨
  • 문단 3이 회색으로 설정됨 ID 선택기를 통해
  • 4번째 문단은 !important bash를 통해 회색으로 설정됩니다
🎜요약하자면 동시에 각 문단에 를 사용합니다. 동시에: :첫번째 줄 선택자. 🎜
/* Selects any element that is NOT a paragraph */
:not(p) {
  border: 1px solid;
}
rrreee
🎜CodePen 데모 -- ::first-line: 데모🎜🎜https://codepen.io/KittyGiraudel/pen/kWobaa/569e082a67400f5fb39a96030d0e9b6c🎜
🎜효과를 살펴보세요: 🎜🎜기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!🎜🎜보면 됩니다, 아니 그것이 무엇이든 선택자는 ::first-line보다 우선순위가 높습니다. 🎜🎜그 이유는 ::first-line은 실제로 의사 클래스가 아닌 의사 요소이고, 이에 의해 선택된 콘텐츠가 실제로는 하위 요소로 처리되기 때문입니다. ::before::after와 유사합니다. 따라서 상위 요소의 색상 규칙은 :: 첫 번째 줄
자체에 의해 정의된 규칙이 더 높은 우선순위를 갖습니다! 🎜🎜이것이 MDN 문서에서는 이중 콜론 작성 방법을 더 권장하는 이유입니다(물론 브라우저는 단일 콜론 작성 방법을 지원합니다)-- MDN -- ::first-line🎜🎜 🎜

질문 하나 더. MDN 오류의 예는 무엇인가요? 흥미로운 현상

🎜위의 질문을 마무리하세요. 매우 유사한 질문인 또 다른 질문을 살펴보겠습니다. 🎜🎜:not을 소개하는 MDN 페이지에 다음 예가 있습니다. 🎜rrreee🎜이는 :not(p)&lt가 아닌 모든 항목을 선택할 수 있다는 의미입니다. ;p&gt ; 태그 요소입니다. 그러나 다음 HTML 구조에서 위 CSS 선택기의 실제 결과는 올바르지 않습니다. 🎜rrreee🎜결과는 다음과 같습니다: 🎜🎜 기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요! 🎜
🎜CodePen Demo -- :not pesudo 데모🎜🎜https://codepen.io/Chokcoco/pen/KKZbWjy🎜
🎜는 :not(p)를 의미합니다. code> <p></p> 요소는 계속 선택할 수 있습니다. 예, 결과는 여러 브라우저에서 동일합니다. 🎜🎜이것을 보면 잠시 멈춰 생각해 볼 수 있는데, 왜 <p></p> 요소의 색상이 여전히 color: blue인가요? 🎜🎜이게 왜죠? 답: 🎜

这是由于 :not(p) 同样能够选中 ,那么 的 color 即变成了 blue,由于 color 是一个可继承属性,<p></p> 标签继承了 的 color 属性,导致看到的 <p></p> 也是蓝色。

我们把它改成一个不可继承的属性,试试看:

/* Selects any element that is NOT a paragraph */
:not(p) {
  border: 1px solid;
}

기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!

OK,这次 <p></p> 没有边框体现,没有问题!

因此,实际使用的时候,需要一定要注意样式继承的问题!

(学习视频分享:css视频教程web前端

위 내용은 기초를 테스트하려면 다음 두 가지 CSS 인터뷰 질문을 확인하세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
두 개의 이미지와 API : 제품을 다시 칠하는 데 필요한 모든 것두 개의 이미지와 API : 제품을 다시 칠하는 데 필요한 모든 것Apr 15, 2025 am 11:27 AM

최근에 제품 이미지의 색상을 동적으로 업데이트하는 솔루션을 찾았습니다. 따라서 제품 중 하나만 사용하여 다른 방식으로 색칠 할 수 있습니다.

주간 플랫폼 뉴스 : 제 3 자 코드, 수동 혼합 콘텐츠, 가장 느린 연결이있는 국가의 영향주간 플랫폼 뉴스 : 제 3 자 코드, 수동 혼합 콘텐츠, 가장 느린 연결이있는 국가의 영향Apr 15, 2025 am 11:19 AM

이번 주에 라운드 업, Lighthouse는 타사 스크립트에 빛을 비추고 불안한 자원이 안전한 사이트에서 차단되고 많은 국가 연결 속도가 차단됩니다.

직접 비자 스크립트 기반 분석을 호스팅하는 옵션직접 비자 스크립트 기반 분석을 호스팅하는 옵션Apr 15, 2025 am 11:09 AM

사이트에서 방문자 및 사용 데이터를 추적하는 데 도움이되는 분석 플랫폼이 많이 있습니다. 아마도 널리 사용되는 Google 웹 로그 분석

그것은 모두 헤드에있는 모든 것 : React Helmet과 함께 React 전원 사이트의 문서 헤드 관리그것은 모두 헤드에있는 모든 것 : React Helmet과 함께 React 전원 사이트의 문서 헤드 관리Apr 15, 2025 am 11:01 AM

문서 헤드는 웹 사이트에서 가장 화려한 부분이 아닐 수도 있지만 웹 사이트의 성공에 중요합니다.

JavaScript의 Super () 란 무엇입니까?JavaScript의 Super () 란 무엇입니까?Apr 15, 2025 am 10:59 AM

Super ()?를 호출하는 JavaScript를 볼 때 어떤 일이 발생 하는가. 아동 클래스에서는 Super ()를 사용하여 부모의 생성자와 Super를 호출합니다. 그것의 접근

다양한 유형의 기본 JavaScript 팝업 비교다양한 유형의 기본 JavaScript 팝업 비교Apr 15, 2025 am 10:48 AM

JavaScript에는 사용자 상호 작용을위한 특수 UI를 표시하는 다양한 내장 팝업 API가 있습니다. 뛰어나게:

액세스 가능한 웹 사이트를 구축하기가 어려운 이유는 무엇입니까?액세스 가능한 웹 사이트를 구축하기가 어려운 이유는 무엇입니까?Apr 15, 2025 am 10:45 AM

나는 다른 날에 많은 회사들이 액세스 가능한 웹 사이트를 만드는 데 어려움을 겪고있는 이유에 대해 다른 프론트 엔드 사람들과 대화를 나누고있었습니다. 액세스 가능한 웹 사이트가 왜 그렇게 어려운가

'숨겨진'속성은 눈에 띄게 약합니다'숨겨진'속성은 눈에 띄게 약합니다Apr 15, 2025 am 10:43 AM

당신이해야 할 일을 정확하게 수행하는 HTML 속성이 있습니다.

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. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기