CSS之background-position属性

2023-11-13

1.作用:background-position是用来控制元素背景图片的位置。以图片的左上角顶点为原点,属性值为正就代表图片下移或右移,属性值为负就代表图片上移或左移。它接受三种值

- 关键词,比如top、right、bottom、left和center

- 长度值,比如px、em、rem等

- 百分值%

这里写图片描述

在前面我们看到背景图片默认的被放置在放置区的左上角。这是由于background-position的默认的值是0%,0%

这里写图片描述

位置属性可以通过指定一个偏移量(关键词、百分比或长度)、两个偏移量(三种可能值取两个组合)、或者四个偏移量(一个关键词加一个相对数值)来描述

这里写图片描述

如果只提供了一个值,那么另一个方向即被假定为 center。如果提供了两个值,第一个会决定距离左边缘的偏移,即水平位置;第二个值会决定图片从上边缘向下的偏移,即竖直的位置

注意1:注意一对关键字可以交换顺序,一个关键字和百分比或长度的组合不能。因此center left是合法的,50% left则不正确,必须是left 50%。当使用一个关键字和一个长度或百分比的组合时,第一个值总是对应水平偏移,第二个对应竖直偏移

注意2:事实上,关键字是特定百分比值的简写,比如:top相当于 距离上边缘偏移0%,bottom相当于距离上边缘偏移100%,left相当于距离左边缘偏移0%,right相当于距离左边缘偏移100%,center相当于距离任意它被应用的方向偏移50%(水平或竖直)

2.使用绝对值的效果

当你用绝对值指定位置时,就是使背景图片偏离左上角一个特定的量。换句话说,图片会移动离开放置区左上角达到你在background-position中指定的偏移量

最好的解释和理解的方式是看图,这里有两个绝对值background-position的例子,看看浏览器是怎样解释位置和放置背景图片的。两个示例中元素大小100px乘80px

这里写图片描述

绝对值也可以是负数,这种情况下图片就会离开边缘反方向上偏移

这里写图片描述

3.使用百分比的效果

不像使用绝对值的偏移量会从元素左上角移动一个特定的距离,百分比X%偏移会把图片水平宽度X%(或竖直高度X%)的点与容器横向X%的点(或竖直高度X%) 对齐

例如,绝对值位置0% 0%,会让图片0% 0%的点与背景放置区坐标系0% 0%的点对齐。绝对值位置50% 70%会把图片横向50%竖直70%的点与背景放置区横向50%竖直70%的点对齐

这里写图片描述

和使用绝度值一样,百分比也可以有负数,负数移动图片到坐标轴相反的方向上

4.相对任意边缘的偏移

上两节的例子中我们设定、体验了图片相对上边缘和左边缘的偏移的效果 (这对于有一个或两个值的 background-position来说是默认的)

当使用组合关键词和数值成四个值的语法时,你就也能够指定背景图片相对于右边缘和底部边缘的偏移了。为了这样做,你只需要指出你要用的边缘的名字,后面跟上你想要的偏移量就可以了

这里写图片描述

在使用四个值位置的语法时,一定要记得:当给出三个或四个值的时候,每个百分比或绝对长度都必须跟在一个关键词后面,用来指定从哪个边缘上偏移。例如:background-position: bottom 10px right 20px代表 竖直从下边缘偏移10px,水平从右边缘偏移20px。如果三个值已经指定好了,没给出的被假定为0。如果你给出了两个数值偏移量或一个关键词,那么值是无效的,浏览器会使用默认值0% 0%

实例:

这里写图片描述

这里写图片描述

第一张背景图background-position:10px 10px;第二张背景图background-position: center

5.你所不知道的background-position

前面也说过了,background-position取值除了长度值(<length>)和关键词之外,还可以取值为百分比值。当然大家也使用过百分比值,比如:

这里写图片描述

那么问题来了,你真的了解background-position取值为百分比的计算比例吗?如果我的百分比值不是和关键词对等的值呢?那么它是怎么计算的?这一系列的问题,你是否有仔细的思考过。就我个人而言,我以前所理解也存在一个误区

我一直错误的理解为background-position百分比值,它是相对于背景图片的尺寸

实际上,当背景图片尺寸(background-size)不做任何的重置(也就是100% 100%)时,水平百分比的值等于容器宽度百分比值减去背景图片宽度百分比值。垂直百分比的值等于容器高度百分比值减去背景图片高度百分比值

比如前面的示例,如果取值background-position: 75% 50%;,背景图片的起始位置

- 水平位置(x轴):(410 - 100) * 75% = 232.5px

- 垂直位置(y轴):(210 - 100) * 50% = 55px

这里写图片描述

这里写图片描述

总结:background-origin用来定义background-position的原点位置;而background-position用来设置图片相对原点的位置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS之background-position属性 的相关文章

  • 如何在CSS网格系统中偏移div列

    有谁知道抵消前两个div位于侧行且具有类的 scol 3 12偏移量为offset 6 12 and offset 9 12位于我的网格系统的右侧jsFiddle http jsfiddle net c6R6t CSS body font
  • 如何将背景颜色(或自定义 css 类)应用于网格中的列 - ExtJs 4?

    看起来应该很简单 但我根本无法完成此任务 我什至不需要动态完成它 例如 假设我有一个简单的 2 列网格设置 如下所示 columns header USER dataIndex firstName width 70 cls red head
  • Sass 部分导入

    我有 sass 编译的问题 当我有一个部分的项目时 partial scss并将其导入到多个部分文件中 因为它包含颜色变量 它将多次出现在编译的 css 中 这很丑陋 因为同一个规则会多次 推翻 自身 这使得调试信息 chromium 开发
  • 仅部分页面滚动的 html 布局

    我想创建一个分为 3 部分的页面布局 一列具有固定宽度 其中包含两行具有固定高度 另一个具有固定宽度的列 可能包含多个项目 超出视图范围 我正在寻找一种方法 使页面滚动仅影响项目列 以便屏幕的左侧 第一列 保持在视图中 下面是布局的示例图像
  • Phonegap Cordova Statusbar 插件创建双栏

    我正在开发一个使用phonegap 的应用程序 通过 CLI 构建 而不是 PhoneGap 构建 我的 cordova plugin statusbar 插件有问题 打开时它将增加额外的条高度 这是它的样子 双高菜单栏 我通过两种方式实现
  • 将鼠标悬停在一个伪元素上时,使另一个伪元素出现吗?

    我试图生成一个屏幕 其中利用 before and after伪元素 但我想知道这样的功能是否真的可行 我有一个包装 div 它包裹在输入周围 允许pseudo element在此包装纸上 就像是 lt wrapper div lt inp
  • window.alert() 之后无法编辑输入文本字段

    我有这个 Electron 应用程序 使用 NodeJS Bootstrap AngularJS 其中包含一些可以编辑的文本输入字段 我有一个触发 window alert 的按钮 触发后 文本输入字段将不再可编辑 单击应用程序的其他元素不
  • Bootstrap 3 将文本与 Div 底部对齐

    我正在尝试在 Bootstrap 中进行如下设置 其中文本与图像底部对齐 THIS IS AN IMAGE And some text
  • 单击或悬停在菜单区域之外时关闭反应按钮下拉菜单

    在我的反应应用程序中 其中一个组件正在创建一个按钮下拉菜单 如下所示 div class dropdown div
  • 2 个单词之间有空格 CSS

    我想在 css 中的 2 个单词之间添加一个空格 例如 1 RUNNING DAYS email protected cdn cgi l email protection 在 HTML 中有 nbsp nbsp但使用不正确 nbsp我认为
  • Sass 与 BEM,继承选择器

    我正在使用 Sass 3 4 1 和 BEM 所以我的 scss 是 photo of the day title font size 16px 我希望每次将鼠标悬停在 photo of the day标题发生了一些事情 这很常见 所以通常
  • 更改 mat-form-field 中的边框颜色

    我正在使用有角度的材料mat form field 我有深色背景 因此尝试将表单字段的边框更改为白色 但我无法使用 css 来实现它 不 无论我在 css 中进行什么更改 它们都不会反映到mat form field 这是我的代码的链接 S
  • 以 /* 开始初始注释的目的!在 JavaScript 和 CSS 文件中

    我注意到 JavaScript 或 CSS 文件中的初始注释有时以 感叹号的目的是什么 例如 jQuery https en wikipedia org wiki JQuery jQuery v1 7 1 jquery com jquery
  • 您可以使用 CSS 或 JavaScript 创建渐变为不透明的渐变吗?

    WebKit 引入了创建 CSS 渐变的功能 例如 使用以下代码 webkit gradient linear left top left bottom from fff to 000 但是 是否可以使用 CSS 实现不透明度渐变 我希望渐
  • Bootstrap 使用 SASS 和 fontawesome 图标分隔符修改面包屑

    所以我正在尝试更改默认值breadcrumb与 SASS 的风格 我已经按照官方 Bootstrap 4 beta 3 文档中提到的方式设置了所有内容 我更改了以下内容custom scss breadcrumb divider f105
  • 有没有带有保存和语法突出显示功能的 HTML、CSS 在线文本编辑器?

    我想让 css 文件可以从任何地方 家庭 办公室等 访问并准备好编辑 并保存 我将进行手工编码 只想语法突出显示并保存在网络设施上 我尝试了谷歌文档 这很好 因为我可以在线保存 而且它也有修订历史记录功能 这很有用 但它没有语法突出显示 也
  • 图像映射区域周围不需要的边框

    我正在使用带有圆形区域的图像贴图 问题是我在 IE7 中的区域周围出现了不需要的边框 此边框不会出现在 FF 和 Chrome 中 也不会出现在 IE8 IE9 中 我尝试向图像添加 border 0 锚点的 css 属性 即 a bord
  • 两列宽度可变且它们之间的间隙固定

    我需要动态设置两列的样式 它们各自的宽度应为 50 但它们之间的固定间隙为 10px 当我折叠菜单时 列应加宽至可用空间 并且间隙应保持 10 像素 因此 列不能采用固定宽度 我试过这个 container background red w
  • 高度在 IOS (iphone) 上无法正常工作

    我已经创建了this https codepen io salman15 project live DWbWpo Codepen 上的网站 在尝试使其响应所有平台时 我遇到了问题 看起来单个 div 覆盖了整个页面 仅在 IOS 上 并且并
  • CSS:结合纹理和颜色

    有人如何将用作背景图像的纹理和该纹理上方的背景颜色结合起来 这是纹理 我希望我的正文背景页面是这样的 我正在努力处理背景图像和背景颜色 http jsfiddle net 87K72 http jsfiddle net 87K72 body

随机推荐

  • Proability and Bayes’ NET

    Probabilistic Inference compute a desired probabilities from others known probabilities 我们通常计算条件概率 each possible state f
  • gorm基础05--CRUD 接口-更新

    gorm基础05 CRUD 接口 更新 介绍 案例 说明 介绍 上文 gorm基础04 CRUD 接口 查询 介绍了gorm 中常见查询方法 本文继续介绍gorm中常见的更新方法 具体包括 保存所有字段 更新单个列 更新多个列 更新选定字段
  • 【零基础学Rust

    文章标题 简介 一 元组 1 定义元组 2 访问元组元素 3 元组解构 4 元组在函数中的应用 二 数组 1 数组的声明和初始化 2 访问数组元素 3 数组的遍历 4 数组的长度 5 数组和函数 三 向量 1 创建向量 2 访问向量 3 修
  • IAR编译项目时报以下错误

    根本原因是因为你宏定义不符合规范
  • OpenCASCADE可视化:使用C/C++演示的3D术语表

    OpenCASCADE可视化 使用C C 演示的3D术语表 在本文中 我们将使用C C 代码和OpenCASCADE库来演示一些与3D图形相关的术语 OpenCASCADE是一个开源的CAD CAE CAM软件开发平台 它提供了丰富的几何建
  • KEIL5配置astyle

    比较清爽的参数 E style google U p n
  • lighttpd支持AJAX吗,lighttpd

    Lighttpd 是一个德国人领导的开源Web服务器软件 软件名称 lighttpd 软件版本 1 4 49 更新时间 2018 03 11软件语言 英语 简 介 Lighttpd 开源Web服务器软件 操作系统 Linux Windows
  • chrome使用指南

    目录 常用快捷键 常用插件 Octotree github源码浏览 GitCodeTree github gitee源码浏览 Axure RP Extension for Chrome 查看原型图 Tampermonkey 油猴脚本 云盘管
  • Flink CDC问题

    这里会列举出一些关键配置和遇到的问题 一直补充 Oracle CDC 1 SUPPLEMENTAL LOG在库和表上都需要执行 不是只有表上 ALTER TABLE inventory customers ADD SUPPLEMENTAL
  • 原生js触底加载案例

    data return RoomData isBool false limit 0 isLoading false methods roomClick value location href value RoomApi this limit
  • 4.网络配置与系统管理

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chuanqi 支持我 点赞 收藏 留言 愿你我共勉 若身在泥潭 心也在泥潭 则满眼望去均是泥潭 若身在泥潭 而心系鲲鹏 则能见九万里天地 文章目录 网络配置
  • mysql创建表时表明加单引号_python在MySQL表名周围插入单引号(‘)

    我有一个名为project1的数据库 其中包含以下表格 systbl1 systbl2 systbl3 dataset1 dataset2 dataset3 每当添加一个新用户时 都需要授予MySQL用户odbc对dataset 表的SEL
  • 组态王串口服务器虚拟串口,串口服务器USR-N510连接组态王设置步骤

    调试目的 USB RS232或者USB RS485串口线接USR N510串口和电脑USB口 MODBUS SLAVE软件打开COM口 模拟客户串口MODBUS RTU设备 USR N510网线和电脑直连 IP设置同网段 在电脑安装USR
  • unicode编码、字符的转换和得到汉字的区位码

    一 unicode编码 字符的转换截图 二 unicode编码 字符的转换代码 using System using System Collections Generic using System ComponentModel using
  • Visual Studio MFC编程 程序调试时所遇到的问题及解决方法

    本文中记录了笔者在基于Visual Studio MFC编程时 程序调试过程中所遇到的问题及解决方法 目录 1 Visual Studio MFC中的快捷方式 1 1 问题 Visual Studio MFC中修改好程序之后 怎样编译并建立
  • QT实现串口打开和关闭

    一 查找串口 windows 下面这个循环语句用来查找可以用的串口端口 不确定有多少串口可用 也就不知道循环多少次 所以用foreach 不知道用的就百度 foreach const QSerialPortInfo info QSerial
  • Linux常用操作命令

    Shell命令基础 root localhost root 用户名账号 计算机名 用户当前工作目录 文件与目录相关命令 1 ls命令 列出目录内容 执行ls指令可列出目录的内容 包括文件目录以及子目录 ls 参数 文件或目录 若无选定目录
  • 抽象类案例

    卡类 package Java project 1 public abstract class Card private String userName private double money public abstract void p
  • 数据库的连接串(中文)

    在数据库的各种应用程序开发中 连接数据库是数据库应用程序开发的第一步 同时也是最重要的一步 而对于不同的数据库他们的连接模式各有不同 对应的连接串也不同 Sql Server ODBC o 标准连接 Standard Security Dr
  • CSS之background-position属性

    1 作用 background position是用来控制元素背景图片的位置 以图片的左上角顶点为原点 属性值为正就代表图片下移或右移 属性值为负就代表图片上移或左移 它接受三种值 关键词 比如top right bottom left和c