1. CSS优化方法
- 避免过度约束
- 避免后代选择符
- 避免链式选择符
- 使用紧凑的语法
- 避免不必要的命名空间
- 避免不必要的重复
- 最好使用表示语义的名字。
- 避免!important,可以选择其他选择器
- 尽可能的精简规则,合并不同类里的重复规则
2. css sprite 是什么? 有什么优缺点
1. 概念:
将多个小图片拼接到一个图片中。通过 background-position 和元素尺寸调节需要显示的背景图案。
其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“
background-image
”,“background- repeat
”,“background-position
”的组合进行背景定位,background-position
可以用数字能精确的定位出背景图片的位置。这样可以减少很多图片请求的开销,因为请求耗时比较长;请求虽然可以并发,但是也有限制,一般浏览器都是6个。对于未来而言,就不需要这样做了,因为有了http2。
2. 优点:
- 减少 HTTP 请求数,极大地提高页面加载速度。
- 增加图片信息重复度,提高压缩比,减少图片大小。
- 更换风格方便,只需在一张或几张图片上修改颜色或样式即可实现。
3. 缺点:
- 图片合并麻烦。
- 维护麻烦,修改一个图片可能需要从新布局整个图片,样式。
3. 如何垂直居中一个元素?
方法一:绝对定位居中(原始版之已知元素的高宽)
.content {
width: 100px;
height: 100px;
background-color: #6600ff;
position: absolute;
/*父元素需要相对定位*/
top: 50%;
left: 50%;
margin-top: -50px;
/*设为高度的1/2*/
margin-left: -50px;
/*设为宽度的1/2*/
}
方法二:flex 布局居中
body {
display: flex;
/*设置外层盒子display为flex*/
align-items: center;
/*设置内层盒子的垂直居中*/
justify-content: center;
/*设置内层盒子的水平居中*/
.content {
width: 100px;
height: 100px;
background-color: #6600ff;
}
}
方法三:绝对定位居中(改进版之二未知元素的高宽)
.content {
width: 100px;
height: 100px;
background-color: #6600ff;
margin: auto;
/*很关键的一步*/
position: absolute;
/*父元素需要相对定位*/
left: 0;
top: 0;
right: 0;
bottom: 0;
/*让四个定位属性都为0*/
}
方法四:绝对定位居中(改进版之一未知元素的高宽)
.content {
width: 100px;
height: 100px;
background-color: #6600ff;
position: absolute;
/*父元素需要相对定位*/
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
/*在水平和垂直方向上各偏移-50%*/
}
4. li 与 li 之间看不见的空白间隔是什么原因引起的?解决办法是?
浏览器的默认行为是把 inline 元素间的空白字符(空格换行 tab)渲染成一个空格,也就是我们上面的代码
<li>
换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度。
解决方案:
方法一:既然是因为 <li>
换行导致的,那就可以将<li>
代码全部写在一排,如下
<div class="wrap">
<h3>li标签空白测试</h3>
<ul>
<li class="part1"></li>
<li class="part2"></li>
<li class="part3"></li>
<li class="part4"></li>
</ul>
</div>
方法二:为了代码美观以及方便修改,不可能将 <li>
全部写在一排,空格占一个字符的宽度,直接将<ul>
内的字符尺寸设为 0,将下面样式放入样式表,就可以解决了.,但是<ul>
中的其他文字就不见了,因为其尺寸被设为 0px ,只能重新设定字符尺寸。
.box ul {
font-size: 0px;
}
方法三:将 li 父级标签字符设置为 0 在 Safari 浏览器依旧出现间隔空白;将下面代码替换方法二的代码,目前看来可以解决。但 li 内的字符间隔也会被设置,需要将 li 内的字符间隔设为默认。
.wrap ul {
letter-spacing: -5px;
}
设置 li 内字符间隔
.wrap ul li {
letter-spacing: normal;
}
5. PNG, GIF, JPG 的区别及如何选
-
GIF:
- 256 色
- 无损,编辑 保存时候,不会损失。
- 支持简单动画。
- 支持 boolean 透明,完全透明/不透明
-
JPEG:
- millions of colors
- 有损压缩, 意味着每次编辑都会失去质量。
- 不支持透明。
- 适合照片,实际上很多相机使用的都是这个格式。
-
PNG:
- 无损,其实 PNG 有好几种格式的,一般分为两类:PNG8 和 truecolor PNGs;
与 GIF 相比:
- 它通常会产生较小的文件大小。
- 它支持阿尔法(变量)透明度。
- 无动画支持
与 JPEG 相比:
- 无损
- 文件更大
- 因此可以作为 JPEG 图片中间编辑的中转格式。
结论:文章来源:https://www.toymoban.com/news/detail-515558.html
- JPEG 适合照片
- GIF 适合动画
- PNG 适合其他任何种类—图表,buttons,背景,图表等。
6. 行内元素 float:left 后是否变为块级元素?
行内元素设置成浮动之后变得像 inline-block
行内块级元素,设置成这个属性的元素会同时拥有行内和块级的特性,最明显的不同是它的默认宽度不是 100%,行内元素默认 100%宽度占据一行
给行内元素设置padding-top
和padding-bottom
或者width、heigh
t即可文章来源地址https://www.toymoban.com/news/detail-515558.html
到了这里,关于CSS知识点汇总(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!