精灵图(CSS Sprites)
一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。
因此,为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术
核心原理:
将网页中的一些小背景图像整合到一张大图中,这样服务器只需要一次请求就可以了
精灵图的使用
1.精灵技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中
2.这个大图片也称为sprites 精灵图或雪碧图
3.移动背景图片位置,使用的是 background-position
4.移动的距离就是这个目标图片的x y坐标。(往上往左都是负值)
5.使用精灵图时需要精确测量每个背景图片的大小位置
精灵图缺陷:
1.图片文件比较大
2.图片本身放大缩小会失真
3.一旦图片制作完毕想要更换非常复杂
字体图标(iconfont)
字体图标是一种高效的图标使用方式,展示的是图标,本质是字体
使用场景:
主要用于显示网页中通用的、常用的一些小图标
优点:
轻量级:一个图标字体比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来减少了服务器请求
灵活性: 本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转稍等
兼容性:几乎所有浏览器都支持
注:字体图标只是对工作中图标部分技术的提升和优化
因此:
结构和样式比较简单的小图标就用字体图标
结构和样式比较复杂点的小图片就用精灵图
字体图标的引入(icomoon)
1.把下载包里的fonts文件夹放到页面的根目录下
2.在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?7kkyc2") format (" woff"),
url(" fonts/icomoon.svg?7kkyc2#icomoon") format ("svg");
font-weight: normal;
font-style: normal;
font-display: b lock;
}
1
2
3
4
5
6
7
8
9
10
11
3.在fonts文件夹里打开html文件添加小图标
4.指定字体(span{font-family: “icomoon”;})
字体图标的追加
如果原来的字体图标不够用,需要添加新的字体图标到原来的字体文件中
把压缩包里面的selection.json从新上传,然后选中自己想要新的图标,从新下载压缩包,并替换原来的文件即可。
CSS三角制作
网页中常见一些三角形,使用CSS就可以直接画出来
div {
width: 0;
height: 0;
line-height: 0;
font-size: 0;
border: 10px solid transparent;
border-left-color: #000;
}
CSS用户界面样式
鼠标样式 cursor
设置或检索在对象上移动的鼠标指针采用某种系统预定的光标形状
li{ cursor: pointer;}
属性值 描述
轮廓线-outline
给表单添加 outline:0; 或者 outline:none;就可以去掉默认的蓝色边框
input {outline: none; }
1
防拖拽文本域-resize
textarea {resize:none;}
1
vertical-align 属性
用于设置一个元素的垂直对齐方式,但是只针对于行内元素或者行内块元素。经常用于设置图片或者表单和文字垂直对齐
vertical-align : baseline | top | middle | bottom
1
值 描述
baseline 默认 元素放置在父元素的基线上
top 把元素的顶端与行中最高元素的顶端对齐
middle 把此元素放置在父元素的中部
bottom 把元素的顶端与行中最低的元素的顶端对齐
解决图片底部默认空白缝隙问题
bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐
主要解决方法:
给图片添加 vertical-align: middle | top | bottom 等
把图片转换为块级元素: display :block
溢出的文字用省略号显示
1.单行文本溢出显示省略号
div {
/* 这个单词的意思是如果文字显示不开就自动换行 /
white-space: normal;
/ 1.这个单词的意思是如果文字显示不开,也必须强制一行内显示 /
white-space: nowrap;
/ 2.溢出的部分隐藏 /
overflow: hidden;
/ 3.文字溢出的时候用省略号来显示 */
text-overflow: ellipsis;
}
2.多行文本溢出显示省略号
多行文本溢出显示省略号,有较大的兼容性问题,适合于webkit浏览器或移动端(移动端大部分是webkit内核)当作了解
div {
overflow: hidden;
text-overflow: ellipsis;
/* 弹性伸缩盒子模型显示 /
display: -webkit-box;
/ 限制在一个块元素显示的文本的行数 /
-webkit-line-clamp: num (写多少就是第几行) ;
/ 设置或检索伸缩盒对象的子元素的排列方式 */
-webkit-box-orient: vertical;
}
布局技巧
1.margin负值的应用
要求:
相邻盒子重叠边框不变,鼠标经过某个盒子四个边框显示另外的颜色
解决:
让每个盒子margin往左侧移动 -1px 正好压住相邻盒子边框
鼠标经过某个盒子时,提高盒子的层级
ul li {
float: left;
width: 150px;
height: 200px;
border: 1px solid red;
margin-left: -1px;
}
ul li:hover {
/* 1.如果盒子没有定位 则鼠标经过添加相对定位即可 /
position: relative;
border: 1px solid pink;
}
/........................................................................./
ul li {
position: relative;
float: left;
width: 150px;
height: 200px;
border: 1px solid red;
margin-left: -1px;
}
ul li:hover {
/ 2.如果li都有定位,则利用z-index提高层级 */
z-index: 1;
border: 1px solid pink;
}
2.文字围绕浮动元素
浮动元素不会压住文字
3.巧用行内块元素
可以利用行内块元素性质做…
在这里插入图片描述
CSS直角三角形
.box {
width: 0;
height: 0;
border-color: transparent red transparent transparent;
border-style: solid;
border-width: 100px 50px 0 0;
}
CSS初始化
不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对html文本呈现的差异,照顾浏览器的兼容性,需要对CSS初始化(重设浏览器样式)
比如把中文字体转换成相应的Unicode编码 避免乱码