为什么我的CSS线性渐变背景在移动端显示不完整?
大家好,我在做一个移动端页面时遇到个奇怪的问题。给导航栏设置了线性渐变背景,电脑上显示正常,但手机上左边三分之一的位置变成了纯色块。
我检查了代码发现是这样写的:
.nav-bar {
background: linear-gradient(to right, #ff9a9e, #fad0c4);
height: 60px;
display: flex;
align-items: center;
padding: 0 20px;
}
已经尝试过设置background-size: 200% 100%,但这样会让渐变在手机横屏时出现重复。如果把容器改成position: fixed又导致页面滚动时背景错位。有没有什么方法能让渐变在不同分辨率下都完整显示?
先加个 meta 标签确认 viewport 正确:
然后你的 .nav-bar 改成这样:
关键点是加上
width: 100%和box-sizing: border-box,不然在某些安卓浏览器里 padding 会撑宽元素,导致溢出或渲染截断。iOS Safari 尤其对这类布局敏感。如果你用了根元素设置 font-size 或缩放过页面(比如 rem 布局),也要检查是否触发了浏览器的内部宽度重算。这种时候可以用
transform: translateZ(0)强制开启硬件加速来修复渲染层级:或者简单粗暴加一句:
-webkit-backface-visibility: hidden但别滥用。优先用第一种标准写法,90% 的问题都能解决。