::first-letter 的 font-size 无法动画,因规范限制且渲染机制特殊;应改用真实 span 包裹首字母并应用 transition 或 keyframes 实现可靠动画效果。
直接对 ::first-letter 使用 transition 或 @keyframes 控制字体大小,通常不会生效——因为 ::first-letter 是一个**伪元素**,且浏览器对其可动画属性支持非常有限。CSS 规范明确指出:绝大多数 CSS 属性在 ::first-letter 上不可过渡或动画,包括 font-size、color(部分浏览器例外)、line-height 等。
根本原因有两点:
::first-letter 的可继承/可动画属性范围收得很窄;font-size 不在其列。最可靠的做法是**放弃依赖 ::first-letter 动画,改用真实 DOM 元素包裹首字母**,再对其应用 transition 或 keyframes:
A
span 设置 display: inline-block(确保能设宽高/变换)transition: font-size 0.3s ease 或 @keyframes
示例:
Hello world
.first-letter {
display: inline-block;
font-size: 2rem;
transition: font-size 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
p:hover .first-letter {
font-size: 3.2rem;
}
某些
效果可间接实现(但非真正 font-size 动画):
transform: scale(1.8) 支持 transition,视觉上接近放大首字母(注意会缩放整个字形,包括描边、阴影)font-weight 和 opacity 在部分浏览器中可过渡,增强“强调感”::first-letter color 有基础 transition 支持,但 font-size 仍不行 —— 别依赖它避免手写 HTML,可用轻量 JS 自动处理:
document.querySelectorAll('p').forEach(p => {
const text = p.textContent;
if (text && text.length > 0) {
const first = text[0];
const rest = text.slice(1);
p.innerHTML = `${first}${rest}`;
}
});
配合 CSS 即可统一控制所有段落首字母动画,稳定、可控、无兼容陷阱。
# css
# html
# js
# 前端
# 伪元素
# 浏览器
# app
# safari
# 为什么
# chrome
# 继承
# class
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
如何在 Go 中正确初始化结构体中的 map 字段
Win10系统怎么查看端口状态_Windows10 CMD查看网络连接
Windows怎样关闭开始菜单推荐广告_Windows关闭开始菜单推荐设置【步骤】
php报错怎么查看_定位PHP致命错误与警告的方法【教程】
手机php怎么转mp4_手机端php文件转mp4app推荐【指南】
C#如何序列化对象为XML XmlSerializer用法
c++协程和线程的区别 c++异步编程模型对比【核心】
php下载安装包怎么选_threadsafe与nts版本差异【解答】
Mac怎么进行语音输入_Mac听写功能设置与使用【教程】
php转mp4怎么保留字幕_php处理带字幕视频转换说明【说明】
Win10如何备份注册表_Win10注册表备份步骤【攻略】
Win11无法拖拽文件到任务栏怎么办_Win11开启拖放功能修复【方法】
Windows笔记本无法进入睡眠模式怎么办?(电源疑难解答)
mac怎么右键_MAC鼠标右键设置与触控板手势技巧【入门】
如何使用Golang实现RPC序列化与反序列化_Golang RPC数据编码与解码方法
Win10如何卸载Skype_Win10卸载Skype步骤【步骤】
c++如何获取map中所有的键_C++遍历键值对提取所有key的方法
Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】
Win11如何卸载OneDrive_Win11卸载OneDrive方法【教程】
如何在Golang中实现文件下载_Golang文件传输与内容类型处理方法
Windows怎样拦截QQ浏览器广告_Windows拦截QQ浏览器广告方法【方法】
Python音视频处理高级项目教程_FFmpegPydub剪辑与特效
PHP cURL GET请求:正确设置认证与自定义请求头的完整教程
Win11触摸板没反应怎么办_开启Win11笔记本触摸板手势教程【步骤】
c# 在高并发场景下,委托和接口调用的性能对比
Win11怎么看电池循环次数_Win11笔记本电池寿命检测【命令】
Win10怎样卸载iTunes_Win10卸载iTunes步骤【步骤】
mac怎么退出id_MAC退出iCloud账号与Apple ID切换【指南】
Python异步编程高级项目教程_asyncio协程任务管理实战
Mac如何查看电池健康百分比_Mac系统信息电源检测
MAC如何启用访达侧边栏显示_MAC Finder偏好设置与常用目录添加【教程】
Windows10任务栏图标变成白色文件_Win10重建图标缓存修复方法
Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】
Python解释执行模型_字节码流程说明【指导】
Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】
Win11如何设置ipv6 Win11开启IPv6网络协议教程【步骤】
如何使用Golang实现路由参数绑定_使用Mux和Request解析路径变量
Windows服务无法启动错误1067是什么_进程意外终止的解决方法
PythonFastAPI项目实战教程_API接口与异步处理实践
php怎么捕获异常_trycatch结构处理运行时错误的技巧【方法】
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
ACF 教程:如何正确更新嵌套在多层 Group 字段内的子字段
VSC怎么快速定位PHP错误行_错误追踪设置法【方法】
php订单日志怎么按状态筛选_php筛选不同状态订单日志教程【教程】
php订单日志怎么导出excel_php导出订单日志到表格教程【教程】
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
如何正确访问 Laravel 模型或对象的属性而非调用不存在的方法
Python对象比较与排序_集合使用说明【指导】
Win11怎么关闭触控板_Win11笔记本禁用触摸板快捷键
Win11怎么关闭定位服务 Win11禁止应用获取位置信息【隐私】
2025-12-30
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。