`
aiyou110
  • 浏览: 30882 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

关于css sprite 概述

    博客分类:
  • css
阅读更多

     记得当时面试的时候被问到对css sprite的认识,现在详细的解析一下,这个用法,加深一下映像,总没啥坏处。

     一、什么是css sprite?用css sprite有什么好处?

      css sprite,也有人叫css精灵、css雪碧,说的通俗一点儿,就是将css中定义的多个背景图片合成到一张,以减少http请求数。目前很多网站都在使用,算不上新技术,但是也很好用。

       最大的优点就是可以减少http的请求数,一般情况下,合成后得到的图片,比单张图片相加后所得的数据量,要小得多。另一个喜爱大型 sprite 的理由是可以利用一些 sprite 生成器来简单得生成 sprite。

      二、经典的例子——社交网站分享功能

<ul class="share"> 
 <li>分享到:</li> 
 <li><a class="renren" href="#" title="分享到人人网">人人网</a></li> 
 <li><a class="kaixin"  href="#"  title="分享到开心网">开心网</a></li> 
 <li><a class="sina"  href="#"  title="转帖到新浪微博">新浪微博</a></li> 
 <li><a class="douban"  href="#" title="分享到豆瓣">豆瓣</a></li> 
 <li><a class="more"  href="#"  title="添加到更多">更多</a></li> 
 </ul>
 ul.share li{float:left;}
 ul.share li a{display:block;width:25px;height:25px;text-indent:-9999px;}
 a.renren{background:url(../images/share.gif) 0 0 no-repeat;}
 a.kaixin{background:url(../images/share.gif) -25px 0 no-repeat;}
 a.sina{background:url(../images/share.gif) -50px 0 no-repeat;}
 a.douban{background:url(../images/share.gif) -75px 0 no-repeat;}
 a.more{background:url(../images/share.gif) -100px 0 no-repeat;} 
    分享功能是css精灵最常用的一种展示形式,不过上边的代码也有不完全的地方,css代码应该使用background-position这样可以增强代码的可维护性。此外图像替换时,如果使用text-indent属性之后,如果用户禁用图片,那么相对应的文字链接也就看不到了。在firefox下还需要为元素设置overflow:hidden,否则点击元素的时候,会出现超长的虚线框。
     不过现在分享代码都有比较多的网站提供,Bshare、加网、分享到很多的提供商,目前百度也已经推出了自己的分享代码,但是原理大家也是要知道一下的。
   三、使用css sprite需要注意的事项:
       虽然css sprite有很多的好处,但是是否启用,还是要看具体的项目需要,不能为了css sprite而去盲目使用。需要在可维护性vs降低负载之间权衡利弊,选择最适合你的项目的方式。
  1. 使用大图整合的最好是那些不经常做修改的小图片。对于sprite的修改需要谨慎,如果实在要对css sprite做修改的话,也需要规定图片和样式表的版本号,以防止影响其他的工程。
  2. 那种需要横向或者纵向重复的图最好不要用。当然单纯横向或者纵向的图片也是勉强可以的,但是这样会消耗过多的内存,所以不主张这样做。
  3. css sprite带来额外的内存消耗,虽然说使用它可以减少http请求数。但是这个只是发生在第一次的请求中。值得注意的是:浏览器会缓存所有的图片 – 无论图片 sprite 与否。
  4. 无法对IE6透明滤镜加载的图片设置background-position,当然,也可以使用DD_belatedPNG来解决这个问题。
  5. 此外,合成图片和编码的时间成本也会增加。需要一边切图一边同时构架代码。定位时要根据图片要现实的位置来合并图片。给每个图片要有足够的空间显示,不用担心留白会影响图片的大小。
 

 

分享到:
评论

相关推荐

    CSS3最全手册

    **CSS3最全手册概述** CSS3(Cascading Style Sheets Level 3)是Web样式表语言的最新版本,用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档的呈现。CSS3不仅增加了许多新的功能和选择器,还对现有的CSS...

    famfamfam-flags-sprite:非官方精灵 - 来自 www.famfamfam.com 的原始图标

    概述这个包提出了一个基于构建的 CSS 精灵,该是根据免费许可提出的。 要了解有关“CSS sprites”概念的更多信息,请参阅。用法安装这个包是一个“独立”的 CSS 框架。 要使用它,您只需要从 GitHub 获取其源代码并...

    2021-2022年收藏的精品资料软件工程师强烈推荐40个优秀的免费CSS工具.docx

    【CSS工具概述】 在Web开发领域,CSS(Cascading Style Sheets)是不可或缺的一部分,它负责定义网页的样式和布局。对于软件工程师来说,拥有一套实用的CSS工具能够极大地提高工作效率,提升网页设计的质量。以下是...

    CSS3实现鼠标中轮滚动树生长过程特效源码.zip

    **CSS3概述** CSS(层叠样式表)是用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档的外观和格式的样式语言。CSS3是CSS的最新版本,引入了许多新的特性和改进,包括更丰富的选择器、多列布局、边框和背景...

    HTML+CSS基础训练之实现一个“真实”的网页.docx

    #### 一、项目概述 本篇文章主要介绍了如何使用HTML和CSS技术构建一个具有实际意义的文章展示页面。文章展示页是网络上非常常见的一种页面形式,其核心组成部分主要包括文章标题区域和文章正文区域。本文将详细介绍...

    sample-phaser-tiled-map-spritesheet

    申请文件资产/ CSS / app.css index.html js / Boot.js Game.js gamecontroller.js main.js phaser.js phaser.min.js Preload.js概述www/js/app.js是游戏的入口,它定义并引导了以下场景(或状态): :设置游戏场景...

    famflags:http

    famflags是一组国家标志CSS Sprite。 如今,如果您可以依靠不错的Unicode / Emoji支持,则应该只使用。 方式与历史 如果您只想使用图像,请查看下载链接。 如果要构建自己的存储库,请克隆存储库并运行make。 请...

    VikJobs

    8. **CSS性能优化**:通过选择器优化、减少重绘和回流、使用CSS Sprite技术等方法,提升VikJobs的页面加载速度和性能。 9. **语义化HTML**:良好的HTML结构对于SEO和可访问性至关重要。VikJobs的HTML代码可能遵循...

    kasafin-kudi

    2. **性能优化**:减少HTTP请求数量,合并CSS文件,利用CSS Sprite技术整合图像,以及使用适当的CSS3特性如渐进增强,都能提升kasafin-kudi的加载速度。 3. **语义化HTML**:配合语义化的HTML元素使用CSS,如、、等...

    smed-sistemas

    6. **性能优化**:通过合理的CSS选择器优化、减少重绘和回流,以及使用CSS Sprite、雪碧图技术减少HTTP请求,提升页面加载速度。 在`smed-sistemas-main`目录中,可能包含以下内容: - HTML 文件:定义了页面的...

    Cocos2d-x 3.6 API离线文档

    3. **Sprite**:精灵,用于显示2D图像,是游戏中的基本图形元素。 4. **Director**:导演,负责管理游戏的运行,包括屏幕更新、时间控制、场景切换等。 5. **EventDispatcher**:事件调度器,处理和分发游戏中的各种...

    cv

    在本案例中,"cv"可能是指一个关于创建或设计简历的项目,而"CSS"标签则暗示了这个项目可能涉及到使用层叠样式表(Cascading Style Sheets)来美化和格式化简历的呈现效果。接下来,我们将深入探讨与简历制作和CSS...

    web前端开发规范参考文档

    #### 一、规范目的概述 本文档的核心目的是为了提升团队协作效率,确保代码质量,以及建立一套统一的编码风格规范。规范文档一经确认,所有前端开发人员都应按照该规范执行前台页面开发工作。文档内容会持续更新和...

    Mouthful

    6. **性能优化**:通过CSS最小化、雪碧图(Sprite Sheets)和异步加载等技巧,提升网站的加载速度和性能。 **Mouthful-main文件夹分析** "Mouthful-main"很可能是项目的主要源代码目录,包含以下组件: 1. **HTML...

    crispin-mulberry-fe-nat:克里斯平和桑树-Nerdery FE NAT

    克里斯平和桑树:书呆子前端(NAT) NAT(Nerd评估测试)是Nerdery候选人面试... :从CSS源文件生成Sprite Sheet。 最佳且不同的Sprite工作表方法。 gulp :图像比较工具,逐像素进行比较。 用于整页设计回归测试 g

    My-Wordpress-Workflow:这是Wordpress主题的前端工作流程

    ##概述此工作流基于Gulp任务,可以使您的Jade,Sass,Javascript等...文件编译器变得如此酷... 注意:如果您不知道什么是Gulp以及如何使用它,我建议您去观看并从此视频中学习:)( ) ##安装打开您的Termanial,...

    精品源码 / 休闲游戏 / 挑战智商 / 中国象棋

    【中国象棋游戏开发概述】 中国象棋,作为一款深受中国人民喜爱的传统智力游戏,具有丰富的策略性和娱乐性。在IT行业中,将这种经典棋类游戏移植到数字平台,如前端应用,是技术与文化传承的结合。这款"挑战智商"的...

    Ext Js权威指南(.zip.001

    6.1.5 css属性值选择符 / 234 6.1.6 伪类选择符 / 235 6.1.7 扩展选择器 / 248 6.1.8 ext.domquery的使用方法 / 249 6.1.9 ext js选择器的总结 / 252 6.2 获取单一元素:ext.dom.element / 252 6.2.1 从错误...

    web1

    例如,合并CSS和JS文件、使用雪碧图(sprite sheet)技术可以减少网络请求次数。 【总结】 HTML作为网页开发的核心,配合CSS和JavaScript,能创建功能丰富、交互性强的网页。不断进化的HTML5提供了更多工具和功能...

Global site tag (gtag.js) - Google Analytics