CSS背景图片定位(background-position,css sprit,背景定位,background-imag

标签:

杂谈

分类: css

在CSS中,背景图片的定位方位有3种:

1)关键字:background-position: top right;

2)像素:background-position: 0px 0px;

3)百分比:background-position: 0% 0%;

上面这三句语句,都将图片定位在背景的左上角,表面上看效果是一样的,实际上第三种定位机制与前两种完全不同。

前两种定位,都是将背景图片左上角的原点,放置在规定的位置。请看下面这张图,规定的位置是“20px 10px”和"60px 50px",都是图片的原点在那个位置上,图中用X表示。

但是第三种定位,也就是百分比定位,不是这样。它的放置规则是,图片本身(x%,y%)的那个点,与背景区域的(x%,y%)的那个点重合。比如,如果放置位置是“20% 10%”,实际结果如下图,可以看到这个点是在图片本身的“20% 10%”的位置上。

下面是一个有趣的例子。

背景图片是四个边长为100px的方块叠在一起:

请问怎样才能将其横过来:

答案是,在网页中先设置四个div区域:

<div class="box1">

</div>

<div class="box2"">

</div>

<div class="box3">

</div>

<div class="box4">

</div>

然后,这样编写CSS:

.box1, .box2, .box3, .box4 {

float:left;

width:100px;

height:100px;

position:relative;

background: #F3F2E2 url(1234.png) no-repeat;

}

.box1 {

background-position:0% 0%;

}

.box2 {

background-position:0% 33.33333%;

}

.box3 {

background-position:0% 66.66666%;

}

.box4 {

background-position:0% 100%;

}

可以看到第二和第三个方块的设置,并不是一般想象中的“0% 25%”和“0% 75%”。

--------------------------------------------比较实质性的东西在这里-------------------------------------------------

我们知道在用图片作为背景的时候,css要这样写,以div容器举例子,也可以是body、td、p等的背景,道理一样。

代码:

div{ background:#FFF url(image) no-repeat fixed x y;}

这里的background的属性值依次为:

#FFF 背景色:(颜色值,背景图片没有覆盖的地方,或者没有背景图片时表现的背景色)

image 背景图片:(这里是图片的地址)

no-repeat 是否重复:(图片小于容器的大小时,默认会重复排列图片以填满容器,no-repeat表示不重复,只有这个时候后面的定位坐标才有用。)

fixed 背景是否随容器滚动:(有两个可选值,scroll滚动,fixed不滚动,默认是scroll)

x y 背景图像的定位:(注意,只有在no-repeat下定位才有意义。这个就是今天要讲的重点)

背景图像定位中我们要明确的几点:

1、两个值前面一个是横向的定位,我们称为x轴方向定位。后面一个值是纵向的定位,我们称为y轴方向定位。如果只有一个值,那默认的就是x轴方向,这时y轴方向就默认的是上下居中对齐,也就是center。

2、坐标轴的原点就是对应容器的左顶点。

3、这个坐标的y轴箭头朝下,也就是右下方(容器内部)x y的值才都为正。

4、x y值分别表示背景图片的左顶点相对于坐标原点(也就是容器的左顶点)的值。

5、x y的值可以用百分比或者px来表示。

6、x y也可以用“left、right、top、bottom、center”这五个对齐方式来表示,但注意:用“left、right、top、bottom、center”来表示的时候,应用的是对齐规则,而不是坐标规则。x为left是表示图片的左边和容器的左边对齐,为right的时候表示图片的右边和容器的右边对其,y为top的时候表示图片的顶部和容器的顶部对齐,为bottom时表示图片的底部和容器的底部对齐,x y等于center的时候表示居中对齐。

7、x y用百分比或者px表示的时候,其值可以为负数。我们应用坐标规则就很容易理解负数表示的意义,x为负数时候表示图片左顶点在容器左顶点的左侧,y为负数时表示图片的左顶点在容器的左定点的上方。也就是向左和向上超出容器的范围。

下面我用几个图示来说明一下几种情况,蓝色块表示图片,虚线框表示容器(可以div,td,或者直接就是body),注意只有背景图片在容器内我们才能看见,我用白色表示可见部分,而且超出容器范围的是看不见的,我用灰色表示。容器的左定点的坐标就是(0,0)。

第一张,背景图片和容的左上对齐,0px 0px 也可以写成left top

第二张,背景图在容器中间,定点坐标为正值

第三张,背景图部分在容器左上,定点坐标为负值

---------------------------------------------------------------------------

到此我们可能就明白了如何用background里的定位值来准确定位一个背景图片,返回去我们看一下开始的时候介绍的两个图片,我们就是可以用:背景定位和容器内才可见这两个性质来随意的调用整张图片的某一部分。

但是我们为了调用方便,在排列这些小图片的时候要讲究一点规则,比如:小图之间的距离通常是调用小图的容器的大小,或者距离更大一点,这样就可以避免在容器内显示出我们不愿意显示的图片!

补充一点,如果定位用的是百分比话,算法比较特殊。我举个例子:

代码:

background:#FFF url(image) no-repeat fixed 50% -30%;

这个时候图片应该在容器的什么位置呢,算法公式如下:

图片左顶点距容器左顶点的坐标位置为

x:(容器的宽度-图片的宽度)x50%

y:(容器的高度-图片的高度)x(-30%)

得到的结果应用坐标法则,差值如果为负数,百分比为正那么运算结果是负值。如果差值为负数,百分比也为负数,那么运算结果就是正数。总而言之就是这里的运算符合运算法则。把运算的结果带入坐标法则就能得到图片的位置。

比如:容器是width:600px;height:600px;而图片是width:200px;height:200px;

我们用上面的样式,可以得到图片位置为:

x:(600px-200px)*50%

y:(600px-200px)*(-30%)

如下图:

补充:

也就是说,如果你用background-position:0px 160px;无效的时候,确认一下是不是Y轴方向反了,也就是说要改成background-position:0px -160px;才是正确的。

CSS背景图片定位(background-position,css sprit,背景定位,background-imag相关推荐

  1. html 网页背景图片根据屏幕大小CSS自动缩放

    腾讯微博和QQ空间的登录背景图片是根据访客的屏幕大小自动缩放的,但是好像是用JQuery代码实现的.先不说要调用jq库拖慢了网页的打开时间,而且对于兼用性不好. 前几天用CSS研究出相同效果的样式代码 ...

  2. CSS学习记录3.2/设置标签的背景颜色/控制背景图片的平铺方式/控制背景图片的位置/背景图片关联方式/背景图片和插入图片的区别/捕鱼达人背景练习/精灵图

    设置标签的背景颜色: CSS中的background-color:属性,就是专门用来设置标签.bc+table 设置背景图片: CSS中的background-image: url( );的属性就是设 ...

  3. 【CSS】滑动门技术 ( 借助 CSS 精灵技术实现 | 外部标签设置左半部分背景图片 | 内部标签设置右半部分背景图片 | 鼠标经过更换背景 | 代码示例 )

    文章目录 一.滑动门技术 1.滑动门技术借助 CSS 精灵技术实现 2.外部标签设置左半部分背景图片 3.内部标签设置右半部分背景图片 4.鼠标经过时更换背景 二.完整代码示例 一.滑动门技术 1.滑 ...

  4. css中图片整合的使用,CSS Sprites:图片整合技术详细案例

    CSS Sprites 的目的就是通过整合图片,减少对服务器的请求数量,从而加快页面加载速度.介绍了CSS Sprites技术的实现方法,优点和缺点.最后通过实例CSS Sprites技术制作导航栏演 ...

  5. 04-背景相关属性【背景颜色,背景图片,背景平铺,背景位置,img与背景图片的区别】

    目录 1.背景颜色 2.背景图片 3.背景平铺 4.背景位置 5.background复合属性连写 6.背景图和img的区别 1.背景颜色 属性名:backgrou-color   例如:  back ...

  6. html内容被背景图片遮住怎么办_定义BODY背景图后,DIV的背景图片显示不全(已解决)...

    你的位置: 问答吧 -> WEB标准 -> 问题详情 定义BODY背景图后,DIV的背景图片显示不全(已解决) 一个有趣的问题,当BODY有背景图片的时候,BODY里的DIV一旦也有背景图 ...

  7. Java怎么让图片在窗体_在窗口添加背景图片-java怎么设置窗体的背景图片 – 手机爱问...

    2018-04-07 背景图片怎么设置? 背景图片代码:更换整体页面背景的源代码:body{b (大背景图片地址) repeatscroll!important;}更换页面题图logo图片的源代码:. ...

  8. vue样式中背景图片路径_vue打包css文件中背景图片的路径问题

    vue-cli写完的静态页面我们在node环境中引入没有问题,但是打包后放在Apache环境下,路径却有问题了 如一个简单css语句 .all_bg { background: url(../imag ...

  9. html5背景图片能加链接,CSS中用背景图片做为超链接的方法

    Web2.0时代,在网页设计中用背景图片做为超链接已成为主流,通过CSS的控制,使鼠标移到图片上能有很好的变换效果,虽然用普通的插入图片的方法也能实现效果,但用CSS更为方便,再配合css sprit ...

  10. CSS的背景(背景颜色,背景图片,背景平铺,背景图片位置,背景图片固定(图片附着),背景复合写法)

    CSS的背景 通过 CSS 背景属性,可以给页面元素添加背景样式. 背景属性可以设置背景颜色.背景图片.背景平铺.背景图片位置.背景图像固定等. 背景颜色 background-color 定义元素的 ...

最新文章

  1. 清华伯克利造出机械小强:承重200万倍踩不死,跑得和真蟑螂一样快
  2. python爬虫自学网站_Python爬虫3步曲:5分钟学习用Python解析网页
  3. 深入字节码操作:使用ASM和Javassist创建审核日志
  4. ajax datatype_小白跟我一起学习ajax
  5. 信息系统项目管理师考试资料
  6. 谁能畅游智能电视红海:联想K82,还是乐视?
  7. php无法post,PHP无法获得post数据
  8. keras训练完以后怎么预测_还在使用“龟速”的单显卡训练模型?动动手,让TPU节省你的时间...
  9. 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包
  10. 前端学习(2225):react之类定义组件
  11. 基于AForge.Net框架的扑克牌识别(Nazmi Altun著,野比 译)
  12. 最强大的人工智能系统 | NVIDIA DGX-2
  13. Activity——思维导图
  14. “37岁,年薪50万,一夜被裁”:伪上班,毁掉了多少中国年轻人
  15. 王叁寿,令人佩服,激励一下自己
  16. 直播软件开发,直播软件源码+三级分销模式的搭建
  17. wps改照片底色有红边_Excel怎么给证件照换底色?Excel中快速将证件照蓝底换红底的方法介绍...
  18. 【练习】基于Vue全家桶的仿小米商城系统
  19. Invalid argument: Subshape must have computed start >= end since stride is negative, but is 0 and 2
  20. Mac上的QQ字体大小和颜色设置

热门文章

  1. Linux 基金会发布《开源软件供应链安全报告》
  2. 服务器硬盘接口图文观赏
  3. Problem B: 字符串加密(编程)
  4. 自动装箱和自动拆箱——源码分析
  5. Activiti工作流引擎整合系列【收藏可做笔记系列】
  6. lua可以调用mysql数据库吗_Lua 数据库访问
  7. lua访问mysql_Lua之数据库访问
  8. mysql 虚拟数据库_虚拟mysqli数据库
  9. php调研方法,你以为调研会拍照就够了?调研图片处理大揭秘 | ?php echo C('PX
  10. oracle热备文档,Oracle双机热备方法