单独设置background-xxx比如(background-position)失效原因及解决方法

时间:2024-04-05 07:52:02

                如何解决单独设置background-xxx属性失效问题

background属性是一个使用很广泛的属性,所有主要浏览器都支持这一属性,平日里我们也常用background:

#FF0000 url('../xx.jpg') top left no-repeat;  这一缩写属性的方法。

正文

今天在写一个轮播图背景图的时候碰到这样一个问题:我单独设置了background-position和background-size

等属性,接着我还写了background:url()设置背景图片,结果前面单个属性全部失效

单独设置background-xxx比如(background-position)失效原因及解决方法

html结构如下

单独设置background-xxx比如(background-position)失效原因及解决方法

单独设置background-xxx比如(background-position)失效原因及解决方法

本意是想通过.pc_a{} 设置图片的位置等属性,通过.pc_1{},.pc_2{}引入a标签的背景图片

但是却在浏览器得到这样的结果:

单独设置background-xxx比如(background-position)失效原因及解决方法

是的,我设置的background-xxx的属性全部失效了

按照经验,下划线划掉的属性表示我前面可能写了相同属性将其覆盖,乍一看没有

想着浏览器渲染是从上往下的,我便把.pc_a{...}一起放到.pc_1{}.和pc_2{}下面,

单独设置background-xxx比如(background-position)失效原因及解决方法

于是乎现在样式结构变成这样,保存,按f5刷新属性一看,果然生效了,页面达到我要的效果

单独设置background-xxx比如(background-position)失效原因及解决方法

这样问题就得到解决了,不过我还是想知道原因到底是什么,导致我写单个写的background属性失效呢

定睛在一块看,原来我在设置了background-xxx属性之后,还设置了background属性,这一属性本来就

有多个属性,会不会就是它默认值把我前面设置的给覆盖了呢

证明

我将几个样式顺序复位,然后将background属性改为background-image,果然属性依旧生效,页面达到

我想要的效果

单独设置background-xxx比如(background-position)失效原因及解决方法

总结

background属性等有多个属性值的,要么统一书写单个属性比如background-position,background-size

background-image等,避免background属性默认值覆盖单个属性值

要么你就先写background属性,再写background-xxx属性,因为样式解析是从上到下的,所以不会出现覆盖