0

0

你不知道的CSS背景—css背景属性全解

php中文网

php中文网

发布时间:2016-08-27 08:53:55

|

2066人浏览过

|

来源于php中文网

原创

 

 

CSS背景在网页设计中使用频率非常高,然而对于这个开发人员很熟悉的CSS属性,却隐藏着许多不为初级开发人员熟知的细节,这篇文章尝试扒开这层不为人知的面纱。

 

首先列举一下CSS中关于元素背景的所有属性并简要描述了其作用,其中后面几个属性是在CSS3中新加入的。

立即学习前端免费学习笔记(深入)”;

属性 描述 备注
background 简写属性,作用是将背景属性设置在一个声明中。  
background-color 设置元素背景颜色  
background-image 把图像设置为背景  
background-repeat 设置背景图像是否及如何重复。 仅作用与背景图片,不会影响背景颜色
background-position 设置背景图像的起始位置。 仅作用与背景图片,不会影响背景颜色
background-attachment 背景图像是否固定或者随着页面的其余部分滚动。 仅作用与背景图片,不会影响背景颜色
background-origin 规定背景图片的定位区域。 CSS3,仅作用与背景图片,不会影响背景颜色
background-clip 规定背景的绘制区域。 CSS3同时作用域背景图片和背景颜色
background-size 规定背景图片的尺寸。 CSS3

 

下面一一“理清”这些属性

background这个复合属性就不多说了,它可以将其他的属性值写在一起

 

1
background:[<code class="html keyword">background-color>] [,background-image] [,background-repeat] [,background-attachment] [,background-position]...

1.background-color

background-color可以使用十六进制颜色、RGB颜色、RGBA颜色、HSL色彩、HSLA颜色 、颜色关键字等表示的颜色 ,然而很多初级开发者不清楚的是backgroud-color在元素盒模型中覆盖的范围是多大。下面我们测试一下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<code class="html keyword">html lang="en">
<code class="html keyword">head>
    <code class="html keyword">meta charset="UTF-8">
    <code class="html keyword">title>Documenttitle>
    <code class="html keyword">style type="text/css">
        *{
            margin: 0px;
            padding: 0px;
        }
        div{
            width: 400px;
            height: 200px;
            margin: 20px;
            padding: 15px;
            border: 10px dotted red;
            background-color: green;       
        }
    style>
head>
<code class="html keyword">body>
    <code class="html keyword">div>
    div>   
body>
html>

为了验证背景颜色有没有铺盖到边框,这里设置了边框的样式为点线形式,在现代标准浏览器中测试(包括IE8及以上)如下左图所示,而在IE6环境中测试如下右图所示。

                         

 

所以结论是:CSS2元素颜色背景的显示范围与CSS2.1CSS3并不相同。在CSS2中(支持IE6),颜色背景的显示范围是指内部留白(包括padding)之内的范围,不包括边框;在CSS2.1CSS3中(包括IE8以上测试),背景在整个盒模型中,它是布满整个元素的盒子区域的(但是仍然不包括外边margin范围)

 

2.background-image:none ||  

元素的图片背景是元素的总大小,包括paddingborder(但不包括margin)。默认情况下,background-image放置在元素的左上角,并重复垂直和水平方向(后面会讲到background-position默认值为0% 0%,background-repeat默认是repeat),background-color的默认覆盖范围是相同的,在现代标准浏览器中铺满padding和border,在IE6中却不包括边框。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style type="</code"><code class="css string">"text/css"</style>>
        *{
            margin: 0px;
            padding: 0px;
        }
        div{
            width: 400px;
            height: 200px;
            margin: 20px;
            padding: 15px;
            border: 10px dotted red;
            background-color: green;
            background-image: url(images.jpg);
             
      }
 

左图为现代标准浏览器,在IE浏览器中测试,可以将其渲染模式设置为IE6.

         

 

 

v0.dev
v0.dev

Vercel推出的AI生成式UI工具,通过文本描述生成UI组件代码

下载

 

3.background-repeat:repeat(默认)||repeat-x||repeat-y||no-repeat 

background-repeat属性非常好理解,可以决定图片背景是否在水平或者垂直方向重复,其默认值是repeat,即在两个方向都重复。然而,很多初级开发者不知道的是,当设置background-repeat为no-repeat时,在现代标准浏览器中图片背景的覆盖范围会发生变化,下面测试一下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<style type="</code"><code class="css string">"text/css"</style>>
*{
    margin: 0px;
    padding: 0px;
}
div{
    width: 400px;
    height: 200px;
    margin: 20px;
    padding: 15px;
    border: 10px dotted red;
    background-color: green;
    background-image: url(test.jpg);
    background-repeat: no-repeat;
     
}
 

这里换上了一个比div要大的图片,左图为现代标准浏览器的测试结果,右图为IE6中测试结果。

 

          

 

可以很明显的发现,左图中,上边框和左边框没有被图片背景覆盖,露出了绿色的背景颜色。而在IE6环境中表现并没有发生变化。

 

4.backgroud-positon:%x %y|| xpos ypos||关键字 

设定背景位置时可以使用三种值:关键字、百分比、绝对或相对单位的数值关键字为leftright、与topbottomcenter的组合 ,可以使用两个值 分别设定水平和垂直位置。 关键字指的顺序不重要, left bottom  bottom left 意思相同。为了设定的值在所有浏览器中都有效,最好不要混用关键字值与数字值。 使用数值(比如 40% 30%)时,第一个值表示水平位置,第二个值表示垂直位置。要是只设定 一个值,则将其用来设定水平位置,而垂直位置会被设为 center。 

需要注意的是:在使用关键字和百分比值的情况下,设定的值同时应用于元素和图片。换句话说,如果设定了33% 33%,则图片水平 33%的位置与元素水平 33%的位置对齐。垂直方面也一样。可以通过 center center 把图片的中心点定位在了元素的中心点。像素之类的绝对单位数值就不一样了。要是用像素单位来设定位置,那么图片的左上角会被放在距离元素左上角指定位置的地方。 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style type="</code"><code class="css string">"text/css"</style>>
        *{
            margin: 0px;
            padding: 0px;
        }
        div{
            width: 400px;
            height: 200px;
            margin: 20px;
            padding: 15px;
            border: 10px dotted red;
            background-color: green;
            background-image: url(images.jpg);
            background-position: 50% 50%;      
        }
 
    

左图为现代标准浏览器,右图为IE6,可以看到图片被定位到正中间,并在水平和垂直方向重复,这也说明了使用百分比设置定位时是同时作用在元素和背景图片上的,如若不然,图片应该位于黄色方框所在的位置。

                            

 

 

 接下来我们刨根问底,background-position的默认定位起始点是哪里?是边框?还是内留白padding?

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style type="</code"><code class="css string">"text/css"</style>>
        *{
            margin: 0px;
            padding: 0px;
        }
        div{
            width: 400px;
            height: 200px;
            margin: 20px;
            padding: 15px;
            border: 10px dotted red;
            background-color: green;
            background-image: url(images.jpg);
            background-position: 10px 10px;
            /*background-repeat: no-repeat;*/              
        }
    

                                  

 

 

从图中我们找到沿水平和垂直方向重复前的原始图片,如图中黄色方框所示,在css中我们设置的background-position:10px 10px;整个数值正好是边框的宽度,如果定位起点是边框外边缘,则图片的左上角应该位于边框左上角外边缘,而实际显示却不是,图片起点是相对于边框内边缘或者说内留白padding的外边缘定位的,然后水平和垂直重复铺满包括边框的区域。

如果加上background-repeat: no-repeat效果更容易看出来,下图是现代标准浏览器的测试结果,

                   

 

 

有意思的是,还可以使用负值。这样就可以把图片的左上角定位到元素外部,从而在元素中只 能看到部分图片。当然,给background-position设定足够大的正值,也可以把图片的右下角推到元素外部,从 

而在元素中也只能看到部分图片,甚至把让个背景图片元素外部,位于元素外部的那部分图片不会显示这也没什么实际意义了。既然background-position可以设置负值,我们考虑第3节出现的问题:当设置background-repeatno-repeat时,上边框和左边框没有被图片背景覆盖。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style type="</code"><code class="css string">"text/css"</style>>
        *{
            margin: 0px;
            padding: 0px;
        }
        div{
            width: 400px;
            height: 200px;
            margin: 20px;
            padding: 15px;
            border: 10px dotted red;
            background-color: green;
            background-image: url(test.jpg);
            background-position: -10px -10px;  
            background-repeat: no-repeat;              
        }

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号