只设padding无法保证触控区达标,因a标签默认inline导致上下padding无效、未设box-sizing:border-box使尺寸失控、父容器overflow:hidden裁剪padding区域;必须配合min-width/min-height兜底至48×48px。
很多开发者写 padding: 12px 16px 就以为热区够了,但真机一测,手指点不中——蓝色高亮框根本没包住内边距。原因有三:
a 标签默认是 display: inline,padding 在上下方向不生效(只撑左右)box-sizing: border-box,padding + border 会让总宽超出预期,尤其在 Flex 容器里挤垮布局overflow: hidden,直接把 padding 区域裁掉——开发者工具里看不见,但手指点不到快速验证方法:加一句 outline: 1px solid red,看红色框是否完整包住文字 + 内边距。不包住,就是被裁或盒模型错。
Apple 和 Android 都建议最小触控尺寸 ≥ 44×44px;iOS Safari 实际触发 :active 的阈值更接近 48×48px。光靠文字撑、font-size 拉或 padding 单独撑,在窄内容(如图标按钮「→」或三横线)下会失效——浏览器会压缩盒模型,padding 实际宽度低于声明值。
min-width: 48px 和 min-height: 48px(保守起见用 48px)width 或 height:固定宽高会破坏响应式弹性,小屏下容易溢出或留白过大min-width/min-height 比 font-size 更可靠——图标大小和文字解耦只在 @media (min-width: 768px) 里改 padding 和 font-size,大概率导致大屏按钮单薄、小屏文字贴边甚至被裁。真正要稳,得同步控制:
height 或 line-height:确保文字垂直居中,尤其 font-size 变小后行高没跟上,文字会偏上min-width 和 min-height:小屏断点(如 @media (min-width: 480px))里至少保持 44px,大屏可放宽到 56pxem/rem 驱动 padding:根字体缩放时会二次放大,热区失控;推荐 px + 阶梯媒体查询,或 clamp(12px, 4vw, 16px)(注意 IE 不支持)典型组合:padding: 12px 16px; min-width: 48px; min-height: 48px; → 平板断点加 padding: 14px 20px → 桌面端再加 line-height: 1.4 对齐。
::before 或 ::after 默认无法扩大点击区域,因其不参与浏览器热区计算;真要靠它“扩热区”,必须显式激活事件捕获、绕过渲染限制、并接受兼容性妥协。
<button>)必须设 position: relative,否则伪元素定位失准::before 必须有 content: ""、position: absolute、inset: -12px(或等效 top/left/right/bottom 偏移),且显式声明 pointer-events: auto
overflow: hidden、transform 或 will-change: transform,否则伪元素会被裁剪或坐标偏移伪元素方案在 iOS Safari 上的典型失效原因包括:touch-action: none 拦截冒泡、没配 touch-action: manipulation 导致 300ms 延迟。比起伪元素,更推荐先用 padding + min-width + touch-action ——伪元素唯一合理用途,是在这些基础已调通的前提下,做视觉微调(比如导航栏里按钮不能加 padding,才用 ::before 向外延伸 8px),且必须真机多环境验证。
virtualbox下怎么实现ubuntu20.04开机自动挂载共享文件夹?
ubuntu20.04怎么开启护眼模式? ubuntu夜间模式的设置方法
如何在Ubuntu 20.04上安装Microsoft Edge浏览器
Ubuntu20.10优麒麟触摸手势有哪些? 优麒麟系统新增手势汇总
优麒麟20.04.1发布 更新内容汇总(附下载)
Mermaid Visual Editor 如何同步可视化操作与 Mermaid 源码?