返回目录:设置问题
CSS显示一个大图片中的多个小图标,主要是用background-position这个属性来控制的。
先看下面这张300*300的大图片,每个小图标是100*100的。(这张图片名字叫9pic2.jpg)
首先先将你要放置背景小图标的元素的大小设置成图片里图标的实际大小,用width和height设置,然后用background-image把背景图片放进去,比如:
.showImage{
background-image: url(9pic2.jpg);
width: 100px;
height: 100px;
}
这么设置完毕后,大图片左上角那个小图标(这里假设是100*100的小图标)就出来了。
然后用background-position属性调整背景图片的位置,它有两个值分别表示背景图片沿着x和y轴移动的距离。你想象背景图片一开始是和当前元素左上角重合,但背景图片是可以移动的,由于浏览器坐标系x轴正向右,y轴正向下。所以,背景图片一般需要向左移动,和向上移动,这样移动的值往往都是负的。
比如上面第2张小图标,需要把大图片沿着x方向向左移动100px,y方向不变,设置background-position属性如下:
#item2{
background-position: -100px 0;
}
其他的同理。
最后贴出来一个例子,看明白了这个属性就懂了。
用到的另一张e799bee5baa6e997aee7ad94e58685e5aeb9364图片名字叫9pic1.jpg,先贴出来:
代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>背景background-position切图</title>
<style>
.showImage{
background-image: url(9pic2.jpg);
width: 100px;
height: 100px;
}
.showImage:hover{
background-image: url(9pic1.jpg);
}
ul{
list-style: none;
}
ul li{
float: left;
margin: 20px;
}
#item1{
background-position: 0 0;
}
#item2{
background-position: -100px 0;
}
#item3{
background-position: -200px 0;
}
#item4{
background-position: 0 -100px;
}
#item5{
background-position: -100px -100px;
}
#item6{
background-position: -200px -100px;
}
#item7{
background-position: 0 -200px;
}
#item8{
background-position: -100px -200px;
}
#item9{
background-position: -200px -200px;
}
</style>
</head>
<body>
<div class="container">
<ul>
<li id="item1" class="showImage"></li>
<li id="item2" class="showImage"></li>
<li id="item3" class="showImage"></li>
<li id="item4" class="showImage"></li>
<li id="item5" class="showImage"></li>
<li id="item6" class="showImage"></li>
<li id="item7" class="showImage"></li>
<li id="item8" class="showImage"></li>
<li id="item9" class="showImage"></li>
</ul>
</div>
</body>
</html>
这个例子把那个图片打散,横排在页面上,还用:hover伪类实现了你鼠标移动到上面就从黑白变彩色。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:///TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http:///1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>A标签</title>
<style type="text/css">
*{ margin:0; padding:0;}
a{ color:#00C; text-decoration:none; padding:0 20px;}/*整个页面A标签的属636f7079e79fa5e98193333性*/
a:hover{ color:#F00; text-decoration:underline}/*整个页面A标签鼠标滑过属性*/
.one,.two{ width:800px; margin:20px auto; line-height:36px; border:1px solid green;}
.two a{ color:#000;}/*在.two这个div里面A标签的属性*/
.two a:hover{ color:#0F0;}
</style>
</head>
<body>
<div class="one"><a href="#">百度</a><a href="#">新浪</a><a href="#">腾讯</a><a href="#">网易</a></div>
<div class="two"><a href="#">百度</a><a href="#">新浪</a><a href="#">腾讯</a><a href="#">网易</a></div>
</body>
</html>
可以有多种e68a84e8a2ad7a64332方法实现的。比如可以给每个img设置不同的ID:
<img id=p1 src="1.jpg"/><img id=p2 src="2.jpg"/><img id=p3 src="3.jpg"/>
<style>
#p1 {border:1px solid #f00}
#p2 {border:1px solid #0f0}
#p3 {border:1px solid #00f}
</style>
或者是不同的class:
<img class=p1 src="1.jpg"/><img class=p2 src="2.jpg"/><img class=p3 src="3.jpg"/>
<style>
.p1 {border:1px solid #f00}
.p2 {border:1px solid #0f0}
.p3 {border:1px solid #00f}
</style>
还有一种更灵活的方式,但需要浏览器支持css3:
<img src="1.jpg"/><img src="2.jpg"/><img src="3.jpg"/>
<style>
img:nth-of-type(1) {border:1px solid #f00}
img:nth-of-type(2) {border:1px solid #0f0}
img:nth-of-type(3) {border:1px solid #00f}
</style>
这种方法还有多种灵活的处理方式,比如:
img:nth-of-type(odd) 会选择所有单数的图片(第1张、第3张、第5张……)
img:nth-of-type(even) 会选择所有双数的图片(第2张、第4张、第6张……)
img:nth-of-type(2n) 也是选择双数
img:nth-of-type(2n+1) 也是选择单数
img:nth-of-type(3n+1) 从第1张算起每3张取出1张图片(第1张、第4张、第7张……)
img:nth-of-type(5n+3) 从第3张算起每5张取出1张图片(第3张、第8张、第13张……)
除了这个,css还有几十种不同的选择器,你百度搜一下 css选择器 就知道了。