CSS高级技巧
精灵图(精灵技术)
- 为什么?
目的:有效减少服务器接受和发送请求的次数,提高页面的加载速度
核心原理:将网页中的一些小背景图像整合到一张大图中,这样服务器只需要请求一次
2. 精灵图(sprites)的使用
核心:
① 主要针对背景图片使用,这个大图片也叫雪碧图
② 移动背景图片位置,可以使用background-position,移动的距离就是x和y的坐标(右下正左上负,一般情况都是负值)
字体图标iconfont
精灵图缺点:
① 图片文件大
② 图片本身放大缩小会失真
③ 一旦图片制作完毕更换很复杂
字体图标(iconfont)可解决以上问题,字体图标展示的是图标,本质上属于字体
字体图标优点:
① 轻量级 ② 灵活性 ③兼容性强
总结:结构和样式简单的用字体图标
-
字体图标下载
网站:
-
字体图标引用
字体文件格式:
引入代码:
放在style标签中
先新建font文件夹用来存放下载的图标,再引入以下代码,一定要设置字体font-family:‘iconmoon’;
@font-face {
font-family: 'icomoon';
src: url('fonts/icomoon.eot?p4ssmb');
src: url('fonts/icomoon.eot?p4ssmb#iefix') format('embedded-opentype'),
url('fonts/icomoon.ttf?p4ssmb') format('truetype'),
url('fonts/icomoon.woff?p4ssmb') format('woff'),
url('fonts/icomoon.svg?p4ssmb#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
- 字体图标的追加
CSS三角
语法格式:
div {
width: 0;
height: 0;
line-height: 0;
font-size: 0;
border: 50px solid transparent;
border-left-color: pink;
}
CSS用户界面样式
- 什么是界面样式
所谓的界面样式,就是更改一些用户操作样式,以便提高更好的用户体验。
- 更改用户的鼠标样式
- 表单轮廓
- 防止表单域拖拽
- 鼠标样式
li {
cursor: pointer;
}
- 轮廓线
input {
outline: none;
}
- 防止拖拽文本域
textarea{
resize: none;
}
vertical-align属性应用
CSS 的 vertical-align 属性使用场景: 经常用于设置图片或者表单(行内块元素)和文字垂直对齐。
官方解释: 用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。
语法:
vertical-align : baseline | top | middle | bottom
溢出的文字省略号显示
- 单行文本溢出显示省略号
单行文本溢出显示省略号必须满足三个条件:
/*1. 先强制一行内显示文本*/
white-space: nowrap; ( 默认 normal 自动换行)
/*2. 超出的部分隐藏*/
overflow: hidden;
/*3. 文字用省略号替代超出的部分*/
text-overflow: ellipsis;
- 多行文本溢出显示省略号(了解即可)
多行文本溢出显示省略号,有较大兼容性问题,适合webkit浏览器或移动端(移动端大部分是webkit内核)
/*1. 超出的部分隐藏 */
overflow: hidden;
/*2. 文字用省略号替代超出的部分 */
text-overflow: ellipsis;
/* 3. 弹性伸缩盒子模型显示 */
display: -webkit-box;
/* 4. 限制在一个块元素显示的文本的行数 */
-webkit-line-clamp: 2;
/* 5. 设置或检索伸缩盒对象的子元素的排列方式 */
-webkit-box-orient: vertical;
常见布局技巧
- margin负值运用
1.让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框
2.鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有有定位,则加相对定位(保留位置),如果有定位,则加z-index)
2. 文字围绕浮动元素
3. 、行内块巧妙运用
4. CSS初始化
不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,我们需要对CSS 初始化
简单理解: CSS初始化是指重设浏览器的样式。 (也称为CSS reset)
每个网页都必须首先进行 CSS初始化。