::before
是一个伪元素(pseudo-element),用于在所选元素的内容前面插入一个虚拟的元素。它通过CSS样式来装饰和定位,并且不需要在HTML中实际添加额外的元素,下面是一个如何在一个按钮前面插入一个 "+" 图标的实例:
.btn::before { content: "+"; /* 设置伪元素的内容 */ color: #fff; /* 设置伪元素的颜色 */ background-color: #007bff; /* 设置伪元素的背景色 */ border-radius: 50%; /* 设置伪元素的圆角 */ width: 20px; /* 设置伪元素的宽度 */ height: 20px; /* 设置伪元素的高度 */ line-height: 20px; /* 设置伪元素内容的行高 */ text-align: center; /* 设置伪元素内容的对齐方式 */ position: absolute; /* 设置伪元素的定位方式 */ left: -10px; /* 设置伪元素相对于父元素左侧的偏移值 */ top: 50%; /* 设置伪元素相对于父元素顶部的偏移值 */ transform: translateY(-50%); /* 设置伪元素垂直居中 */ }
除了 ::before
伪元素,CSS中还有其他一些常用的伪类和伪元素,如 ::after
、:hover
、:nth-child()
、:first-child
等。
伪类使用一个冒号(:)作为前缀,而伪元素使用两个冒号(::)作为前缀。
(1)::after:在所选元素的内容后面插入一个虚拟的元素。与 ::before
类似,可以用于添加额外的样式装饰。
element::after { content: "After"; {
(2):hover:当鼠标悬停在所选元素上时触发样式效果。常用于实现交互效果。
.button:hover { background-color: #ff0000; }
(3):nth-child:选择父元素下指定位置的子元素。可以根据指定位置的顺序来选择对应的子元素。
ul li:nth-child(odd) { background-color: #f1f1f1; } ul li:nth-child(even) { background-color: #ffffff; }
(4):first-child:选择父元素下的第一个子元素。
ul li:first-child { font-weight: bold; }
(5):focus:当元素获取焦点时触发样式,通常用于表单元素。
input:focus { border: 2px solid blue; }
(6):visited:选择访问过的链接。
a:visited { color: purple; }
另外呢伪元素还有:
::first-line
:选择元素的第一行文本。::first-letter
:选择元素的首字母。::selection
:选择用户选中的文本。::placeholder
:选择表单元素的占位符文本。
伪类还有:
:last-child
:选择父元素下的最后一个子元素。:not(selector)
:选择不满足指定选择器的元素。:nth-of-type(n)
:选择父元素下指定类型的子元素中的第n个元素。