讲师中心 微信公众号
AI工具推荐 视频效率加速

css::before与::after伪元素如何用在按钮中_在按钮前后插入图标或文本

浅丽大大_7570

浅丽大大_7570

发布时间:2026-02-05 08:25:03

|

301人浏览过

|

来源于php中文网

原创

按钮中用::before和::after插入图标需设position: relative,否则伪元素定位错乱;content为强制属性,须设content: "";常见不可见原因包括缺content、字体未加载、未设absolute定位及偏移、SVG尺寸未设。

css::before与::after伪元素如何用在按钮中_在按钮前后插入图标或文本

按钮中用 ::before 和 ::after 插入图标的前提条件

必须给按钮设置 position: relative,否则伪元素的绝对定位会相对于最近的定位祖先(可能跳到 body 或父容器),导致图标飘走。伪元素默认是 inline 级,不设宽高、不设 content 就不会渲染——content 是强制属性,哪怕只写 content: "" 也得有。

::before 放图标时为什么经常看不见

常见原因有三个:
• 没加 content: "",伪元素直接被忽略
• 图标字体(如 Font Awesome)没正确加载,或 font-family 写错,导致显示成方块或空白
• 忘了设 position: absolute 和偏移量(比如 left: 8px 或 right: 8px),让它堆在文字里挤成一团
• SVG 背景图方式下,忘了设 width/height 或 background-size,图标缩成一个点

推荐做法:用字体图标时,::before 常配 font: normal normal normal 16px/1 "Font Awesome 5 Free";用 base64 SVG 时,用 background + padding-left 推开文字更稳。

按钮两端同时用 ::before 和 ::after 的布局要点

两端图标+文字要对齐,关键在尺寸和盒模型控制:
• 统一设 display: inline-block 或 display: flex(按钮本身用 flex 更易控垂直居中)
• 伪元素统一设 vertical-align: middle(配合 inline 元素)或用 top: 50%; transform: translateY(-50%)(配合 absolute)
• 文字内容用 padding-left/padding-right 预留空间,比靠伪元素的 left/right 更可靠,尤其按钮宽度变化时
• 避免同时对伪元素设 width 和 padding 又不设 box-sizing: border-box,容易撑出横向滚动条

立即学习“前端免费学习笔记(深入)”;

htmlppt.skill
htmlppt.skill

把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。

下载

示例(左侧图标 + 右侧箭头):

.btn { position: relative; padding: 8px 16px 8px 32px; }<br>.btn::before { content: "★"; position: absolute; left: 12px; top: 50%; transform: translateY(-50%); }<br>.btn::after { content: "→"; position: absolute; right: 12px; top: 50%; transform: translateY(-50%); }

用伪元素做悬停状态图标切换的坑

想实现“默认显示 ✅,hover 显示 ➕”,不能只改 content——CSS 不允许在伪元素里用 transition 动画 content 属性。可行方案只有:
• 两个伪元素都存在,用 opacity + visibility 切换显隐(需设 transition: opacity .2s)
• 把图标全写进 content,用 Unicode 变体或字体不同字符,但无法动画过渡
• 改用真实子元素(<i class="icon"></i>),虽然多写 HTML,但可控性高得多

另外注意:伪元素不触发事件,所以别指望 ::after 的图标能单独绑定 click——它只是视觉层,点击区域还是整个按钮。

真正难处理的是响应式按钮里图标缩放和文字换行冲突,这时候伪元素的定位偏移值最好用 rem 或 em,而不是固定 px。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6287

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2648

2023.08.10

CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

352

2023.11.23

css中的padding属性作用
css中的padding属性作用

在CSS中,padding属性用于设置元素的内边距。想了解更多padding的相关内容,可以阅读本专题下面的文章。

3092

2023.12.07

html边框设置教程
html边框设置教程

本教程将带你全面掌握HTML/CSS边框设置,从基础的border属性讲起,涵盖所有边框样式、圆角设置及高级技巧,帮助你快速上手实现各种边框效果。

2753

2025.09.02

css3transition
css3transition

css3transition属性用于指定如何从一个CSS样式过渡到另一个CSS样式,本专题为大家提供transition相关的文章、相关下载和相关课程,大家可以免费体验。

1970

2023.06.27

flex教程
flex教程

php中文网为大家带来了flex教程合集,Flex是采用Flex布局的元素,称为Flex容器(flex container),简称"容器",它的所有子元素自动成为容器成员,有三个核心概念: flex项,需要布局的元素;flex容器,其包含flex项;排列方向,这决定了flex项的布局方向。php中文网还为大家带来flex的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

10717

2023.06.14

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6.1万人学习

CSS教程
CSS教程

共754课时 | 99.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn