CSS z-index用法困惑:多背景图片分层实现问题求助
CSS多背景图片分层:z-index无效的原因与解决方法
在实现多背景图片分层时,很多人会误以为可以用z-index控制背景图的堆叠顺序,但实际上这是对z-index的误用。
错误尝试:用z-index设置多背景层级
最初尝试通过逗号分隔的z-index值指定背景图层级,这种写法完全无效:
body { background-image: url("design1.jpg"), url("northpole2.jpg"), url("chessbackground.jpg"), url("clipart3102234.png"), url("grassblock.jpg"), url("photoborder.jpg"), url("website\ background\ color.jpg"); z-index: 1, 1, 1, 2, 1, 1; /* 无效写法:z-index不支持多值 */ background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat; background-size: 700px 290px, 700px 290px, 250px 250px, 200px 200px, 250px 250px,850px 300px, 200px 200px; background-position-x: 0%, 100%, 0%, 98%, 100%, 50%, 50%; background-position-y: 0%, 0%, 24%, 24%, 24%, 24%, 24%; background-color: rgb(170, 154, 154); }
调整z-index数值后依然无法生效,因为z-index的作用对象是定位元素(position属性为relative/absolute/fixed/sticky),且不支持逗号分隔的多值语法,无法直接控制背景图的堆叠。
正确解决方案:调整background-image的顺序
CSS多背景图片的堆叠规则是:background-image中排在最前面的图片会显示在最上层,后续图片依次叠在下方。只需将需要显示在最上层的图片放在background-image的首位即可:
body { background-image: url("paperbackground.jpg"), url("design1.jpg"), url("northpole2.jpg"), url("chessbackground.jpg"), url("clipart3102234.png"), url("grassblock.jpg"), url("photoborder.jpg"); background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat; background-size: 650px 200px, 700px 290px, 700px 290px, 250px 250px, 200px 200px, 250px 250px, 835px 365px; background-position-x: 50%, 0%, 100%, 0%, 98%, 100%, 50%; background-position-y: 30%, 0%, 0%, 24%, 24%, 24%, 24%; background-color: rgb(170, 154, 154); }
内容的提问来源于stack exchange,提问作者Amogus666
相关产品推荐
相关产品推荐

