关于CSS多属性多逗号分隔值的匹配逻辑的技术问询
关于CSS多背景属性逗号分隔值的匹配逻辑问询
嘿,这个问题问得太戳点了!我刚接触CSS多背景的时候,盯着这种逗号分隔的写法也愣了好一会儿,完全能get你的困惑😅
先给你拍板:你猜的第一种「一一对应栈匹配」的逻辑是100%正确的,根本不是简单的从上到下覆盖或者反向执行。
拿你贴的这段代码举例:
html { background-color: #313a3d; background-attachment: fixed, fixed; background-image: url("images/overlay.png"), url("../../images/bg.jpg"); background-position: top left, center center; background-repeat: repeat, none; background-size: auto, cover; }
核心是background-image定义了两个背景图层——这里要提个小细节:CSS里的背景图层是「先写的在上层,后写的在下层」,所以overlay.png是盖在bg.jpg上面的。
然后其他所有带逗号分隔的背景属性,每个位置的值都会精准绑定到background-image里对应位置的背景图:
background-position: top left, center center→ 上层的overlay.png定位在左上角,下层的bg.jpg居中显示background-repeat: repeat, none→overlay.png会重复平铺整个容器,bg.jpg只显示一次background-size: auto, cover→ 这就是你关心的点:auto只对应overlay.png(用它自身的原始尺寸),cover只对应bg.jpg(让它铺满整个html容器,保持比例裁切)
完全不会出现「先执行cover再执行auto」这种覆盖逻辑,每个值都是和对应背景图绑定死的。
额外补个小知识点:如果某个背景属性的逗号值数量比背景图少,CSS会自动循环复用这些值。比如你要是把background-attachment写成fixed(只有一个值),那两个背景都会用fixed定位;反过来如果值比背景图多,多出来的就会被忽略。
内容来源于stack exchange
相关产品推荐
相关产品推荐

