预定义 CSS 背景图片中心位置和覆盖背景大小

Posted

技术标签:

【中文标题】预定义 CSS 背景图片中心位置和覆盖背景大小【英文标题】:Pre-define CSS background image center center position and cover background size 【发布时间】:2016-06-23 16:00:50 【问题描述】:

我正在努力缩短背景图像位置(中心中心)和背景大小(封面)的 CSS 代码。

每当我使用以下代码时,它都可以正常工作,很明显:

html

<div class="banner-divider" id="banner-divider-welcome"></div>
<div class="banner-divider" id="banner-divider-second"></div>

CSS:

.banner-divider
width: 100%;
height:600px;

#banner-divider-welcome
background: url(/images/welcome.jpg) no-repeat center center; 
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;

#banner-divider-second
background: url(/images/second.jpg) no-repeat center center; 
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;

我想缩短/删除居中和覆盖属性的多个 CSS 重复项(因为我有多个横幅 ID,但具有重复的背景设置),但是以下代码不能正确居中并覆盖图像:

HTML:

<div class="banner-divider" id="banner-divider-welcome"></div>
<div class="banner-divider" id="banner-divider-second"></div>

CSS:

.banner-divider
width: 100%;
height:600px;
background: #fff;
background-image: none;
background-repeat: no-repeat
background-position: center center; 
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;

#banner-divider-welcome
background: url(/images/welcome.jpg); 

#banner-divider-second
background: url(/images/second.jpg); 

我做错了什么?

【问题讨论】:

【参考方案1】:

您将覆盖整个 background 属性。改为设置background-image

.banner-divider
    width: 100%;
    height:600px;
    background: #fff;
    background-image: none;
    background-repeat: no-repeat; /* <- missing semi-colon */
    background-position: center center; 
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;

#banner-divider-welcome
    background-image: url(/images/welcome.jpg); /* <- here */ 

#banner-divider-second
    background-image: url(/images/second.jpg);  /* <- and here */

.banner-divider
    width: 100%;
    height:600px;
    background: #fff;
    background-image: none;
    background-repeat: no-repeat;
    background-position: center center; 
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;

#banner-divider-welcome
    background-image: url(https://placeimg.com/100/100/any);

#banner-divider-second
    background-image: url(https://placeimg.com/150/150/any);
<div class="banner-divider" id="banner-divider-welcome"></div>
<div class="banner-divider" id="banner-divider-second"></div>

【讨论】:

它不起作用,图像没有对齐div的中心,而是左上角【参考方案2】:

你需要使用 background-image 而不是使用背景属性。

.banner-divider
width: 100%;
height:600px;
background: #fff;
background-image: none;
background-repeat: no-repeat;
background-position: center; 
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;

#banner-divider-welcome
background-image: url(/images/welcome.jpg); 

#banner-divider-second
background-image: url(/images/second.jpg); 

【讨论】:

它不起作用,图像没有对齐div的中心,而是左上角 不用提background-position: center center; 就行了background-position: center; 尝试删除background-position: center; 现在这很有趣,它是一个非常小的错误..专注于你的 css 在线 background-repeat: no-repeat 问题是 ; 不存在添加 ; 它很好 呸呸呸呸!如此愚蠢的错误!真的很抱歉在此浪费您的时间,但很高兴您的努力!谢谢!

以上是关于预定义 CSS 背景图片中心位置和覆盖背景大小的主要内容,如果未能解决你的问题,请参考以下文章

css文件 如何使背景图片大小适应div的大小

css背景图片固定并覆盖内容~

css背景颜色会覆盖左边框颜色吗

css中的背景图怎么改变大小

css中的背景图怎么改变大小

css文件 如何使背景图片大小适应div的大小