如何用css显示一个图片中多个小图标?

html-css027

如何用css显示一个图片中多个小图标?,第1张

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

}

其他的同理。

最后贴出来一个例子,看明白了这个属性就懂了。

用到的另一张图片名字叫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伪类实现了你鼠标移动到上面就从黑白变彩色。

代码如下:

.avatar {

position: relative

width: 100px

height: 100px

}

.avatar >img {

width: 100px

height: 100px

border-radius: 50%

}

.icon {

position: absolute

right: 0/*根据需要调整数值*/

bottom: 0/*根据需要调整数值*/

width: 50px

height: 50px

font-size: 14px

color: #fff

background-color: yellow

border-radius: 50%

}

<div class="avatar">

<img src="头像图片" >

<div class="icon">

<img src="图片" >

或者小图标

</div>

</div>

什么是icon?让我们先来看一个例子:

我们以为例子,图中看到的用圆圈起来的部分都是icon

这个时候你就想问了,这不就是几张图片么?

不,它不是图片,而是文字

什么??这怎么可能是文字,文字怎么会是这样的?...

正如你所看到的,现在市面上大多数网页使用的图标都是类似这样的形式,也有不少icon图标库可供我们使用

它的实现方式有:

首先我们需要了解:

如何让页面展示一个图标呢?我们可以把图标当成文字来操作,步骤如下:

下面是具体用法范例,大家可以一试:

或者

CSS Sprites在国内很多人叫css精灵(雪碧图),是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。对于当前网络流行的速度而言,不高于200KB的单张图片的所需载入时间基本是差不多的,所以无需顾忌这个问题。

加速的关键,不是降低质量,而是减少个数。传统切图讲究精细,图片规格越小越好,重量越小越好,其实规格大小无所谓,计算机统一都按byte计算。客户端每显示一张图片都会向服务器发送请求。所以,图片越多请求次数越多,造成延迟的可能性也就越大。

例子:

引用该类 .. 然后在元素中逐一定义背景坐标 .. 以下为关键属性 ..

必须要限定容器大小符合背景图元素位置 .. 另外 .. XY轴是相对于整张图片的左上角来算的 .. 所以取值一定要算清楚。