CSS背景图片定位
原文:CSS背景图片定位
在网页开发中我们经常需要对图片进行分割(如下图)来使用,而不是分别提供单独的图片来调用,常见的如页面背景,按钮图标等,这样做的好处就是减少请求次数,节省时间和带宽。

对背景图片的定位就需要用到CSS中的background样式,如:
div{
background-image: url("1234.png");
background-repeat: no-repeat;
background-position: 0px -100px;
}
属性解释:
background-image : none | url ( url )
| 
 none  | 
 :  | 
 默认值。无背景图  | 
| 
 url ( url )  | 
 :  | 
 使用绝对或相对 url 地址指定背景图像  | 
background-repeat : repeat | no-repeat | repeat-x | repeat-y
| 
 repeat  | 
 :  | 
 默认值。背景图像在纵向和横向上平铺  | 
| 
 no-repeat  | 
 :  | 
 背景图像不平铺  | 
| 
 repeat-x  | 
 :  | 
 背景图像仅在横向上平铺  | 
| 
 repeat-y  | 
 :  | 
 背景图像仅在纵向上平铺  | 
background-position : length || length
background-position : position || position
| 
 length  | 
 :  | 
 百分数 | 由浮点数字和单位标识符组成的长度值。  | 
| 
 position  | 
 :  | 
 top | center | bottom | left | center | right  | 
background-position属性说明:
必须先指定 background-image 属性。
默认值为: 0% 0% 。此时背景图片左上角将被定位于容器的左上角。
如果只指定了一个值,该值将用于横坐标。纵坐标将默认为 50% 。如果指定了两个值,第二个值将用于纵坐标。
定位图像位置有三种方式:百分比、像素值、对齐方式.
1、对齐方式
对齐方式有5个值top、botton、lef、right、center,分别对应顶部对齐,底部对齐,左对齐,右对齐,居中对齐(对齐就是容器的某一边跟图片的对应边重叠)

上图中包含了三个不同样式按钮,我们可以在鼠标点击和双击时改变它的样式,
代码:
<html>
<head>
<style>
div{
background-image: url("browseBtn.png");
background-repeat: no-repeat;
cursor: hand;
width: 80px;
height: 24px;
}
.button1{
background-position: top;
}
.button2{
background-position: center;
}
.button3{
background-position: bottom;
}
</style>
<script>
function clickButton()
{
document.getElementById('button').className = "button2";
}
function dblclick()
{
document.getElementById('button').className = "button3";
}
</script>
</head>
<body>
<div id="button" class="button1" onclick="clickButton()" ondblclick="dblclick()"></div>
</body>
</html>
展示效果:
 默认效果
单击效果
 双击效果
类似的我们还可以定义左上、左中、左下、中上、居中、中下、右上、右中、右下几种样式来定位图片,如:

在介绍像素值和百分比前我们要先了解容器的坐标轴概念:

容器的左上角为坐标原点,向右为正向X轴,向左为反向X轴,向下为正向Y轴,向上为反向Y轴,而所谓的像素值就是图片原点和容器坐标原点的坐标差,分别对应background-position中的第一个和第二个参数,这个坐标差的计算就需要我们根据图片和容器的大小来对图片做相应的移动。
2、像素值

上图中包含了大量的图标,现在我们就是选取其中的几个图标来说明如何计算像素值:
<html>
<head>
<style>
.but1, .but2, .but3, .but4{
background-image: url("ui-icons.png");
background-repeat: no-repeat;
float: left;
cursor: hand;
/*border: 1px solid;*/
}
.but1{
width: 14px;
height: 18px;
border-right-width:0px;
background-position: -113px -190px;
}
.but2{
width: 14px;
height: 18px;
border-right-width:0px;
background-position: -113px -126px;
}
.but3{
width: 14px;
height: 18px;
border-right-width:0px;
background-position: 0px -110px;
}
.but4{
width: 14px;
height: 18px;
background-position: -240px -126px;
}
</style>
</head>
<body>
<div class="but1"></div>
<div class="but2"></div>
<div class="but3"></div>
<div class="but4"></div>
</body>
</html>
效果如下:

以DIV1为例来讲解

容器DIV1宽为14px,高为18px,我们要获得向右箭头就需要将其移动到容器内,所以需要图片的原点向左平移113px,再向上平移190px,结合上面坐标轴的概念水平向左为负,垂直向上也为负,所以结果就是-113px -190px;其它三个DIV方法也类似了,归结起来就是把需要的图标移动到容器内,然后根据坐标轴计算平移量就可以了,是不是很简单呀!
3、百分比
百分比的计算方法略显复杂,图片长宽乘以百分比对应的位置和容器长宽乘以百分比对应的位置重叠,如图:

我们可以通过公式来根据像素值计算出百分比: (容器的宽/高度-图片的宽/高度) x 百分比 = 像素值

上图图片我们可以通过百分比的方式把它水平摆放
<html>
<head>
<style>
.but1, .but2, .but3, .but4{
background-image: url("1234.png");
background-repeat: no-repeat;
width: 100px;
height: 100px;
float: left;
}
.but1{
background-position: 0% 0%;
}
.but2{
background-position: 0px 33.33%;
}
.but3{
background-position: 0px 66.66%;
}
.but4{
background-position: 0px 100%;
}
</style>
</head>
<body>
<div class="but1"></div>
<div class="but2"></div>
<div class="but3"></div>
<div class="but4"></div>
</body>
</html>
效果如下:

示例下载:
CSS背景图片定位的更多相关文章
- css背景图片定位练习(二): background-position的百分比
		
background-position:x y; 百分比定位并不能直观的看出来,需要通过计算. background-position百分比计算公式: (容器宽度—背景图片的宽度)*x%=xpx(容器 ...
 - css背景图片定位练习(一)
		
首先准备一张雪碧图,Like this 背景图片的定位方法有3种,比较常用的两种为 关键字:background-position: top left; (top/bottom/cennter/lef ...
 - CSS常用背景图片定位方法
		
CSS背景图片定位其实对于每一位学习前端的同学来说,都已经非常熟悉了.网上铺天盖地的最常见的一种方案就是在父元素中relative,然后子元素absolute.这种方案当然好,不过带来的一个缺点就是会 ...
 - CSS 背景图像 背景图片定位
		
背景图片定位 background-position属性可以给背景图片定位. background-position属性有两个值,第一个值是水平位置,第二个值是垂直位置.这两个值可以使用百分比来表示( ...
 - HTML+CSS—背景图片、图片定位
		
设置背景图片格式: background-image: url(img/ic.jpg); 注意点: 如果父容器面积大于背景图片,默认显示该图片整面平铺 设置是否需要平铺属性: background-r ...
 - background的属性和背景图片定位的实例
		
本文内容: 1.背景图片定位示例 2.background常用的属性值 3.background-repeat新增的round.space属性 4.background-size的属性值(着重介绍co ...
 - css背景图定位和浮动
		
网站图标引入:<link rel="shortcut icon" href="ico图标地址"> 背景图片 background-image: u ...
 - Bootstrap  css背景图片的设置
		
一. 网页中添加图片的方式有两种 一种是:通过<img>标签直接插入到html中 另一种是:通过css背景属性添加 居中方法:水平居中的text-align:center 和 margin ...
 - css背景图片拉伸 以及100% 满屏显示
		
如何用css背景图片拉伸 以及100% 满屏显示呢?这个问题听起来似乎很简单.但是很遗憾的告诉大家.不是我们想的那么简单. 比如一个容器(body,div,span)中设定一个背景.这个背景的长宽值在 ...
 
随机推荐
- 杭电1233还是畅通project
			
还是畅通project Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
 - C#
抽象类其中创建一个静态方法
			
</pre><pre name="code" class="csharp"><span style="font-size ...
 - MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk
			
MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk 经ltib编译器生成rootfs.ext2.gz.uboot它可以直接uboot采用.假设我们编写了相应的外部文件把Ramdisk往里 ...
 - 理解Android虚拟机体系结构(转)
			
1 什么是Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的 ...
 - 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
			
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...
 - Python3.2官方文件翻译-工具列表和十进制浮点计算
			
8.7 列表工具 许多数据结构需要通过内置列表类型来满足.但,有时候在不同的性能取舍需要选择一个实现. Array模块能提供一个像列表的array对象,它只能存储同类数据而且更加简洁. 接下来样例展示 ...
 - Log4net 日志
			
Log4net 日志使用介绍 概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以 ...
 - jQuery中的.height()、.innerHeight()和.outerHeight()
			
jQuery中的.height()..innerHeight()和.outerHeight()和W3C的盒模型相关的几个获取元素尺寸的方法.对应的宽度获取方法分别为.width()..innerWid ...
 - 网络资源(8) - JAX-RS视频
			
2014_08_25 http://v.youku.com/v_show/id_XNjAzMzA4MTY0.html JAX-RS 2.0 RESTful Java on Steroids, by A ...
 - Android物业动画研究(Property Animation)彻底解决具体解释
			
 前p=1959">Android物业动画研究(Property Animation)全然解析具体解释上已经基本展示了属性动画的核心使用方法: ObjectAnimator实现动画 ...