前端 - CSS扩展
目录CSS文档
- 精灵图
- 精灵图原理
- 精灵图使用
- 字体图标
- 下载字体图标
- 三角
- 对话框
- 用户界面样式
- 鼠标样式
- 表单
- 轮廓线outline
- 防拖拽
- vertical-align属性
- 图片底部默认空白缝隙问题
- 溢出文字省略号显示
- 单行文本溢出
- 多行文本溢出
- 常见布局技巧
- margin负值去除边框叠加效果
- 文字围绕浮动元素
- 行内块页码
- 直角三角形
- CSS初始化
精灵图
核心原理是将网页中的一些小背景图整合成一张大图,这样可以有效减少服务器接收和发送请求的次数,提高页面加载速度。
精灵图原理
- 精灵图主要针对背景图片使用,就是把多个小背景图片整合到一张大图,这个大图被称为精灵图(sprites)
- 使用
background-position移动背景图片位置 - 移动的距离为目标图片的x和y坐标
- 一般情况下都是往上、往左移动,所以为负值
精灵图使用
例如王者荣耀精灵图(url: https://game.gtimg.cn/images/yxzj/web201706/images/comm/index.png)

该图片大小为403*600像素,如果需要取出其中的“下载游戏”,html文件为一个 效果如下: 字体图标主要用于显示网页中的一些小图标,不使用精灵图是因为: 字体图标本质上属于文字,其优点有: 将盒子大小设为0*0,通过改变边框的粗细和颜色就能实现三角的效果。 效果如下: 类似的,通过定位制作一个对话框。 效果如下: 使用 效果如下: 去掉表单中 使得表单中 CSS的 官方解释:用于设置一个元素的垂直对齐方式,但是只对行内元素或行内块元素有效。  图片默认是和baseline对齐的,4种值的显示效果如下所示: 由于图片默认和baseline对齐,图片底侧会有一个空白缝隙,例如: 效果如下: 解决方法有2种: 对于下面的例子: 显示效果如下,文字会自动换行: 想要让单行文字溢出用省略号显示,需要修改css文件: 效果如下: 多行文本溢出显示省略号可能有兼容性问题,只适用于webKit浏览器或移动端。 在一些情况下,我们希望去除盒子边框叠加的效果,例如下面的例子: 显示效果如下: 这时,可以把每个盒子向左移动边框粗细的距离,即为 当然,由于每个 如果想实现鼠标经过边框变色的效果,会发现除了最后一个盒子,其他盒子最右边的边都被压住了,此时分为2种情况。 如果 如果 通过浮动可以做出文字围绕浮动的效果,例子如下: 效果如下: 页码可以通过浮动,并添加margin实现,但是使用行内块更方便,因为能设置大小、有默认距离、能通过 效果如下: 效果如下 制作一个价格模块: 效果如下: 由于不同浏览器对标签的默认值是不同的,需要消除不同浏览器对HTML文本呈现的差异。div {
width: 240px;
height: 130px;
background: url(https://game.gtimg.cn/images/yxzj/web201706/images/comm/index.png) no-repeat 0 -218px;
}
字体图标
下载字体图标
三角
div {
width: 0;
height: 0;
border: 50px solid transparent;
border-bottom-color: skyblue;
}
对话框
.triangle {
position: relative;
width: 150px;
height: 200px;
margin: 100px auto;
background-color: skyblue;
}
.triangle span {
position: absolute;
/* 注意边框宽度为20px,则盒子宽度为40px */
/* 向上移动三角的高度 */
top: -40px;
/* 水平居中*/
left: 50%;
margin-left: -20px;
width: 0;
height: 0;
border: 20px solid transparent;
border-bottom-color: skyblue;
}
用户界面样式
鼠标样式
cursor属性设置:
属性值
描述
default默认
pointer手
move移动
text文本
not-allowed禁止
表单
轮廓线outline
标签默认的蓝色边框,outline: none;防拖拽
标签不可拖拽,resize: none;vertical-align属性
vertical-align属性经常用于经常用设置图片或者表单(行内块元素)和文字垂直对齐。
值
描述
baseline默认,元素放在父元素基线上
top把元素的顶端与行中最高元素顶端对齐
middle把此元素放在父元素的中部
bottom把元素的顶端与行中最低的元素的顶端对齐
basline abcdefghij
top abcdefghij
middle abcdefghij
bottom abcdefghij
图片底部默认空白缝隙问题
div {
border: 1px solid red;
}
vertical-align属性改为middle|top|bottomdisplay: block;溢出文字省略号显示
单行文本溢出
div {
width: 150px;
height: 100px;
background-color: skyblue;
}
通过使用 CSS 我们可以大大提升网页开发的工作效率!
div {
width: 150px;
height: 100px;
background-color: skyblue;
/* 1. 文本不进行自动换行,该值默认为noraml,即自动换行 */
white-space: nowrap;
/* 2. 将溢出的部分隐藏 */
overflow: hidden;
/* 3. 文本溢出的部分用省略号表示 */
text-overflow: ellipsis;
}
通过使用 CSS 我们可以大大提升网页开发的工作效率!
多行文本溢出
div {
width: 150px;
/* 1. 修改盒子高度为指定行数的高度,例如下面为4行,则大约为90px */
height: 90px;
background-color: skyblue;
/* 2. 隐藏溢出,并将文本溢出用省略号显示 */
overflow: hidden;
text-overflow: ellipsis;
/* 3. 弹性伸缩盒子模型显示 */
display: -webkit-box;
/* 4. 限制在一个块元素显示文本的行数为4行 */
-webkit-line-clamp: 4;
/* 5. 设置或检索伸缩盒对象子元素的排列方式 */
-webkit-box-orient: vertical;
}
常见布局技巧
margin负值去除边框叠加效果
.item {
float: left;
width: 100px;
height: 80px;
background-color: skyblue;
border: 3px solid black;
list-style: none;
}
标签添加margin-left: -3px;,显示效果如下:
标签都左移了3px,导致整个向左移动了3px。此时可以让整个右移3px,为其添加属性margin-left: 3px;
标签没有定位,则直接添加相对定位即可.item:hover {
position: relative;
border-color: orangered;
}
标签有定位,则需要提高z-index,注意该属性只有盒子使用定位时才有效.item:hover {
z-index: 1;
border-color: orangered;
}
文字围绕浮动元素
.bilibili {
width: 300px;
height: 100px;
background-color: skyblue;
padding: 5px;
}
.bilibili img {
float: left;
height: 100%;
margin-right: 5px;
}
哔哩哔哩招聘杭州同学,早10晚7,双休!
行内块页码
text-align方便地水平居中。
.box {
text-align: center;
font-size: 15px;
}
.box a,
.box button,
.box input {
display: inline-block;
height: 45px;
padding: 0 20px;
background-color: #f7f7f7;
border: 1px solid #ccc;
line-height: 45px;
text-decoration: none;
font-size: 15px;
color: #333;
}
.box input {
width: 45px;
padding: 0;
outline: none;
text-align: center;
}
.box .selected,
.box .elp {
background-color: #fff;
border: none;
}
<<上一页
1
2
3
4
5
...
>>下一页
到第
页
直角三角形
div {
height: 0;
width: 0;
float: left;
margin-right: 20px;
}
.triangle1 {
border-top: 100px solid skyblue;
border-left: 50px solid transparent;
}
.triangle2 {
border-top: 100px solid skyblue;
border-right: 50px solid transparent;
}
.triangle3 {
border-bottom: 100px solid skyblue;
border-left: 50px solid transparent;
}
.triangle4 {
border-bottom: 100px solid skyblue;
border-right: 50px solid transparent;
}
¥ 5088.00
.price {
margin: 0 auto;
width: 170px;
height: 24px;
border: 1px solid red;
line-height: 24px;
}
.price .new-price {
position: relative;
float: left;
width: 78px;
height: 100%;
text-align: center;
background-color: red;
color: #fff;
font-weight: 700;
}
.price .triangle {
position: absolute;
top: 0;
right: -12px;
width: 0;
height: 0;
border-top: 24px solid red;
border-right: 12px solid transparent;
}
.price .old-price {
float: right;
height: 40px;
color: #ccc;
}
¥ 1065.00
¥ 5088.00
CSS初始化
/* 消除所有标签的内外边距 */
* {
margin: 0;
padding:0
}
/* 斜体文字不倾斜 */
em, i {
font-style:normal
}
/* 去除li的圆点 */
li {
list-style:none
}
img {
border: 0; /* 照顾低版本浏览器如果图片外面包含了链接会有边框的问题 */
vertical-align:middle /* 取消图片底侧有空白缝隙的问题 */
}
/* 当鼠标经过button时,由指针变成手 */
button {
cursor:pointer
}
a {
color: #666;
text-decoration:none
}
a:hover {
color:#c81623
}
button, input {
font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif
}
body {
-webkit-font-smoothing: antialiased; /* 抗锯齿性 */
background-color: #fff;
font: 12px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
color:#666
}
.hide, .none {
display:none
}
/* 清除浮动 */
.clearfix:after {
visibility: hidden;
clear: both;
display: block;
content: ".";
height:0
}
.clearfix {
* zoom:1
}