CSS::before 및 ::after의 의사 요소에 대한 자세한 설명
이 기사에서는 CSS의 ::before 및 ::after 의사 요소를 살펴보고 해당 응용 프로그램을 살펴보는 데 도움이 되기를 바랍니다.
이 글은 가장 간단한 것부터 시작하여 ::before 및 ::after를 이해하고 사용하는 방법을 설명합니다. 그런 다음 실제 사용 시나리오에 적용해 보세요.
::before 및 ::after는 무엇입니까?
::before 및 ::after는 의사 요소를 생성하기 위해 선택기에 추가할 수 있는 키워드입니다. 의사 요소는 선택기와 일치하는 요소의 콘텐츠 앞이나 뒤에 삽입됩니다.
content 속성
1) ::before 및 ::after 아래의 고유 콘텐츠는 CSS 렌더링에서 요소의 논리적 헤드 또는 테일에 콘텐츠를 추가하는 데 사용됩니다.
2) ::before 및 ::after는 콘텐츠 속성과 함께 사용해야 합니다. 콘텐츠는 삽입된 콘텐츠를 정의하는 데 사용됩니다. 콘텐츠에는 최소한 비어 있는 값이 있어야 합니다.
3) 이러한 추가 사항은 DOM에 표시되지 않으며 변경되지 않습니다. 문서의 내용은 복사할 수 없으며 CSS 렌더링 레이어에만 추가됩니다. 따라서 의미 있는 콘텐츠를 표시하려면 :before 또는 :after를 사용하지 말고 장식적인 콘텐츠를 표시하는 데 사용하세요.
content는 다음 값을 사용할 수 있습니다.
string
따옴표를 사용하여 추가될 문자열을 묶습니다. 요소 내용에 String
p::before{ content: "《"; color: #000000; } p::after{ content: "》"; color:#000000; } <p>JavaScript高级程序设计</p>
attr()
은 attr()을 통해 현재 요소의 속성을 호출합니다(예: 이미지 대체 텍스트 또는 링크의 href 주소 표시).
a::after { content: ' → ' attr(href); /* 在 href 前显示一个箭头 */ } <a href="https://www.baidu.com/">百度地址</a>
a::after{ content: "【" attr(href) "】"; } <a href="https://www.baidu.com/">百度地址</a>
url()/uri()
은 미디어 파일을 참조하는 데 사용됩니다. 예를 들어, "Baidu"는 앞면에 그림을 제공하고 뒷면에 href 속성을 제공합니다.
a::before{ content: url("img/baidu_jgylogo3.gif"); } a::after{ content:"("attr(href)")"; } <a href="https://www.baidu.com/">百度地址</a>
Note
1) URL에는 따옴표를 사용할 수 없습니다. URL을 따옴표로 묶으면 문자열이 되고 이미지 자체 대신 "url(image.jpg)"라는 텍스트가 콘텐츠로 삽입됩니다.
2) 콘텐츠 속성은 이미지를 직접 사용합니다. 너비와 높이를 작성하더라도 이미지 크기는 변경할 수 없습니다.
해결 방법: 이 문제를 해결하려면 content:''를 공백으로 작성하면 됩니다. background:url() 사진 추가
/*伪元素添加图片:*/ .wrap:after{ /*内容置为空*/ content:""; /*设置背景图,并拉伸*/ background:url("img/0CSS::before 및 ::after의 의사 요소에 대한 자세한 설명") no-repeat center; /*必须设置此伪元素display*/ display:inline-block; /*必须设置此伪元素大小(不会被图片撑开)*/ background-size:100%; width:100px; height:100px; }复制代码
3) img, input 및 기타 단일 태그에는 의사 요소가 적용되지 않습니다. :after 및 :before 의사 요소(일부 브라우저에서는 사용할 수 없음) , 예: Apple에서는 해당 태그가 유효하지 않다고 판단합니다. 단일 태그 자체에는 하위 요소가 있을 수 없기 때문입니다.
해결책: img에 div를 래핑하여 문제 해결
4) 의사 요소의 이미지를 동적으로 변경하려면 현재 요소에 의사 요소 이미지의 기본 스타일을 추가하고, 그런 다음 동적 클래스를 사용하여 의사 요소의 이미지를 작성합니다.
::적용 전 및 :: 적용 후
따옴표 속성과 함께 사용
괄호 추가
h1{ quotes:"(" ")"; /*利用元素的quotes属性指定文字符号*/ } h1::before{ content:open-quote; } h1::after{ content:close-quote; } <h1 id="给标题加括号">给标题加括号</h1>
따옴표 추가
h2{ quotes:"\"" "\""; /*添加双引号要转义*/ } h2::before{ content:open-quote; } h2::after{ content:close-quote; } <h2 id="给标题加引号">给标题加引号</h2>
지정되지 않음 , 기본
h3::before{ content:open-quote; } h3::after{ content:close-quote; } <h3 id="不设置quotes">不设置quotes</h3>
Decoration Title
h1 { display: grid; grid-template-columns: minmax(50px, 1fr) auto minmax(50px, 1fr); align-items: center; text-align: center; gap: 40px; } h1::before, h1::after { content: ''; border-top: 6px double; } <h1 id="标题">标题</h1>
레이아웃은
<h1>
요소를 3개의 열로 변환하여 구현됩니다. 왼쪽 열과 오른쪽 열은 너비가 minmax(50px, 1fr)인 이중선입니다. 이는 일치하는 너비가 항상 50px 이상임을 의미합니다. 제목 텍스트가 깔끔하게 중앙에 배치되었습니다.
리본 제목
h1 { position: relative; margin: 0 auto 20px; padding: 10px 40px; text-align: center; background-color: #875e46; } h1::before, h1::after { content: ''; width: 80px; height: 100%; background-color: #724b34; /* 定位彩带两端形状的位置,并且放在最底层 */ position: absolute; z-index: -1; top: 20px; /* 彩带两端的形状 */ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 25% 50%); /* 绘制并定位彩带的阴影三角形 */ background-image: linear-gradient(45deg, transparent 50%, #5d3922 50%); background-size: 20px 20px; background-repeat: no-repeat; background-position: bottom right; } h1::before { left: -60px; } h1::after { right: -60px; transform: scaleX(-1); /* 水平翻转 */ } --------------------------- <h1 id="标题">标题</h1>
더욱 사실적인 그림자 구현
.box{margin:10px;width:300px;height:100px;border-radius:10px;background:#ccc} .shadow{position:relative;max-width:270px;box-shadow:0 1px 4px rgba(0,0,0,.3),0 0 20px rgba(0,0,0,.1) inset} .shadow::after,.shadow::before{position:absolute;z-index:-1;content:""} .shadow::after,.shadow::before{position:absolute;bottom:15px;left:10px;z-index:-1;width:50%;height:20%;content:""} .shadow::after,.shadow::before{position:absolute;bottom:15px;left:10px;z-index:-1;width:50%;height:20%;box-shadow:0 15px 10px rgba(0,0,0,.7);content:"";transform:rotate(-3deg)} .shadow::after{right:10px;left:auto;transform:rotate(3deg)} <div class="box shadow"></div>
교체 내용
어떤 경우에는 콘텐츠에 ::before를 사용할 필요가 없습니다. 또는: :후. 콘텐츠가 단일 이미지로 설정된 경우 해당 콘텐츠를 요소에서 직접 사용하여 해당 요소의 HTML 콘텐츠를 바꿀 수 있습니다.
예를 들어 페이지에 다음 세 가지 콘텐츠가 있습니다.
교체 클래스를 추가한 후
.replace { content: url(img/replace.png); }
1)具有简单文本的元素。它会被取代。
2)一个包含<img src="/static/imghw/default1.png" data-src="img/cat.jpg" class="lazy" alt="CSS::before 및 ::after의 의사 요소에 대한 자세한 설명" >
在其中的元素。它也会被取代。
3)<img src="/static/imghw/default1.png" data-src="img/cat.jpg" class="lazy" alt="CSS::before 및 ::after의 의사 요소에 대한 자세한 설명" >
直接一个元素。Firefox不会取代它,但其他浏览器会。
清除浮动
方式一:
.classic-clearfix::after { content: ''; display: block; clear: both; }
方式二:
.modern-clearfix { display: flow-root; }
模拟float:center的效果
float没有center这个取值,但是可以通过伪类来模拟实现。
原理:左右通过::before float各自留出一半图片的位置,再把图片绝对定位上去。
body { font: 14px/1.8 Georgia, serif;} #page-wrap { width: 60%; margin: 40px auto; position: relative; } #logo { position: absolute; top: 0; left: 50%; margin-left: -125px; } #l, #r { width: 49%; } #l { float: left; } #r { float: right; } #l:before, #r:before { content: ""; width: 125px; height: 250px; } #l:before { float: right; } #r:before { float: left; } <div id="page-wrap"> <img src="/static/imghw/default1.png" data-src="img/cat.jpg" class="lazy" id="logo" alt="CSS::before 및 ::after의 의사 요소에 대한 자세한 설명" > <div id="l"> <p> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus </p> </div> <div id="r"> <p> Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus </p> </div> </div>
引用参考:
Diving into the ::before and ::after Pseudo-Elements
Faking ‘float: center’ with Pseudo Elements
原文地址:https://juejin.cn/post/6986629782666477599
作者:Axjy
相关推荐:《css视频教程》!
위 내용은 CSS::before 및 ::after의 의사 요소에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

부트 스트랩 분할 라인을 만드는 두 가지 방법이 있습니다 : 태그를 사용하여 수평 분할 라인이 생성됩니다. CSS 테두리 속성을 사용하여 사용자 정의 스타일 분할 라인을 만듭니다.

Bootstrap에 이미지를 삽입하는 방법에는 여러 가지가 있습니다. HTML IMG 태그를 사용하여 이미지를 직접 삽입하십시오. 부트 스트랩 이미지 구성 요소를 사용하면 반응 형 이미지와 더 많은 스타일을 제공 할 수 있습니다. 이미지 크기를 설정하고 IMG-Fluid 클래스를 사용하여 이미지를 적응할 수 있도록하십시오. IMG 통과 클래스를 사용하여 테두리를 설정하십시오. 둥근 모서리를 설정하고 IMG 라운드 클래스를 사용하십시오. 그림자를 설정하고 그림자 클래스를 사용하십시오. CSS 스타일을 사용하여 이미지를 조정하고 배치하십시오. 배경 이미지를 사용하여 배경 이미지 CSS 속성을 사용하십시오.

부트 스트랩 프레임 워크를 설정하려면 다음 단계를 따라야합니다. 1. CDN을 통해 부트 스트랩 파일 참조; 2. 자신의 서버에서 파일을 다운로드하여 호스팅하십시오. 3. HTML에 부트 스트랩 파일을 포함; 4. 필요에 따라 Sass/Less를 컴파일하십시오. 5. 사용자 정의 파일을 가져옵니다 (선택 사항). 설정이 완료되면 Bootstrap의 그리드 시스템, 구성 요소 및 스타일을 사용하여 반응 형 웹 사이트 및 응용 프로그램을 만들 수 있습니다.

답 : 부트 스트랩의 날짜 선택기 구성 요소를 사용하여 페이지에서 날짜를 볼 수 있습니다. 단계 : 부트 스트랩 프레임 워크를 소개하십시오. HTML에서 날짜 선택기 입력 상자를 만듭니다. 부트 스트랩은 선택기에 스타일을 자동으로 추가합니다. JavaScript를 사용하여 선택한 날짜를 얻으십시오.

부트 스트랩 버튼을 사용하는 방법? 부트 스트랩 CSS를 소개하여 버튼 요소를 만들고 부트 스트랩 버튼 클래스를 추가하여 버튼 텍스트를 추가하십시오.
