首页 > 其他分享 >CSS Sprites合并多个小图片

CSS Sprites合并多个小图片

时间:2023-05-10 20:31:46浏览次数:57  
标签:none 9px 合并 css 5px position Sprites CSS 图片


 

这种方法看似繁琐,但却是非常有实用价值的。

首先,CSS Sprites 能较少 HTTP 请求次数。
我们知道,HTTP 请求数对网站的工作性能有较大关联。如果背景图分开存放,每一次调用都会产生 HTTP 请求,一定程度上增加了服务器的负担。而单个背景图的设计方法,只需请求一次即可取回背景图片。很多大型网站,包括雅虎,新浪等,都采用了 CSS

其次,CSS Sprites 能防止背景图片延迟加载。
有时在点击以图片作背景的按钮时会发现,鼠标悬停的时刻才会触发浏览器下载背景图片,这是非常差劲的用户体验。但如果将图片存放与单个文件,就能避免延迟加载。因为在打开网页的首次请求中,图片已经加载完毕。

然而,使用单个图片文件存放的方法会降低可维护性。而且图片的定位比较繁琐,缺乏灵活性。在雅虎开发小组的 YUI

总之,CSS Sprites 有利也有弊。在追求性能的前提下,CSS

 

网页中经常涉及到很多小图片,一般能达到几十个,如果每个小图片来一次http请求,请求个数多大几十个。使用css sprites技术服务器端只需要将一个包含所有小图片的图片发送过来,由客户端使用css的背景图片及背景图片位置属性来显示图片即可。如此一来大大减少了服务器端的压力。

 

如今css sprites技术已经被很多大型网站使用,使用火狐的firebug观察google搜索页面的请求,会发送服务器端返回如下图片,此图片中包含了搜索页面大部分图片

而google log的html源码为

Html代码
<a title="Google 首页" href="http://www.google.com.hk/webhp?hl=zh-CN" id="logo">Google<img width="167" height="318" alt="" src="/images/nav_logo83.png"></a>

<a title="Google 首页" href="http://www.google.com.hk/webhp?hl=zh-CN" id="logo">Google<img width="167" height="318" alt="" src="/images/nav_logo83.png"></a>

 其中logo对应css为

Html代码 
1. #logo {   
2.     display: block;   
3.     height: 41px;   
4.     margin: 0;   
5.     overflow: hidden;   
6.     position: relative;   
7.     width: 114px;   
8. }   
9. #logo img {   
10.     background: none repeat scroll 0 0 #F5F5F5;   
11.     border: 0 none;   
12.     left: 0;   
13.     position: absolute;   
14.     top: -41px;   
15. }

#logo {
    display: block;
    height: 41px;
    margin: 0;
    overflow: hidden;
    position: relative;
    width: 114px;
}
#logo img {
    background: none repeat scroll 0 0 #F5F5F5;
    border: 0 none;
    left: 0;
    position: absolute;
    top: -41px;
}

 

参考了如上代码,自己试了下

原图片包含四个小图标,每个小图标大小为9px*9px,即大图片大小为18px*18px,如下

需要的效果,及在html页面每一行显示一个小图标

css源码

Java代码 
1. #plusImageButton {   
2.     display:block;   
3.     overflow:hidden;   
4.     position:relative;   
5.     width:9px;   
6.     height:9px;   
7.     margin:5px 5px 5px 5px;   
8. }   
9. #plusImageButton img{   
10.     border:none;   
11.     position:absolute;   
12. }

#plusImageButton {
	display:block;
	overflow:hidden;
	position:relative;
	width:9px;
	height:9px;
	margin:5px 5px 5px 5px;
}
#plusImageButton img{
	border:none;
	position:absolute;
}

注意其中plusImageButton的width、height为小图片的长和宽

 

 html源码:

Html代码

Html代码
<table>  
    <tr>  
        <td>  
            <a id="plusImageButton"> <img width="18px" height="18px" style="left:0px; top:-9px;" src="../images/plusAndMinus.png"/></a>  
            <a id="plusImageButton"> <img width="18px" height="18px" style="left:-9px; top:-9px;" src="../images/plusAndMinus.png"/></a>  
            <a id="plusImageButton"> <img width="18px" height="18px" style="left:0px; top:0px;" src="../images/plusAndMinus.png"/></a>  
            <a id="plusImageButton"> <img width="18px" height="18px" style="left:-9px; top:0px" src="../images/plusAndMinus.png"/></a>  
        </td>  
    </tr>  
</table>  

<table>
	<tr>
		<td>
			<a id="plusImageButton"> <img width="18px" height="18px" style="left:0px; top:-9px;" src="../images/plusAndMinus.png"/></a>
			<a id="plusImageButton"> <img width="18px" height="18px" style="left:-9px; top:-9px;" src="../images/plusAndMinus.png"/></a>
			<a id="plusImageButton"> <img width="18px" height="18px" style="left:0px; top:0px;" src="../images/plusAndMinus.png"/></a>
			<a id="plusImageButton"> <img width="18px" height="18px" style="left:-9px; top:0px" src="../images/plusAndMinus.png"/></a>
		</td>
	</tr>
</table>

注意其中img的width为大图片的长,height为大图片的宽。style中的left和top是为了控制显示哪个小图片,位置相对于大图片的左上角顶点而言

 

参考:

http://www.mangguo.org/css-sprites-image-cut-and-optimize-skill/

http://www.mangguo.org/css-foreground-image-merge-technology/

标签:none,9px,合并,css,5px,position,Sprites,CSS,图片
From: https://blog.51cto.com/u_873039/6263079

相关文章

  • ffmpeg合并视频
    先下载个ffmpeg命令行:ffmpeg-fconcat-ifilelist.txt-ccopyout\new.mp4filelis.txt与ffmpeg.exe同一目录, 内容如下:file'F:\Download\【日剧_11集全】\1.EP01-1_Av438702220_P1_.mp4'file'F:\Download\【日剧_11集全】\2.EP01-2_Av438702220_P2_.mp4'file�......
  • CSS font文字
    5.1文字常用属性-font-family:字体类型-注意事项:-1)英文(只改变英文)中文(中、英文都改变)-2)设置多个值时,根据客户端有的字体依次满足(前面优先级更高)-3)设置的值中间有空格时,加''(单引号)-font-size:字体大小,默认16px-字母、数字-注意事项:-1)字体大小一般为偶数......
  • html css 等比例缩放
    来自:https://blog.csdn.net/chenrui310/article/details/129365208侵删letcw=1920,ch=1080//默认letbody=document.getElementById('body')body.style.width=`${cw}px`body.style.height=`${ch}px`//对bo......
  • CSS 3种引入方式
    1.1内联样式-用style属性1.2内部样式-用<style>标签1.3外部样式-(1)用<link>标签-(2)在<style>标签中使用@import(不推荐)-不推荐原因:-link标签内使用src引入css文件,浏览器会将其标记为css文件进行异步下载,并继续向下执行。-而@import引入css文件会待文件下载完......
  • 利用css var函数让你的组件样式输出规范样式API,可定制性更高;
    我们平时在使用ElementuiAntdesing这些UI库时,难免会碰到使用deep强行侵入式去修改组件内部样式的情况; 比如下列代码,我们需要把ant的分页样式进行高度自定义,就得使用deep去修改; 这种实现方式确实能够达到我们的目的,但在开发时确总觉得不太合适:1、他属于强行入侵组件内部去......
  • STATA 按STKCD YEAR 合并所有的kamd
    uselinshi0510,clearbysstkcdyear:genbz=_nlocalk=_Nlocalaa""localbb""localdd""genbzz=""formatbzz%200sforvaluesi=1/`k'{localaa=stkcd[`i']localbb=year[`i']ifbz[`i&......
  • CSS学习1 认识CSS;三种CSS的编写样式;CSS注释;常见的CSS样式;元素link;CSS颜色表示方法;浏览
    1_认识CSSwhat:为网页添加样式(美化界面);一门样式表语言,不是编程语言发展历史css1(两个人合作发布)css2(w3c)css3(模块化持续发展中)总结:美化HTML,让HTML与CSS分离方式一:添加样式,例如颜色、字体,大小方式二:布局,按照某种结构显示2_三种CSS的编写样式声明:例如【color:red......
  • 56. 合并区间
    以数组intervals表示若干个区间的集合,其中单个区间为intervals[i]=[starti,endi]。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。输入:intervals=[[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间[1,3]和......
  • C# .Net Core 合并PDF文件
    使用PdfSharpCorenuget包代码实现usingMicrosoft.AspNetCore.Razor.TagHelpers;usingPdfSharpCore.Pdf;usingPdfSharpCore.Pdf.IO;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace......
  • linux下拆分PDF、批量裁剪图片及合并为PDF操作
    好久不碰代码,文件操作啥的快忘光了(你丫本来就没怎么学吧!)我先放两串代码在这QAQ拆分PDFpdftoppm-png?.pdfs批量裁剪图片裁剪图片指令,这个指令是ImageMagick带的一个什么东西,单位电脑能装convertsrc.png-crop长x高+起始像素点横坐标+起始像素低纵坐标dest.png然后......