background(背景)

以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin)、元素边框(border)、元素内边距(padding)和元素内容(content) 4部分组成,不过这只是从2D的视角来看盒模型的组成,而今天笔者将阐述如何从3D的视角看待盒模型的组成。

从2D视角看盒模型示意图:

从3D视角看盒模型示意图:



从3D视角看盒模型可以发现多了两个属性:background-image和background-color,而这两个属性都可以归纳到元素的background中,同时在元素的background中还有6个属性[1]可以影响到background-image和background-color的绘制情况,这篇博文主要是用来介绍background-image和background-color还有其余6个属性以及它们是怎样影响到浏览器对元素盒子background的绘制的。

background-color(背景颜色)

背景颜色是背景中最常用的属性,它支持的值类型有:

类型 示例
颜色名称 red, white, black, transparent
16进制颜色码 #FF0000, #FFF, #000, #00000000
rgb颜色值 rgb(255, 0, 0), rgb(255, 255, 255), rgb(0, 0, 0)
rgba颜色值 rgba(0, 0, 0, 0)
hsla颜色值 hsla(0,0%,0%,0)

关于rgba颜色值和hsla颜色值,笔者在有趣的css—隐藏元素的7种思路中写过详细的使用示例,感兴趣的读者可以看看。

background-color(背景颜色)示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>background-color(背景颜色)示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 420px;
height: 320px;
background-color: #06b7e1;
}
</style>
</head>
<body>
<div></div>
</body>
</html>

background-color(背景颜色)示例效果图:

background-image(背景图片)

背景图片的书写示例:

background-image: url(path);

path代表存放图片的路径,它可以是绝对路径,也可以是相对路径。

背景图片在z轴上比背景颜色更靠近用户,背景图片在完全不透明的情况下,会完全遮盖住背景颜色。

background-image(背景图片)示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title> background-image(背景图片)示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 420px;
height: 320px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
}
</style>
</head>
<body>
<div></div>
</body>
</html>

background-image(背景图片)示例效果图:

background-size(背景图片尺寸大小)

背景图片尺寸大小支持的值类型有:

类型 示例 含义
百分比 20% 30% 背景图片占据背景区宽度的百分之20,高度的百分之30
像素 200px 300px 背景图片的宽度为200像素,高度为300像素
覆盖 cover 保持图片宽高比进行拉伸,使其完全占据背景区
包含 contain 保持图片宽高比进行缩放,使其恰好适合背景区

background-size(背景图片尺寸大小)示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>background-size(背景图片尺寸大小)示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 420px;
height: 320px;
margin: 24px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
}
#percentage {
background-size: 20% 30%;
}
#pixel {
background-size: 200px 300px;
}
#cover {
background-size: cover;
}
#contain {
background-size: contain;
}
</style>
</head>
<body>
<div id="percentage"></div>
<div id="pixel"></div>
<div id="cover"></div>
<div id="contain"></div>
</body>
</html>

background-size(背景图片尺寸大小)示例效果图:

background-repeat(背景图片重复方式)

背景图片重复方式支持的值以及含义:

含义
no-repeat 背景图片不重复
repeat 默认值,背景图片在垂直和水平方向都重复
repeat-x 背景图片在水平方向重复
repeat-y 背景图片在垂直方向重复

background-repeat(背景图片重复方式)示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>background-repeat(背景图片重复方式)示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 420px;
height: 320px;
margin: 24px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
background-size: 42px 32px;
}
</style>
</head>
<body>
<div style="background-repeat: no-repeat;"></div>
<div style="background-repeat: repeat;"></div>
<div style="background-repeat: repeat-x;"></div>
<div style="background-repeat: repeat-y;"></div>
</body>
</html>

background-repeat(背景图片重复方式)示例效果图:

background-position(背景图片位置)

background-position总共有5个属性,分别是top、right、bottom、left、center,这个5个属性可以单独使用,也可以两两使用。

单独使用时,默认第二个参数为center,两两使用时背景图片占据位置如下图:



background-position(背景图片位置)示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>background-position(背景图片位置)示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 420px;
height: 320px;
margin: 24px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
background-size: 140px 140px;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div style="background-position: top;"></div>
<div style="background-position: right;"></div>
<div style="background-position: bottom center;"></div>
<div style="background-position: left center;"></div>
</body>
</html>

background-position(背景图片位置)示例效果图:

background-attachment(背景图片是否固定)

背景图片是否固定支持的值以及含义:

含义
scroll 默认值,背景图片不固定,在视窗内滚动元素时,背景图片跟随元素一起滚动
fixed 背景图片固定,在视窗内滚动元素时,背景图片不跟随元素一起滚动

背景图片不固定示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>背景图片不固定示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 100%;
height: 2000px;
margin: 24px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
background-size: 140px 140px;
background-repeat: repeat;
background-attachment: scroll;
} p {
font-size: 64px;
font-weight: bold;
color: white;
}
</style>
</head>
<body>
<div>
<p>1 Fatman</p>
<p>2 Fatman</p>
<p>3 Fatman</p>
<p>4 Fatman</p>
<p>5 Fatman</p>
<p>6 Fatman</p>
<p>7 Fatman</p>
<p>8 Fatman</p>
</div>
</body>
</html>

背景图片不固定示例效果图:

背景图片固定示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>背景图片固定示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 100%;
height: 2000px;
margin: 24px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
background-size: 140px 140px;
background-repeat: repeat;
background-attachment: fixed;
} p {
font-size: 64px;
font-weight: bold;
color: white;
}
</style>
</head>
<body>
<div>
<p>1 Fatman</p>
<p>2 Fatman</p>
<p>3 Fatman</p>
<p>4 Fatman</p>
<p>5 Fatman</p>
<p>6 Fatman</p>
<p>7 Fatman</p>
<p>8 Fatman</p>
</div>
</body>
</html>

背景图片固定示例效果图:

background-clip(背景裁剪)

含义
border-box 背景(图片+颜色)占据盒模型的 border+padding+content 3个区域
padding-box 背景(图片+颜色)占据盒模型的 padding+content 2个区域
content-box 背景(图片+颜色)占据盒模型的 content 1个区域

注:设置background-clip:border-box时需要让元素边框完全透明或部分透明,否则边框样式会完全遮盖住background-clip:border-box的效果。

background-clip(背景裁剪)示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>background-clip(背景裁剪)示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 420px;
height: 320px;
margin: 24px;
border: 32px dotted black;
padding: 32px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
background-size: contain;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div style="background-clip: border-box;"></div>
<div style="background-clip: padding-box;"></div>
<div style="background-clip: content-box;"></div>
</body>
</html>

background-clip(背景裁剪)示例效果图:

background-origin(背景图片定位参考系)

笔者在css详解position五种属性用法及其含义中提到过相对定位参考系是其在常规流中的位置,绝对定位的参考系是离其最近的定位祖先元素,固定定位的参考系是视窗。

background-position的定位参考系就与background-origin有关:

含义
border-box 背景图片相对于元素border区域进行定位
padding-box 背景图片相对于元素padding区域进行定位
content-box 背景图片相对于元素content区域进行定位

注:background-clip控制背景(图片+颜色)裁剪的区域,是将背景(图片+颜色)根据设置的属性值裁剪掉;而background-origin控制背景(图片)定位时使用的参考系,它在不同属性值切换下影响的表现效果是背景图片随着属性值改动带来的背景(图片)扩大或缩放。

background-origin(背景图片定位参考系)示例html代码:

<!DOCTYPE html>
<html>
<head>
<meta title="charset" content="utf-8">
<title>background-origin(背景图片定位参考系)示例</title>
<style type="text/css">
body {
margin: 24px;
padding: 24px;
border: 1px solid black;
}
div {
width: 420px;
height: 320px;
margin: 24px;
border: 32px dotted black;
padding: 32px;
background-color: #06b7e1;
background-image: url(https://img-blog.csdnimg.cn/20210414230229207.png);
background-size: contain;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div style="background-origin: border-box;"></div>
<div style="background-origin: padding-box;"></div>
<div style="background-origin: content-box;"></div>
</body>
</html>

background-origin(背景图片定位参考系)示例效果图:

尾言

笔者才疏学浅,慌忙之下难免有遗漏或是疏忽,如有错误之处,还望各位看官不吝赐教,笔者在此感谢。

参考


  1. 不单单只有这6个,只是这6个比较常用。

css详解background八大属性及其含义的更多相关文章

  1. CSS详解

    Web前端开发css基础样式总结 颜色和单位的使用 颜色 用颜色的名字表示颜色,比如:red 用16进制表示演示 比如:#FF0000 用rgb数值表示颜色,rgb(红,绿,蓝),每个值都在0-255 ...

  2. jquery的css详解(二)

    jq的工具方法style用于设置样式,jq的实例方法css在设置样式时就是调用的它,接下来分析一下源码. jQuery.extend({ ............................ st ...

  3. DIV+CSS详解

    DIV+CSS详解 ✪DIV+CSS"这种叫法其实是一种不准确的叫法 在做笔记的最前面必须先给大家纠正一个错误,就是"DIV+CSS"这种叫法其实是一种不准确的叫法,是国 ...

  4. 详解android:scaleType属性

    详解android:scaleType属性 转自:http://blog.csdn.net/encienqi/article/details/7913262    http://juliaailse. ...

  5. css详解3

    推荐学习链接:css盒模型 1.盒模型的常用属性 1.1.pading <html lang="en"> <head> <meta charset=& ...

  6. jquery的css详解(一)

    通过阅读源码可以发现css是jq的实例方法.而在内部调用jq的工具方法access来实现的,对该方法不了解的朋友请点击 -> jquery工具方法access详解 在access的回调中做了一个 ...

  7. [一]class 文件浅析 .class文件格式详解 字段方法属性常量池字段 class文件属性表 数据类型 数据结构

    前言概述  本文旨在讲解class文件的整体结构信息,阅读本文后应该可以完整的了解class文件的格式以及各个部分的逻辑组成含义   class文件包含了java虚拟机指令集 和  符号表   以及若 ...

  8. [C#详解] (1) 自动属性、初始化器、扩展方法

    文章来源:Slark.NET-博客园 http://www.cnblogs.com/slark/p/CSharp-focus-1.html 代码下载:点我下载 目录 前言 属性与自动属性 属性 自动属 ...

  9. 02_HTML5+CSS详解第三天

    WebStorage简单的网页留言板用到的函数有3个1.saveStorage函数使用"new Date().getTime()"语句来获取当前的日期和时间戳,然后使用localS ...

随机推荐

  1. ⑧SpringCloud 实战:引入 Actuator监控+整合监控页面

    Actuator是什么? Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用.这个模块是 ...

  2. Redis-第九章节-动态字符串

    目录 概述 SDS(动态字符串) SDS(动态字符串)与c语言字符串的区别 1.概述 String类型底层实现的简单动态字符串sds,是可以修改的字符串.它采用预分配冗余空间的方式来减少内存的频繁分配 ...

  3. 死磕Spring之IoC篇 - 调试环境的搭建

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  4. SpringBoot以war包形式部署到外部Tomcat

    SpringBoot 项目打包时能打成 .jar 与 .war包文件,.jar使用 java -jar xx.jar 就可以启动,而 .war 可以部署到tomcat的 webapps 中,随tomc ...

  5. 一文讲通.NET Core部署到Windows IIS最全解决方案

    回顾之前的ASP.NET的经典托管 在经典ASP.NET应用程序中,所有一切都托管在IIS工作进程中(w3wp.exe),这也被称为IIS应用程序池.ASP.NET程序被托管在应用程序池中,并且被按照 ...

  6. 《C++ Primer》笔记 第10章 泛型算法

    迭代器令算法不依赖于容器,但算法依赖于元素类型的操作. 算法永远不会执行容器的操作.算法永远不会改变底层容器的大小. accumulate定义在头文件numeric中,接受三个参数,前两个指出需要求和 ...

  7. HDR(高动态范围)

    一: 简介 一般来说,当存储在帧缓冲(Framebuffer)中时,亮度和颜色的值是默认被限制在0.0到1.0之间的. 但是如果我们遇上了一个特定的区域,其中有多个亮光源使这些数值总和超过了1.0,又 ...

  8. sql之对top语句理解

    起因 事情的起因是在群里和大佬讨论问题,讨论select top x后加*的问题,这时突发奇想,想搞清楚这个看起来在sql中略显突兀的语句结构,就有了这篇文 先看例子 select * from 表 ...

  9. 【海思】Hi3516A 运行sample_venc的demo内核奔溃(DDR问题)

    作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14514297.html 目录 一.前言 二.使用memtester对ddr进行压力测试 三.修改uboot的DD ...

  10. springboot2.0全局异常处理,文件上传过大会导致,方法被执行两次,并且连接被重置

    最后发现是内嵌tomcat也有文件大小限制,默认为2MB,我上传的是4MB,然后就炸了.在application.properties中添加server.tomcat.max-swallow-size ...