关于精灵图

关于精灵图之前就发现一些网站吧所有的小图标拼接在一张图片中,但是一直不知道这是怎么做到的,今天特地了解了一下,才知道这种用法叫做精灵图。他的优点是可以减少浏览器请求的次数,把所有图片拼接在一张图中就只需要请求一次,当浏览器需要用到图片时再从大图片中解析。这样可以加快访问的次数。先来看看效果图:拼接的图片:他的原理是,先规定好每个小图标的大小,创建一个和小图标大小相同的容器,再通过移动背景图片的方法将…

大家好,又见面了,我是你们的朋友全栈君。

之前就发现一些网站把所有的小图标拼接在一张图片中,但是一直不知道这是怎么做到的,今天特地了解了一下,才知道这种用法叫做精灵图。他的优点是可以减少浏览器请求的次数,把所有图片拼接在一张图中就只需要请求一次,当浏览器需要用到图片时再从大图片中解析。这样可以加快访问的次数。先来看看效果图:
在这里插入图片描述
拼接的图片:
在这里插入图片描述
他的原理是,先规定好每个小图标的大小,创建一个和小图标大小相同的容器,再通过移动背景图片的方法将大图中需要的部分暴露在这个容器中。就是说这张图片就像被一块布遮住,只是在想要的地方留了一个空,好让背景图片暴露出来,这样只要将将背景图片一道合适的位置就可以只显示我们想要的部分。

具体步骤:
1,创建合适大小的容器
2,将拼接的大图作为容器的背景,并设置为no-repeat
3,改变背景的位置

对于改变背景的位置我们需要知道小图标在大图片的的坐标(以大图的左上角为原点),例如如果小图标在大图中的坐标是(10,20),那么将背景图片向左移动10px,向上移动20px就可以抵消小图标在大图的位置。
获取这个坐标可以用PS中的切片工具,将小图标选择出来后右击选择编辑即可看到小图标的坐标
在这里插入图片描述
完整源码如下:

<html>
    <head>
        <style>
        *{
            margin:0;
            padding:0;
        }
        .div0{
            margin:10px;

        }
        .demo1,.demo2,.demo3,.demo4,.demo5,.demo6{
            display:inline-block;
            width:17px;
            height:17px;
            background-color:transparent;
            background-image:url(ico.png);
            background-repeat:no-repeat;
        }
        .demo1{ background-position:-38px -37px;}
        .demo2{ background-position:-62px -37px;}
        .demo3{ background-position:-86px -37px;}
        .demo4{ background-position:-110px -37px;}
        .demo5{ background-position:-134px -37px;}
        .demo6{ background-position:-159px -37px;}
        ul{
            list-style:none;
        }
        ul li {
            margin:10px;
        }

        </style>
    </head>

    <body>
    <div class="div0">
        <ul>
            <li><div class="demo1"></div> 图标1</li>
            <li><div class="demo2"></div> 图标2</li>
            <li><div class="demo3"></div> 图标3</li>
            <li><div class="demo4"></div> 图标4</li>
            <li><div class="demo5"></div> 图标5</li>
            <li><div class="demo6"></div> 图标6</li>
        </ul>
    </div>

    </body>
</html>

原文作者: https://blog.csdn.net/twilight_karl/article/details/54914866

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139326.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Photoshop CC2019 快捷键壁纸 快捷键大全

    Photoshop CC2019 快捷键壁纸 快捷键大全篇幅较长,建议先收藏,以后有需要了随时可以查看一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具【M】 移动工具【V】 套索、多边形套索、磁性套索【L】 魔棒工具【W】 裁剪工具【C】 切片工具、切片选择工具【K】 喷枪工具【J】 画笔工具、铅笔工具【B】 像皮图章、图案图章【S】 历史画笔工具、艺…

    2022年9月29日
    2
  • samba文件共享服务器安装

    samba文件共享服务器安装一、安装samba服务以及samba客户端yumlistsambayuminstallsambasamba-client安装好samba软件包以后,在系统中会添加名为smb和nmb的标准系统服务,管理员可以通过service(centos6)或systemctl(centos7)工具来控制Samba服务的启动与终止。其中smbd程序负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议),而nmbd服务程序负责监听UDP协议的137、138端口(NetBIOS协

    2022年5月18日
    36
  • mysql实战34讲_有效教学十讲读书心得

    mysql实战34讲_有效教学十讲读书心得此文为极客时间:MySQL实战45讲的4、5、9、10、11、15、18节索引相关部分的总结一、Innodb索引模型1.主键/非主键索引的区别每个索引在Innodb中都是一颗B+树,其中根据索

    2022年8月16日
    5
  • 两位数乘法的速算方法(一)「建议收藏」

    两位数乘法的速算方法(一)「建议收藏」两位数乘法的速算方法一、范围讲的是两位自然数的相乘,即如何计算ABXCD的相乘结果,例如86X32。 二、ABXCD相乘的专业说法AB叫被乘数CD叫乘数三、原理设两位数分别是10A+B,10C+D,其乘积为S,根据多项式展开:S=(10A+B)X(10C+D)=10Ax10C+BX10C+10AXD+BXD。所谓速算,就是根据其中一些相等或者互补的关系,简化

    2022年6月7日
    57
  • 使用torchvision时报错:ModuleNotFoundError: No module named ‘six‘

    使用torchvision时报错:ModuleNotFoundError: No module named ‘six‘AnacondaPowershellPrompt中直接输入pipinstallsix

    2022年6月24日
    188
  • 初识SQL Server2017 图数据库(一)

    初识SQL Server2017 图数据库(一)

    2021年11月24日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号