关于精灵图

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

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

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

具体步骤:
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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • web.xml配置contextConfigLocation[通俗易懂]

    web.xml配置contextConfigLocation[通俗易懂]web.xml中classpath:和classpath*:  有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找. 有时候会用模糊匹配的方式配置多配置文件。但是如果配置文件是在jar包里,模糊匹配就找不到了。可以用逗号隔开的方式配置多个配置文件

    2022年7月14日
    16
  • 增强for循环的语法_增强for循环原理

    增强for循环的语法_增强for循环原理一、概述:也成为【foreach】循环,是JDK1.5版本以后出来的一个高级for循环,专门用来遍历数组和集合的,它的内部原理其实就是iterator迭代器,所以在遍历过程中,不能对集合的元素进行增删操作。二、格式for(元素的数据类型变量名:数组名/集合名{}三、代码演示publicstaticvoidmain(String[]args)…

    2022年10月28日
    0
  • Oracle实用操作(三)oracle 表名长度的限制

    Oracle实用操作(三)oracle 表名长度的限制Oracle实用操作(三)oracle表名长度的限制1、在新建oracle表的时候,经过查找相关资料oracle表名的最大长度是30,我加上了0331正好是30,多加2为就32了,当然报错了。2、同时有网友说看看descuser_tables,看table_name字段的定义也可以发现,这个很有道理,于是我看了一把.这么看来,表空间名最大长度也是30。看来oracle对30,情有独钟嘛。…

    2022年5月13日
    116
  • SCI论文投稿Cover Letter的写作

    SCI论文投稿Cover Letter的写作http://www.dxy.cn/bbs/topic/19651815SCI论文投稿CoverLetter的写作和中文投稿有很大的不同,CoverLetter的撰写对于新手而言不知该写什么,而对于老手往往又被忽视,CoverLetter重要吗?可有可无吗?下面我将从科学网转载系列有关CoverLetter的帖子,但愿对于新手、老手都有所帮助:#1CoverLet

    2022年5月24日
    43
  • 活动图学习笔记

    活动图学习笔记活动图学习笔记活动图基本概念事件流除了用文本形式来表示外,还经常用活动图来表示。为什么有了文本形式以后还要开发这种框图形式呢?这是因为利用文本形式虽然很有用,但是如果事件流逻辑复杂,则文本形式比较难阅读和理解,利用框图将比文本形式来得更加有效。活动图显示与文本事件流相同的信息。我们在业务模型中用活动框图描述业务过程的工作流。活动图的组成要素活动图的组成要素主要有:起始点和终止点、活动、迁移、决策框、

    2022年5月3日
    43
  • Python 监控linux之dstat

    Python 监控linux之dstat        Python编写的监控工具——dstat          1.多功能系统资源统计

    2022年6月28日
    33

发表回复

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

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