You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让font-size影响图标rem值?求原因及实现方法

问题原因与解决方法

问题原因

你给.big设置的font-size:125%不会影响图标尺寸,因为图标所有尺寸用的是rem单位——rem的计算只和根元素(<html>)的font-size挂钩,和元素自身或父元素的font-size无关。所以修改.big的font-size对基于rem的图标尺寸没有任何作用。

正确实现方式

方法1:改用em单位

em单位是相对于当前元素(或父元素)的font-size计算的,把图标里的rem替换成em,父元素的font-size就能直接影响图标大小:

body {font-family: sans-serif;height: 100vh;margin: 0;display: grid;place-items: center;}
.big {font-size:125%;}
/* 修正原代码里的translate语法错误 */
.middle-text {position:absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
.gg-mail,.gg-mail::after {display: block;box-sizing: border-box;height: 1.4em;border: 0.2em solid}
.gg-mail {overflow: hidden;transform: scale(var(--ggs,1));position: relative;width: 1.8em;border-radius: 0.2em}
.gg-mail::after {content: "";position: absolute;border-radius: 0.3em;width: 1.4em;transform: rotate(-45deg);bottom: 0.3em;left: 0}

方法2:用CSS变量关联尺寸控制

自定义变量绑定图标所有尺寸,通过父元素修改变量值调整大小:

html {font-size: 62.5%;}
body {font-family: sans-serif;height: 100vh;margin: 0;display: grid;place-items: center;}
/* 自定义变量控制图标基准尺寸 */
.big {--icon-base: 1.25rem;}
.middle-text {position:absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
.gg-mail,.gg-mail::after {display: block;box-sizing: border-box;height: calc(1.4 * var(--icon-base, 1rem));border: calc(0.2 * var(--icon-base, 1rem)) solid}
.gg-mail {overflow: hidden;transform: scale(var(--ggs,1));position: relative;width: calc(1.8 * var(--icon-base, 1rem));border-radius: calc(0.2 * var(--icon-base, 1rem))}
.gg-mail::after {content: "";position: absolute;border-radius: calc(0.3 * var(--icon-base, 1rem));width: calc(1.4 * var(--icon-base, 1rem));transform: rotate(-45deg);bottom: calc(0.3 * var(--icon-base, 1rem));left: 0}

方法3:利用原生缩放变量

原代码已经用到--ggs缩放变量,直接在父元素设置该变量值即可:

body {font-family: sans-serif;height: 100vh;margin: 0;display: grid;place-items: center;}
/* 125%对应缩放倍数1.25 */
.big {font-size:125%;--ggs: 1.25;}
.middle-text {position:absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}
.gg-mail,.gg-mail::after {display: block;box-sizing: border-box;height: 1.4rem;border: 0.2rem solid}
.gg-mail {overflow: hidden;transform: scale(var(--ggs,1));position: relative;width: 1.8rem;border-radius: 0.2rem}
.gg-mail::after {content: "";position: absolute;border-radius: 0.3rem;width: 1.4rem;transform: rotate(-45deg);bottom: 0.3rem;left: 0}

内容的提问来源于stack exchange,提问作者Matan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:40:26