2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Table of contents
2. Introduction to ::before ::after
3. Common attribute values of content
3. ::before ::after application scenarios
2. Add pictures via background
CSS pseudo-elements are virtual elements created by using some special selectors in CSS. They are not actual HTML elements.
This article mainly introduces the relevant content and some usage scenarios of the two pseudo-elements::before and::after;
::before ::after pseudo-elements are used to insert specified content before or after an element;
The ::before selector is used to insert content before the specified element;
(1) Syntax
- 元素::before{
- content: "要插入的内容";
- /* 其他属性 */
- }
(2) Example
Insert content before all p elements on the page;
- <style>
- p::before{
- content: "使用::before伪元素插入的内容——";
- /* 其他属性 */
- }
- </style>
- <body>
- <div>
- <p>第一个P标签中的内容</p>
- <p>第二个P标签中的内容</p>
- <p>第三个P标签中的内容</p>
- </div>
- </body>
The ::after selector is used to insert content after the specified element;
(1) Syntax
- 元素::after{
- content: "要插入的内容";
- /* 其他属性 */
- }
(2) Example
Insert content after all p elements on the page;
- <style>
- p::after{
- content: "——使用::after伪元素插入的内容";
- /* 其他属性 */
- }
- </style>
- <body>
- <div>
- <p>第一个P标签中的内容</p>
- <p>第二个P标签中的内容</p>
- <p>第三个P标签中的内容</p>
- </div>
- </body>
::before ::after must be used together with the content attribute. The following are common attribute values of content:
Serial number | Property Value | illustrate |
---|---|---|
1 | string | Set the text content; |
2 | url("url") | Set URL links for media files such as images; |
3 | open-quote | Set to the leading quote; |
4 | close-quote | Set to back quote; |
5 | attr(attribute) | Return the attribute of the element as a string; |
6 | counter | Set the counter; |
7 | none | Set content to an empty value; |
8 | normal | In the :before and :after pseudo-class elements, it will be regarded as none, that is, it is also an empty value; |
(1) Set the text content
Set the content attribute value to string type to add text to the pseudo-element;
- <style>
- span::before{
- content: "使用::before添加的文本前缀——————";
- }
- span::after{
- content: "————使用::after添加的文本后缀";
- }
- </style>
- ......
- <body>
- <span class="box">我是HTML元素中的文本</span>
- </body>
(2) Set up media links
Through the url() attribute value, you can import the media file as the content of the pseudo element;
- <style>
- .container {
- margin: 100px;
- }
- .avatar::after{
- content: url("D:\test\girl.png");
- display: block;
- }
- </style>
- ......
- <body>
- <div class="container">
- <div class="avatar">示例图片</div>
- </div>
- </body>
Note that the image added using the URL cannot be resized. It is best to add the image through the background.
(3) Set the leading|| trailing quotation marks
Through the open-quote or close-quote attribute value, you can set the content of the pseudo-element to the opening or closing quotation marks;
- <style>
- p:nth-child(1)::before{
- content:open-quote;
- /* 其他属性 */
- }
- p:nth-child(2)::after{
- content:close-quote;
- }
- </style>
- ......
- <body>
- <div>
- <p>添加前引号</p>
- <p>添加后引号</p>
- </div>
- </body>
(4) Get element attributes
Get an attribute value of the element through attr() (returned as a string) and set it as the content of the pseudo-element;
- <style>
- a:after {
- content: " (" attr(href) ")";
- }
- </style>
- ......
- <body>
- <div><a href="https://www.csdn.net">CSDN</a>点击跳转至CSDN...</div>
- <div><a href="https://www.baidu.com">百度</a>点击跳转至百度...</div>
- </body>
(5) Set the counter
- <style>
- div {
- counter-increment: index;
- }
- div:before {
- content:counter(index);
- }
- </style>
- ......
- <body>
- <div>、、、、、、我是第1个div、、、、、、</div>
- <div>、、、、、、我是第2个div、、、、、、</div>
- <div>、、、、、、我是第3个div、、、、、、</div>
- <div>、、、、、、我是第4个div、、、、、、</div>
- </body>
Although the usage of the two pseudo-elements ::before ::after is very simple, if you can use them flexibly, you can achieve some very good CSS effects;
- <style>
- p::before{
- content: "* ";
- color: red;
- font-size: 24px;
- /* 其他属性 */
- }
- p::after{
- content: ":____________";
- /* 其他属性 */
- }
- </style>
- ...
- <body>
- <div>
- <p>姓名</p>
- <p>年龄</p>
- <p>出生日期</p>
- <p>居住地址</p>
- </div>
- </body>
- <style>
- .container{
- margin: 100px;
- }
- .container::after{
- content: "";
- display:block;
- width: 260px;
- height: 260px;
- background-image: url("D:\test\girl.png");
- background-position: center;
- background-size: cover;
- }
- </style>
- ......
- <body>
- <div class="container">通过背景添加图片</div>
- </body>
- <style>
- .line{
- display: flex;
- align-items: center;
- margin: 60px;
- height: 40px;
- font-size: 18px;
- }
- .line::before, .line::after{
- content: "";
- width: 300px;
- border-top: 6px double;
- margin: 5px;
- }
-
- </style>
- ......
- <body>
- <div class="line">添加装饰线</div>
- </body>
- <style>
- .container{
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-
- width: 400px;
- margin: 100px auto;
- padding: 30px 0;
- border-radius: 8px;
- box-shadow: 0 0 4px 1px #acacac;
- }
-
- .setting-item{
- position: relative;
- align-items: center;
- display: flex;
- width: 300px;
- height: 40px;
- margin-bottom: 20px;
- border-bottom: 1px solid #ccc;
- }
-
- .setting-item::after{
- position: absolute;
- right: 0;
- content: "";
- width: 8px;
- height: 8px;
- border-top: 1px solid #666;
- border-right: 1px solid #666;
- transform: rotate(45deg);
- }
-
- </style>
- ......
- <body>
- <div class="container">
- <div class="setting-item">账号设置</div>
- <div class="setting-item">权限管理</div>
- <div class="setting-item">相关服务</div>
- <div class="setting-item">帮助与反馈</div>
- <div class="setting-item">......</div>
- </div>
- </body>
- <style>
- .container {
- width: 400px;
- margin: 100px auto;
- padding: 30px 0;
- border-radius: 8px;
- box-shadow: 0 0 4px 1px yellowgreen;
- }
-
- .left-box,.right-box {
- display: flex;
- }
-
- .right-box {
- justify-content: end;
- }
-
- span {
- position: relative;
- display: flex;
- align-items: center;
-
- background-color: yellowgreen;
- border-radius: 6px;
- margin: 4px 14px;
- padding: 16px;
- }
-
- .left-box span::before, .right-box span::after{
- position: absolute;
- content: "";
- width: 12px;
- height: 12px;
- background-color: yellowgreen;
- transform: rotate(45deg);
- }
-
- .left-box span::before{
- left: -6px;
- }
- .right-box span::after {
- right: -6px;
- }
- </style>
-
- ......
-
- <body>
- <div class="container">
- <div class="left-box">
- <span>Nice to meet you!</span>
- </div>
- <div class="right-box">
- <span>Nice to meet you, too!</span>
- </div>
- </div>
- </body>
- <style>
- .login-box{
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-
- width: 400px;
- height: 400px;
- margin: 100px auto;
- border-radius: 8px;
- box-shadow: 0 0 4px 1px #acacac;
- }
- .title{
- font-size: 24px;
- font-weight: 700;
- margin-bottom: 40px;
- }
- .account, .pwd, .login-btn, .forgot-pwd{
- width: 300px;
- height: 40px;
- line-height: 40px;
- }
-
- .account, .pwd{
- display: flex;
- align-items: center;
- border-bottom: 1px solid #ccc;
- font-size: 14px;
- color: #888;
- }
- .pwd{
- margin-top: 20px;
- }
- .account::before, .pwd::before{
- content: '';
- display: inline-block;
- width: 24px;
- height: 24px;
- background-repeat: no-repeat;
- background-position: center center;
- background-size: contain;
- margin-right: 8px;
- }
- .account::before{
- background-image: url("D:\test\user.svg");
- }
- .pwd::before {
- background-image: url("D:\test\pwd.svg");
- }
-
- .login-btn{
- text-align: center;
- color: #fff;
- font-size: 16px;
- font-weight: 700;
- background: #2687F0;
- border-radius: 5px;
- margin-top: 40px;
- }
-
- .forgot-pwd{
- text-align: right;
- font-size: 14px;
- color: #888;
- margin-top: 20px;
- }
- </style>
- ......
- <body>
- <div class="login-box">
- <div class="title">XXX 管理系统</div>
- <div class="account">请输入账号</div>
- <div class="pwd">请输入密码</div>
- <div class="login-btn">登 录</div>
- <div class="forgot-pwd">忘记密码</div>
- </div>
- </body>
=========================================================================
Make a little progress every day~!
A practical CSS trick~!