css 卡片角标怎么不用额外标签实现_利用 before 伪元素生成角标
技术百科
P粉602998670
发布时间:2026-01-28
浏览: 次 纯CSS角标可用::before实现,关键在于父容器设position: relative、::before设absolute定位及border三角或宽高矩形技巧,并注意z-index、pointer-events及样式继承问题。
用 ::before 伪元素画角标,核心是定位 + 边框三角技巧
纯 CSS 角标不依赖额外 HTML 标签完全可行,关键是把 ::before 当成一个独立可绘图的“小画布”。它默认是行内级、无尺寸,所以必须显式设置 content(哪怕为空)、position: absolute,再结合 border 技巧生成三角形或矩形角标。
position: absolute 的父容器必须设 position: relative
否则 ::before 会相对于最近的定位祖先或 viewport 定位,导致角标飘走。卡片容器没加 position: relative 是最常见的失效原因。
- 卡片元素(如
.card)需声明position: relative -
::before内部用top/right精确控制偏移,例如右上角:top: 8px; right: 8px; - 避免用
transform: translate()做微调——它可能影响点击热区或动画表现
三角形角标用 border 技巧,矩形角标直接设宽高
三角形靠 border 颜色叠加实现,只留一个方向有颜色、其余 transparent;矩形更简单,但要注意字体大小和行高对齐。
.card {
position: relative;
}
.card::before {
content: "";
position: absolute;
top: 8px;
right: 8px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #ff4757;
}
若要带文字的矩形角标(如 “NEW”),改用:
.card::before {
content: "NEW";
position: absolute;
top: 4px;
right: 4px;
background: #ff4757;
color: white;
font-size: 12px;
padding: 2px 6px;
border-radius: 2px;
}
注意 z-

角标盖住卡片内容边缘时,用户可能点不到右上角的关闭按钮或图标。伪元素默认层级在元素内容之上,但未必在所有子元素之上。
- 给
::before加z-index: 1,确保它不被卡片内其他position元素覆盖 - 如果角标只是视觉装饰、不该响应点击,加
pointer-events: none - 若角标本身要可点击(比如跳转),需确保其
z-index足够高,并测试移动端 touch 区域是否足够
最易忽略的是:伪元素无法继承父元素的 font-family 或 color,所有文本样式都得单独写;另外,content 为空字符串时不能省略,否则伪元素根本不渲染。
# 的是
# 但要
# 为空
# 跳转
# 不被
# 若要
# css
# html
# 字符串
# pointer
# 角形
# 继承
# 最常见
# border
# transform
# 相对于
# position
# 都得
# 伪元素
# viewport
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 如何在JavaScript中动态拼接PHP的bas
- Win11输入法切换快捷键怎么改_Windows
- php后缀怎么变mp4能播放_让php伪装mp4正
- Win11关机快捷键是什么_Win11快速关机方法
- 如何在Golang中实现基础配置管理功能_Gola
- Windows蓝屏错误0x0000002C怎么解决
- Win11怎么查看激活状态_查询Windows 1
- Go语言中slice追加操作的底层共享机制解析
- PHP 中如何在函数内持久修改引用变量所指向的目标
- Win11怎么设置鼠标宏_Win11鼠标按键自定义
- 如何使用正则表达式精确匹配最多含一个换行符的 st
- 微信里的php文件怎么变mp4_微信接收php转m
- Win11如何更改任务栏颜色 Win11自定义任务
- 如何使用Golang进行HTTP服务性能测试_测量
- 如何有效拦截拼接式恶意域名的垃圾信息
- Win11时间不对怎么同步_Win11自动校准互联
- 如何使用Golang操作指针变量_Golang解引
- 使用类变量定义字符串常量时的类型安全最佳实践
- Windows10电脑怎么查看硬盘通电时间_Win
- Win10任务栏天气和资讯怎么关闭 Win10禁用
- 如何使用Golang安装依赖库_管理模块和第三方包
- Win11怎么更改鼠标指针_Windows 11自
- Win11资源管理器卡顿怎么办 Win11文件资源
- php8.4如何实现队列任务_php8.4redi
- 如何自定义Windows终端的默认配置文件?(Po
- Python脚本参数接收_sys与argparse
- c++怎么使用类型萃取type_traits_c+
- Win11 explorer.exe频繁崩溃_修复
- c++中如何对数组进行排序_c++数组排序算法汇总
- Windows蓝屏错误0x0000001E怎么修复
- 如何在Windows上设置闹钟和计时器_系统自带的
- Mac电脑进水了怎么办_MacBook进水后紧急处
- Linux如何挂载新硬盘_Linux磁盘分区格式化
- Windows10系统怎么查看CPU温度_Win1
- Win10怎样清理C盘Steam游戏缓存_Win1
- Windows10怎样连接蓝牙设备_Windows
- Python文本编码与解码_跨平台解析说明【指导】
- Win11怎么开启智能存储_Windows11存储
- 如何在 Pandas 中按元素交集合并两列字符串
- php删除数据怎么清空表_truncate与del
- 如何使用Golang搭建Web开发环境_快速启动H
- 如何用正则表达式精确匹配最多含一个换行符的起止片段
- 如何使用Golang捕获测试日志_Golang t
- Win11怎么设置组合键快捷方式_Windows1
- Win11输入法选字框不见了怎么办_Win11输入
- php查询数据怎么导出csv_查询结果转csv文件
- Windows 11无法安全删除U盘提示设备正在使
- 如何使用Golang处理静态文件缓存_提高页面加载
- C++中引用和指针有什么区别?(代码说明)
- MySQL 中使用 IF 和 CASE 实现查询字

QQ客服