制作css icon
使用 CSS 制作图标
通过纯 CSS 可以创建简单的矢量图标,通常利用 ::before 和 ::after 伪元素结合边框、变换等属性实现。
基础箭头图标示例:
![]()
.arrow {
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 10px solid #333;
}
利用伪元素创建复杂图标
通过叠加伪元素可以实现更多形状,例如心形图标:
.heart {
position: relative;
width: 20px;
height: 20px;
transform: rotate(45deg);
}
.heart::before, .heart::after {
content: "";
position: absolute;
width: 20px;
height: 20px;
border-radius: 50%;
background: red;
}
.heart::before {
top: -10px;
left: 0;
}
.heart::after {
top: 0;
left: -10px;
}
使用 CSS 渐变创建图标
线性渐变和径向渐变可用于创建特殊形状:
![]()
.sun {
width: 24px;
height: 24px;
background: radial-gradient(circle, gold 30%, transparent 40%),
linear-gradient(90deg, transparent 45%, gold 45%, gold 55%, transparent 55%),
linear-gradient(transparent 45%, gold 45%, gold 55%, transparent 55%);
}
动画图标效果
添加 transition 或 animation 使图标具有交互性:
.menu-icon {
width: 20px;
height: 2px;
background: #000;
position: relative;
transition: all 0.3s;
}
.menu-icon::before, .menu-icon::after {
content: "";
position: absolute;
width: 20px;
height: 2px;
background: #000;
transition: all 0.3s;
}
.menu-icon::before { top: -6px; }
.menu-icon::after { top: 6px; }
/* 点击时变为X形 */
.active .menu-icon {
background: transparent;
}
.active .menu-icon::before {
transform: rotate(45deg);
top: 0;
}
.active .menu-icon::after {
transform: rotate(-45deg);
top: 0;
}
响应式图标设计
使用 em 或 rem 单位使图标自适应:
.responsive-icon {
width: 1em;
height: 1em;
border: 0.1em solid currentColor;
border-radius: 50%;
}
优化技巧
- 优先使用
currentColor继承父元素文字颜色 - 对于复杂图标考虑使用 SVG 替代
- 使用
will-change属性优化动画性能 - 通过
filter: drop-shadow()添加投影而非box-shadow避免影响形状
这些方法可以组合使用创建各种常见 UI 图标,如加载动画、社交符号等。对于更复杂的图形,建议结合 SVG 实现。






