Compartir tecnología

::before y ::after pseudoelementos en CSS

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Tabla de contenido

1. Pseudoelementos CSS

2. ::antes ::después de la introducción

1、::antes

2、::después

3. Valores de atributos comunes del contenido.

3. ::antes ::después de escenarios de aplicación

1. Establecer personajes unificados

2. Agrega imágenes a través del fondo.

3. Añade líneas decorativas

4. Expandir la flecha a la derecha

5. Triángulo de diálogo

6. Insertar icono icono


1. Pseudoelementos CSS

Los pseudoelementos CSS se refieren a elementos virtuales creados mediante el uso de algunos selectores especiales en CSS y no son elementos HTML reales existentes;

  • Se utiliza para seleccionar y operar partes específicas del documento para lograr algunos efectos especiales;
  • Los pseudoelementos le permiten diseñar el contenido del documento sin agregar etiquetas HTML adicionales;
  • Los pseudoelementos también son elementos que pueden establecer varios atributos admitidos en HTML, incluido el diseño, posicionamiento, ancho, alto, fondo, etc. del elemento;

Este artículo presenta principalmente el contenido relacionado y algunos escenarios de uso de los dos pseudoelementos::before y ::after;

2. ::antes ::después de la introducción

::before ::after pseudoelemento se utiliza para insertar contenido específico antes o después del elemento;

  • Utilice el atributo de contenido para especificar el contenido que se insertará;
  • Debe usarse junto con el atributo de contenido., el valor del atributo de contenido puede estar vacío;
  • El valor del atributo de visualización del pseudoelemento está predeterminado en línea

1、::antes

El selector ::before se utiliza para insertar contenido antes del elemento especificado;

(1) Gramática

  1. 元素::before{
  2. content: "要插入的内容";
  3. /* 其他属性 */
  4. }

(2) Ejemplo

Inserte contenido delante de todos los p elementos de la página;

  1. <style>
  2. p::before{
  3. content: "使用::before伪元素插入的内容——";
  4. /* 其他属性 */
  5. }
  6. </style>
  7. <body>
  8. <div>
  9. <p>第一个P标签中的内容</p>
  10. <p>第二个P标签中的内容</p>
  11. <p>第三个P标签中的内容</p>
  12. </div>
  13. </body>

2、::después

El selector ::after se utiliza para insertar contenido después del elemento especificado;

(1) Gramática

  1. 元素::after{
  2. content: "要插入的内容";
  3. /* 其他属性 */
  4. }

(2) Ejemplo

Insertar contenido después de todos los p elementos de la página;

  1. <style>
  2. p::after{
  3. content: "——使用::after伪元素插入的内容";
  4. /* 其他属性 */
  5. }
  6. </style>
  7. <body>
  8. <div>
  9. <p>第一个P标签中的内容</p>
  10. <p>第二个P标签中的内容</p>
  11. <p>第三个P标签中的内容</p>
  12. </div>
  13. </body>

3. Valores de atributos comunes del contenido.

::before ::after debe usarse junto con el atributo de contenido. Los siguientes son los valores de atributos comunes del contenido:

número de serievalor de atributoilustrar
1cadenaEstablecer contenido de texto;
2URL("URL")Establezca enlaces URL para archivos multimedia como imágenes;
3cita abiertaEstablecer como cita inicial;
4cita de cierreEstablecer entre comillas;
5atributo(atributo)Devuelve el atributo de atributo del elemento como una cadena;
6encimeraEstablecer contador;
7ningunoEstablecer el contenido en un valor nulo;
8normalEn los elementos de pseudoclase :before y :after, se considerará ninguno, es decir, también es un valor nulo;

(1) Establecer contenido de texto

Establezca el valor del atributo de contenido en tipo de cadena para agregar texto al pseudoelemento;

  1. <style>
  2. span::before{
  3. content: "使用::before添加的文本前缀——————";
  4. }
  5. span::after{
  6. content: "————使用::after添加的文本后缀";
  7. }
  8. </style>
  9. ......
  10. <body>
  11. <span class="box">我是HTML元素中的文本</span>
  12. </body>

(2) Establecer enlaces de medios

A través del valor del atributo url(), se puede importar el contenido del archivo multimedia como un pseudoelemento;

  1. <style>
  2. .container {
  3. margin: 100px;
  4. }
  5. .avatar::after{
  6. content: url("D:\test\girl.png");
  7. display: block;
  8. }
  9. </style>
  10. ......
  11. <body>
  12. <div class="container">
  13. <div class="avatar">示例图片</div>
  14. </div>
  15. </body>

Tenga en cuenta que el tamaño de la imagen agregada mediante la URL no se puede configurar. Es mejor agregar la imagen a través del fondo;

(3) Establecer comillas antes de ||

A través del valor del atributo de comillas abiertas o comillas cerradas, puede establecer el contenido del pseudoelemento entre comillas anteriores o posteriores;

  1. <style>
  2. p:nth-child(1)::before{
  3. content:open-quote;
  4. /* 其他属性 */
  5. }
  6. p:nth-child(2)::after{
  7. content:close-quote;
  8. }
  9. </style>
  10. ......
  11. <body>
  12. <div>
  13. <p>添加前引号</p>
  14. <p>添加后引号</p>
  15. </div>
  16. </body>

(4) Obtener atributos del elemento

Obtenga un valor de atributo del elemento a través de attr() (devuelto en forma de cadena) y configúrelo como el contenido del pseudoelemento;

  1. <style>
  2. a:after {
  3. content: " (" attr(href) ")";
  4. }
  5. </style>
  6. ......
  7. <body>
  8. <div><a href="https://www.csdn.net">CSDN</a>点击跳转至CSDN...</div>
  9. <div><a href="https://www.baidu.com">百度</a>点击跳转至百度...</div>
  10. </body>

(5) Establecer contador

  1. <style>
  2. div {
  3. counter-increment: index;
  4. }
  5. div:before {
  6. content:counter(index);
  7. }
  8. </style>
  9. ......
  10. <body>
  11. <div>、、、、、、我是第1个div、、、、、、</div>
  12. <div>、、、、、、我是第2个div、、、、、、</div>
  13. <div>、、、、、、我是第3个div、、、、、、</div>
  14. <div>、、、、、、我是第4个div、、、、、、</div>
  15. </body>

3. ::antes ::después de escenarios de aplicación

Aunque el uso de estos dos pseudoelementos::before ::after es muy simple, si se pueden aplicar de manera flexible, se pueden lograr algunos efectos CSS muy buenos;

1. Establecer personajes unificados

  1. <style>
  2. p::before{
  3. content: "* ";
  4. color: red;
  5. font-size: 24px;
  6. /* 其他属性 */
  7. }
  8. p::after{
  9. content: ":____________";
  10. /* 其他属性 */
  11. }
  12. </style>
  13. ...
  14. <body>
  15. <div>
  16. <p>姓名</p>
  17. <p>年龄</p>
  18. <p>出生日期</p>
  19. <p>居住地址</p>
  20. </div>
  21. </body>

2. Agrega imágenes a través del fondo.

  1. <style>
  2. .container{
  3. margin: 100px;
  4. }
  5. .container::after{
  6. content: "";
  7. display:block;
  8. width: 260px;
  9. height: 260px;
  10. background-image: url("D:\test\girl.png");
  11. background-position: center;
  12. background-size: cover;
  13. }
  14. </style>
  15. ......
  16. <body>
  17. <div class="container">通过背景添加图片</div>
  18. </body>

3. Añade líneas decorativas

  1. <style>
  2. .line{
  3. display: flex;
  4. align-items: center;
  5. margin: 60px;
  6. height: 40px;
  7. font-size: 18px;
  8. }
  9. .line::before, .line::after{
  10. content: "";
  11. width: 300px;
  12. border-top: 6px double;
  13. margin: 5px;
  14. }
  15. </style>
  16. ......
  17. <body>
  18. <div class="line">添加装饰线</div>
  19. </body>

4. Expandir la flecha a la derecha

  1. <style>
  2. .container{
  3. display: flex;
  4. flex-direction: column;
  5. align-items: center;
  6. justify-content: center;
  7. width: 400px;
  8. margin: 100px auto;
  9. padding: 30px 0;
  10. border-radius: 8px;
  11. box-shadow: 0 0 4px 1px #acacac;
  12. }
  13. .setting-item{
  14. position: relative;
  15. align-items: center;
  16. display: flex;
  17. width: 300px;
  18. height: 40px;
  19. margin-bottom: 20px;
  20. border-bottom: 1px solid #ccc;
  21. }
  22. .setting-item::after{
  23. position: absolute;
  24. right: 0;
  25. content: "";
  26. width: 8px;
  27. height: 8px;
  28. border-top: 1px solid #666;
  29. border-right: 1px solid #666;
  30. transform: rotate(45deg);
  31. }
  32. </style>
  33. ......
  34. <body>
  35. <div class="container">
  36. <div class="setting-item">账号设置</div>
  37. <div class="setting-item">权限管理</div>
  38. <div class="setting-item">相关服务</div>
  39. <div class="setting-item">帮助与反馈</div>
  40. <div class="setting-item">......</div>
  41. </div>
  42. </body>

5. Triángulo de diálogo

  1. <style>
  2. .container {
  3. width: 400px;
  4. margin: 100px auto;
  5. padding: 30px 0;
  6. border-radius: 8px;
  7. box-shadow: 0 0 4px 1px yellowgreen;
  8. }
  9. .left-box,.right-box {
  10. display: flex;
  11. }
  12. .right-box {
  13. justify-content: end;
  14. }
  15. span {
  16. position: relative;
  17. display: flex;
  18. align-items: center;
  19. background-color: yellowgreen;
  20. border-radius: 6px;
  21. margin: 4px 14px;
  22. padding: 16px;
  23. }
  24. .left-box span::before, .right-box span::after{
  25. position: absolute;
  26. content: "";
  27. width: 12px;
  28. height: 12px;
  29. background-color: yellowgreen;
  30. transform: rotate(45deg);
  31. }
  32. .left-box span::before{
  33. left: -6px;
  34. }
  35. .right-box span::after {
  36. right: -6px;
  37. }
  38. </style>
  39. ......
  40. <body>
  41. <div class="container">
  42. <div class="left-box">
  43. <span>Nice to meet you!</span>
  44. </div>
  45. <div class="right-box">
  46. <span>Nice to meet you, too!</span>
  47. </div>
  48. </div>
  49. </body>

6. Insertar icono icono

  1. <style>
  2. .login-box{
  3. display: flex;
  4. flex-direction: column;
  5. align-items: center;
  6. justify-content: center;
  7. width: 400px;
  8. height: 400px;
  9. margin: 100px auto;
  10. border-radius: 8px;
  11. box-shadow: 0 0 4px 1px #acacac;
  12. }
  13. .title{
  14. font-size: 24px;
  15. font-weight: 700;
  16. margin-bottom: 40px;
  17. }
  18. .account, .pwd, .login-btn, .forgot-pwd{
  19. width: 300px;
  20. height: 40px;
  21. line-height: 40px;
  22. }
  23. .account, .pwd{
  24. display: flex;
  25. align-items: center;
  26. border-bottom: 1px solid #ccc;
  27. font-size: 14px;
  28. color: #888;
  29. }
  30. .pwd{
  31. margin-top: 20px;
  32. }
  33. .account::before, .pwd::before{
  34. content: '';
  35. display: inline-block;
  36. width: 24px;
  37. height: 24px;
  38. background-repeat: no-repeat;
  39. background-position: center center;
  40. background-size: contain;
  41. margin-right: 8px;
  42. }
  43. .account::before{
  44. background-image: url("D:\test\user.svg");
  45. }
  46. .pwd::before {
  47. background-image: url("D:\test\pwd.svg");
  48. }
  49. .login-btn{
  50. text-align: center;
  51. color: #fff;
  52. font-size: 16px;
  53. font-weight: 700;
  54. background: #2687F0;
  55. border-radius: 5px;
  56. margin-top: 40px;
  57. }
  58. .forgot-pwd{
  59. text-align: right;
  60. font-size: 14px;
  61. color: #888;
  62. margin-top: 20px;
  63. }
  64. </style>
  65. ......
  66. <body>
  67. <div class="login-box">
  68. <div class="title">XXX 管理系统</div>
  69. <div class="account">请输入账号</div>
  70. <div class="pwd">请输入密码</div>
  71. <div class="login-btn">登 录</div>
  72. <div class="forgot-pwd">忘记密码</div>
  73. </div>
  74. </body>

=========================================================================

¡Haz un pequeño progreso todos los días~!

¡Un consejo práctico de CSS~!