使用 CSS 套用背景图片到元素中可能是您前端设计过程中最常用到的功能。

background 有非常丰富的属性,让我们可以针对不同的需求做设定。

同时一个元素可以具有多张背景图片。如果您想要套用多张图片您可以直接在 background-image 属性值设定,不同图片路径之间只要用 , 分开即可。background-position 属性则是用来指定背景图片的位置,而这个属性非常值得深入研究,不同的设定会造成不同的结果,有些效果对您来说可能是没看过的。

为了确保本文的程序和概念清楚单纯,我们将只用一张图片的范例来验证了解每个属性,不过这些概念同样适用于多张图片的情况下。

一个背景图片被放在一个我们称之为 background position area 的地方,这个背景座标区域功能就如同其名称一样,其中有一个座标系统让我们可以处理背景图的定位。

在我们进一步开始探讨放置图片的概念之前,让我们先快速的在看过一次 CSS box model 以及看看它如何影响元素中背景图片的位置。

根据定义在 CSS 中一个元素通常有 3 个区块,这几个区块我们统称区块模型,如果您常阅读英文的文档那么这边就是 box ,这几个区块分别是 border 区块, padding 区块, content 区块。首先是 border 区块 这个区块在元素的最外层包含整个内容加上边框即 border 本身。

padding 区块 则是扣除掉 border 后元素内容和内容外围的空间,没错就是您透过 padding 属性设定的间隙。

最后 content 区块 就是把元素扣掉 border 和 padding ,实际内容部分。

图示元素的区块模型,图片来源:参考 Codrops CSS

如果您已经知道如何使用 CSS 排版的模式规则那您可能会问那 margin 呢?margin 在元素的最外围,包含整个元素,它被用来设定各个元素之间的距离,定义上它不被算在元素内部。

好!当我们给元素设定了 background - 可以是图片或颜色。背景默认会从 padding 区块 开始画,这个行为是可以被改变的,透过使用 background-origin 这个属性就是用来设定背景从哪边开始,默认是 padding-box。

为了准确的把背景图片放到指定的区块中,这个区块需要一个座标系统,用来计算座标。接着让我们更深入的看看座标系统。1background-origin: padding-box|border-box|content-box|initial|inherit;

元素的座标系统

默认情况下,CSS 区块模型的特性是每一个元素都会透过自己的 height 和 width 来建立座标系统。这个座标系统被用来设定元素和其他元素之间的位置关系,同时影响内部子元素与自己的位置关系。

所以在 CSS 中一个 HTML 元素有一个座标系统,但如果是 svg 元素则没有。这是因为 svg 本身并没有区块模型的概念。

在 CSS 里通常一个元素的起始点会在元素的最左上角,而背景座标区域也同样属于区块模型概念,并且使用这种观念来摆放图片,就是从图片的左上角的点开始。

OK! 因为默认的座标区块是 padding 区块,因此我们的背景就会从 padding 区块的最左上角开始。

意味着当您套用一张背景图,浏览器会先从 padding 最左上角的点开始把图放进去,然后重复摆放该图。

例如:您套用了一张背景到元素中且设定了no-repeat,这样图片就只会显示一次,如果您没设定就会一直重复。

后面我们会继续讨论如何使用 background-position 属性来调整默认最左上角这个行为。

不过在讨论 background-position 之前我们先来验证 background-origin

使用 background-origin 调整背景摆放的区域与座标系统

background-origin 属性主要是用来改变座标系统的原点借此调整背景排版的位置,我们有三种值可以用 padding-box, content-box, border-box 直接来看看范例,要小心的是 border-box 其实是有变的不过呢如果您的 border 有设定颜色,那么会把图片盖掉,您可以试着把 border 的 color 弄成半透明验证。

接着我们就可以使用 background-position 指定背景的位置,我们剩下所有的范例都会采用 padding-box 的设定。

使用 background-position 来设定图片位置

我们已经看过上一节示范默认的图片位置的起始点和排版的区域是如何运行的。也恩赐默认的 position 的值是 0% 0%。

默认的位置值是采用百分比当作单位。您可以直接设定不同的百分比或者根据 position area 范围和距离来设定长度

上面图表示的是设定和边缘的距离,除了设定百分比和绝对长度之外还有 top, right, left, bottom, 和 center 五个关键字能用。就是区分成关键字和长度(px)和百分比这三大类。

一个位置的设定方式可以是一个偏移量值(关键字,百分比,长度), 两个偏移量(可以是上面三种值混搭,不过要注意关键字的部分前面是横向 x 轴的所以是 [left | center | right]),这边要提醒您的是说 background-position: top 25%; 是不正确的,要 background-position: right 25%;,以及四个偏移量,四个偏移量的话就是关键字搭配长度。

如果两个值的部分都是关键字那顺序可以不照语法指定,意思是您可以先放垂直 y 轴的属性再放 x i.e background: bottom left;

下面是语法和一些范例1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16// 语法

background-position: 30% 15%, 40% 80%, 10px 10px

background-position: length length

background-position: percentage percentage

background-position: percentage

background-position: bottom length right length

background-position: left top

// 范例

background-position: top left;

background-position: 50px 30%;

background-position: right: 10px bottom 100px;

background-position: center center

background-position: 10px 20px;

background-position: 5em 2em;

background-position: 75% 50%;

如果您提供一个值的时候那么第二个值(偏移量)1

2

3background-position: 10% 50%;

background-position: top; /* 等于 `top center` */

background-position: 50px; /* 等于 `50px center` */

设定上您可以混合任何合法的参数值,例如混搭百分比和长度或者关键字,不过要注意的是关键字的部分,除非全部都用关键字否则顺序很重要,注意第一个参数对应水平的偏移量,第二个对应垂直的。

实际上关键字是百分比的缩写,例如 top 等于 0%,bottom 等于 100% 以此类推。

好!接着让我们开始看看每一种可能的值是如何运行的,这应该是这篇最重要部分,不同的参数类型会产生不同的效果。

绝对位置/长度如何运行

当我们指定一个绝对位置的属性单位(通常是 px)时,您执行的事让背景图片根据左上角原点来偏移,换句话说图片就是根据左上角原点搭配您设定的值来偏移。

看下面的图片比较容易理解

当然绝对位置的值可以是负数,负数的话就会往反方向移动

百分比是如何运行

不同于绝对位置根据原点偏移的概念,百分比会对齐图片的 X% 的点和容器 X% 的位置。

举例来说 0% 0% 会对其图片的 0% 0% 位置和元素背景区域的 0% 0% 位置。 一样我们透过下面图片来理解

而百分比一样也可以设定负值。

搭配使用关键字指定边缘

在上面的范例我们都是从左边和上面来计算偏移,这是默认的行为。

不过我们可以结合关键字来指定边缘

例如:1background-position: top 1em right 3em;

注意关键字要在前面,另外如果指给定三个值 background-position: top 25px right ; 最后一个会变成 0 而设定了无效的值那么就会使用默认值 0% 0% 例如 background-position: top 25%

尺寸,重复,裁切等等

记住,您可以使用多张图片,如果要对多张图片设定位置只要使用逗号分隔每一组设定即可。其他如果要控制大小则用 background-size,总而言之有 9 个关于如何控制背景图的属性可以使用,一旦您能掌握 position 和 origin 剩下的观念就相对单纯许多。

前端背景图放置_CSS 背景图片排版相关推荐

  1. css 设置背景图一半_CSS背景图设置

    一.背景图设置 使用背景图片,设置为全屏 方式1:全部使用background设置 body{ background-image: url(bg.jpg); background-size: 100% ...

  2. web——CSS精灵图(背景图、定位背景图片background-position属性)

    web--CSS精灵图(背景图.定位背景图片background-position 属性) 一.background-position属性 二.实例 一.background-position属性 例 ...

  3. notepad设置背景颜色_Word2017中如何设置透明背景图和取消背景图

    如何在Word2017中设置透明背景图 1.打开Word文档 2.选择"插入"-"形状",选择并绘制你所需要的背景图形状 3.选中所绘的形状,点击右键,选择&q ...

  4. Mac 修改开机登陆界面背景图, 替换沙漠背景图

    Mac 修改开机登陆界面背景图, 替换沙漠背景图 本机版本 : macos mojave 10.14.6 之前网上查了一下都说需要替换原本的沙漠图片,我试了一下,根本不需要,下面进入正题. 1.系统偏 ...

  5. 给盒子添加默认背景图和选中背景图

    给盒子添加默认背景图和选中背景图 用于每张默认图片和每张选中图片均不一致的情况 <template><divclass="weather":class=" ...

  6. css背景图background - 多背景定义

    css背景图background - 多背景定义 1. 方法一 .bg{height:600px;background: url(../../static/images/slider/zplc.png ...

  7. 前端背景图放置_web前端入门到实战:css 中的背景图片小技巧和存在的坑

    body 的背景图设置 第一种 :这种情况下背景图片可以缩放 但是不能完全等比缩放 background: url(imgs/1.jpg)no-repeat; background-position: ...

  8. 前端背景图放置_前端开发关于网页背景图片的缩放自适应及组合形成背景图的问题...

    前端游戏开发贴吧 游戏前端开发 游戏开发流程 策划美术前端后端 昨天在切图时遇到如下两个问题: 1.需要背景图片无论浏览器大小如何缩放,背景图片始终宽度百分百显示. 2.需要将给出的一张背景图片和一张 ...

  9. php背景图添加字,怎样给视频后面加背景图 视频加背景图片并添加一行广告文字...

    有不少广告小视频中,视频画面是一张海报背景图片,图片上显示一个小视频播放,并且在画面上还有显示一行广告字幕.这样的宣传视频制作其实蛮简单的,怎样给视频后面加背景图片的方法倒是挺多,要给视频加背景图片的 ...

最新文章

  1. linux下的 ifconfig 和 ip 命令
  2. C# 读取CSV和EXCEL文件示例
  3. 京东AI研究院何晓冬:将先进的技术和模型落地到产业
  4. 把一个人的特点写具体作文_部编版五年级下册语文 第五单元:习作 | 把一个人的特点写具体 电子课本+教案课件...
  5. jsf标签_多个动态包含一个JSF标签
  6. educoder 使用线程锁(lock)实现线程同步_Java8并发包源码分析:重入锁ReentrantLock和Condition实现原理...
  7. icmp协议用在什么服务器上,ICMP协议是什么?ICMP协议的作用是什么?
  8. 万达商管再次递表港交所:上半年净利润40亿元,外部股东阵容强大
  9. 对120年的奥运数据进行了可视化分析
  10. 【VUE2开发20221004】-day1.1
  11. 高可用pxc+rocketmq+es+redis+minio+keepalive+haproxy 实操
  12. 广东第一高中生_广东高中排行榜TOP10,有你的母校吗?
  13. axure 设置背景虚化_Axure如何做背景虚化?
  14. 使用 SAP UI5 Smart Chart 控件轻松绘制十数种不同类型的专业图表试读版
  15. android 图片手动放大,Android图片的手动放大缩小
  16. manjaro下常用软件一览
  17. 容器里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程
  18. python correlate_如何解释numpy.correlate和numpy.corrcoef值?
  19. 思科Webex定义协作的未来
  20. 快速排序--挖坑法详解

热门文章

  1. 利用JavaScript实现发表、修改、删除评论
  2. C语言冒泡排序(从大到小排序核心代码)
  3. 用html做完整网页效果
  4. Linux内核中识别USB设备过程
  5. python新浪股票接口_python 爬虫sina股票数据
  6. html自定义video播放器
  7. 软件设计师(计算机系统)
  8. 设计原则(3)-里氏代换原则
  9. 爱丁堡 ANLP-Lecture 1(NLP Structure Morphology, Ambiguity, Part of Speech)
  10. 【操作系统 - 1】先来先服务FCFS和短作业优先SJF进程调度算法