我们在研究其他的网站的样式的时候经常会发现一种情况,就是在很多background属性里都调用同一张图片,来满足网页各个部分的使用。打开这种图片看一下,会发现这张图片上包含了很多小图片,比如:
又如:
这些小图片就是整图分割后的各个部分,把各个部分放在一张图片上,而不是是分别存储成单独的图片,其目的我们都知道,就是减少http请求次数,节省时间和带宽。
那么怎么来实现一张图片在不同的地方只显示其中的一部分呢,这就用到了我们今天要说的背景图片的定位问题。这个问题相信很多人都郁闷过,也经常有朋友问我,所以今天就系统的说一下:
我们知道在用图片作为背景的时候,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%)
如下图:
分享到:
相关推荐
三列等高CSS布局的一个实例, 修改国外的一个demo, 兼容到了IE5.5 和标准的浏览器OperaFirefoxSafari。 不过hack太多,不是很喜欢这样做。全部代码如下: <?xmlversion=1.0encoding=gb2312?><!...
6. **响应式设计**:利用媒体查询(Media Queries)可以实现根据设备特性(如屏幕宽度)调整样式,确保网页在不同设备上的良好显示。 7. **过渡与动画**:CSS3引入了过渡(Transition)和动画(Animation),它们让...
在这个"HTML5 CSS3:无插件拖拽上传图片实例源码"中,我们重点关注的是利用HTML5的拖放(Drag and Drop)API以及File API来实现图片的无插件上传功能。这种技术使得用户可以通过直接在页面上拖动文件到指定区域,...
DIV CSS实例教程:一款清新风格的CSS新闻列表制作 本文将详细介绍如何使用CSS和XHTML来制作一个清新风格的新闻列表。通过该实例,我们将学习如何使用CSS浮动、背景和hover效果来美化新闻列表。 一、基本结构 首先...
在这个"css简单背景实例"中,我们将探讨如何使用CSS来设置页面背景以及文字样式,这对于初学者来说是一个很好的实践案例。 首先,我们来看"诗歌.css"这个文件。它可能包含了以下内容: 1. **背景颜色**:CSS允许...
DIVCSS网页布局实例:十步学会用CSS建站 本资源主要讲解了如何使用CSS从头开始创建一个完整的网页布局,通过十个步骤,指导读者一步步地构建一个完整的网站。下面是该资源的知识点总结: 1. 规划网站:网站的规划...
【CSS实例(三):全部使用背景生成栏目】 在网页设计中,CSS(层叠样式表)是一种强大的工具,用于定义HTML或XML文档中的元素外观、布局和结构。本实例将探讨如何仅通过背景属性来创建具有特色的栏目,实现丰富的...
在本实例中,CSS3的transform属性被用于实现3D立方体的旋转效果,通过设置rotateX、rotateY和rotateZ来控制立方体的各个轴向转动。 实现3D立方体旋转需要用到的关键CSS3属性有: 1. `perspective`:定义观察者与3D...
HTML5+CSS3小实例:纯CSS实现文字组成肖像特效
综上所述,这个经典CSS实例可能涵盖了JavaScript与CSS的结合、背景图片的应用、盒模型、定位、浮动以及CSS3的新特性,这些都是网页设计和开发中的关键技能。通过深入研究这个实例,我们可以更好地理解和掌握CSS的...
在这个“HTML5 CSS3:canvas模拟实现电子彩票刮刮乐实例代码”中,我们将深入探讨如何利用Canvas API创建一个互动式的刮刮乐彩票效果。 首先,Canvas的基本用法是通过`<canvas>`标签在HTML文档中创建一个画布,然后...
在本实例中,我们将深入探讨如何利用HTML5的`<canvas>`元素和CSS3的3D变换来创建一个3D立方体旋转动画。 首先,HTML5的`<canvas>`元素是一个强大的绘图工具,允许开发者通过JavaScript动态绘制图形。在这个3D立方体...
这份文件名为“css实例教程.pdf”,是一本关于CSS(层叠样式表)的教学资料。CSS是一种用来表现HTML或XML等文档的样式的计算机语言,它能够控制网页的布局、排版以及元素的呈现方式。从文件提供的内容来看,教程涉及...
2. **边框和背景**:CSS3允许使用圆角边框、多颜色渐变背景以及图片背景裁剪,极大地丰富了页面的视觉效果。比如,`border-radius` 属性可以创建无锯齿的圆角,而`background-image` 支持线性渐变和径向渐变。 3. *...
6. **响应式设计**:利用媒体查询@media进行不同屏幕尺寸下的样式调整,实现移动优先的网页设计。 7. **动画和过渡**:通过transition和animation属性实现元素动态效果。 8. **预处理器**:如Sass、Less和Stylus,...
10.4 定位实例一:轻轻松松给图片签名 10.5 定位实例二:文字阴影效果 第11章 CSS+div布局方法剖析 11.1 CSS排版观念 11.2 固定宽度且居中的版式 11.3 左中右版式 11.4 块的背景色...
在这个“HTML5+CSS3小实例:弹出式悬停效果”的主题中,我们将深入探讨如何利用这两者来实现一个吸引人的悬停效果,即当鼠标悬停在某个元素上时,会出现一个弹出框展示更多信息。 首先,HTML5是超文本标记语言的...
《CSS实例:OReilly.CSS.Cookbook(第二版)》是一本专注于CSS(层叠样式表)实践应用的专业书籍,旨在帮助Web开发者通过实际案例提升网页设计的可用性和美观度。这本书涵盖了丰富的CSS技术,从基础到高级,旨在使...
此外,为了创建更复杂的进度条效果,我们可以利用CSS3的动画和过渡。通过改变进度条的宽度或颜色渐变,可以创建出平滑的加载效果。例如,可以使用`transition`属性实现进度变化时的平滑过渡: ```css progress { ...