精灵图

  • 精灵图已关闭评论
  • 108 次浏览
  • A+
所属分类:Web前端
摘要

一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。


1. 精灵图

1.1 为什么需要精灵图

一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。

因此,为了有效地减少服务器接受和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术。

核心原理:将网页中的一些小背景图像整合到一张大图中,这样服务器只需要一次请求就可以了。

1.2 精灵图(sprites)的使用

使用精灵图核心:

1. 精灵图技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中。

2. 这个大图片也称为sprites精灵图或者雪碧图。

3. 移动背景图片位置,此时可以使用background-position

4. 移动的距离就是这个目标图片的xy坐标。注意网页中的坐标有所不同。

5. 因为一般情况下都是往上往左移动,所以数值是负值。

6. 使用精灵图的时候需要精确测量,每个小背景图片的大小和位置。

2. 字体图标

2.1 字体图标的产生

字体图标使用场景:主要用于显示网页中通用、常用的一些小图标。

精灵图是有诸多优点的,但是缺点很明显。

1. 图片文件还是比较大的。

2. 图片本身放大和缩小会失真。

3. 一旦图片制作完毕想要更换非常复杂。

此时,有一种技术的出现很好的解决了以上问题,就是字体图标iconfont

字体图标可以提供一种方便高效的图标使用方式,展示的是图标,本质属于字体

2.2 字体图标的优点

轻量级:一个图标字体要比一系类的图像小。一旦字体加载,图标就会马上渲染出来,减少了服务器请求。

灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等。

兼容性:几乎支持所有浏览器。

注意:字体图标不能代替精灵技术,只是对工作中图标部分技术的提升和优化。

总结:

1. 如果遇到一些结构和样式比较简单的小图标,就用字体图标。

2. 如果遇到一些结构和样式复杂一点的小图片,就用精灵图。

2.3 字体图标的下载

推荐下载网站:

icomoon字库 http://icomoon.io

阿里iconfont字库 http://www.iconfont.cn/

2.4 字体图标的引入

2.4.1 字体文件格式

不同浏览器所支持的字体格式是不一样的,字体图标之所以兼容,就是因为包含了主流浏览器支持的字体文件。

2.4.2 字体文件字体

在CSS样式中全局声明字体:简单理解把这些字体文件通过CSS引入到我们页面中。

一定注意字体文件路径的问题。 

@font-face{

font-family: 'icomoon';

src: url('fonts/icomoon.eot?7kkyc2');

src: url(fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),

  url('fonts/icomoon.ttf?7kkyc2') format('truetype'),

  url('fonts/icomoon.woff?7kkyc2y') format('woff'),

  url(fonts/icomoon.svq?7kkyc2#icomoon') format('svg');

 font-weight:normal;

 font-style: normal;

 }

2.4.3 html标签内添加小图标

<span>< / span>

2.5 字体图标的追加

把压缩包里面的.json从新下载压缩包,并替换原来的文件即可。

3. CSS三角

div {

   width: 0;

   height: 0;

   line-height: 0;

   font-size: 0;

   border: 50px solid transparent;

   border-left-color: pink;

}

4. CSS用户界面样式

4.1 鼠标样式 cursor

li {cursor: pointer;}

设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。 

属性值

描述

default

小白默认。

pointer

小手。

move

移动。

text

文本。

not-allowed

禁止。

4.2 轮廓线 outline

给表单添加outline: 0; 或者outline: none;样式之后,就可以去掉默认的蓝色边框。

input {outline: none;}

4.3 防止拖拽文本域resize

textarea {resize: none;}

5. vertical-align属性应用

CSS的vertical-align属性使用场景:经常用于设置图片或者表单(行内块元素)和文字垂直对齐。

官方解释:用于设置一个元素的垂直对齐方式,但是它只针对于行内块元素有效。

语法: 

vertical-align: baseline | top | middle | bottom

 

描述

baseline

默认。元素放置在父元素的基线上。

top 

把元素的顶端与行中最高元素的顶端对齐。

middle

把此元素放置在父元素的中部。 

bottom

把元素的顶端与行中最低的元素的顶端对齐。 

5.1 图片、表单和文字对齐

图片、表单都属于行内块元素,默认的vertical-align是基线对齐

可以给图片、表单这些行内块元素的vertical-align属性设置为middle就可以让文字和图片垂直居中对齐。

5.2 解决图片底部默认空白缝隙问题

bug:图片底侧会有一个空白缝除,原因是行内块元素会和文字的基线对齐。
主要解决方法有两种:

1. 给图片添加vertical-align:micdle / topl bottom等。(提倡使用的)
2. 把图片转换为块级元素 display:block;

6. 溢出的文字省略号显示

6.1 单行文本溢出昱示省略号--必须满足三个条件

/*1.先强制一行内显示文本*/

white-space: nowzE

/*2.超出的部分隐藏*/

overflow: hidden;

/*3.文字用省略号替代超出的部分大*/

text-overflow: ellipsis;

6.2 多行文本溢出昱示省略号

多行文本溢出显示省略号,有较大兼容性问题,适合于webKit刘览器或移动端(移动端大部分是webkit内核)。

overflow: hidden;

text-overflow: ellipsis;

/*弹性伸缩盒子模型最示 */

display: -webkit-box;

/* 限制在一个块元素显示的文本的行数 */

-webkit-line-clamp : 2;

/*设置或检索伸缩盒对象的子元素的排列方式 */

-webkit-box-orient: vertical;

7. 常见布局技巧

7.1 argin负值运用 

1. 让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框

2. 鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有有定位,则加相对定位 (保留位置),如果有定位,则加z-index)。

7.2 CSS 三角强化

代码:

width: 0;

height: 0;

border-colg: transparent red transparent transparent;

border-style: solid;

border-width: 22px 8px 0 0;

8. CSS初始化

不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,我们需要对CSS初始化,简单理解:CSS初始化是指重设浏览器的样式(也称为CSS reset)。

每个网页都必须首先进行CSS初始化。

Unicode编码字体:

把中文字体的名称用相应的Unicode编码来代替,这样就可以有效避免浏览器解释CSS代码时候出现乱码的问题。