CSS知识点汇总(四)--CSS优化方法&垂直居中&雪碧图

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 的区别及如何选

  1. GIF:

    • 256 色
    • 无损,编辑 保存时候,不会损失。
    • 支持简单动画。
    • 支持 boolean 透明,完全透明/不透明
  2. JPEG:

    • millions of colors
    • 有损压缩, 意味着每次编辑都会失去质量。
    • 不支持透明。
    • 适合照片,实际上很多相机使用的都是这个格式。
  3. PNG:

    • 无损,其实 PNG 有好几种格式的,一般分为两类:PNG8 和 truecolor PNGs;

    与 GIF 相比:

    • 它通常会产生较小的文件大小。
    • 它支持阿尔法(变量)透明度。
    • 无动画支持

    与 JPEG 相比:

    • 无损
    • 文件更大
    • 因此可以作为 JPEG 图片中间编辑的中转格式。

结论:

  • JPEG 适合照片
  • GIF 适合动画
  • PNG 适合其他任何种类—图表,buttons,背景,图表等。

6. 行内元素 float:left 后是否变为块级元素?

行内元素设置成浮动之后变得像 inline-block
行内块级元素,设置成这个属性的元素会同时拥有行内和块级的特性,最明显的不同是它的默认宽度不是 100%,行内元素默认 100%宽度占据一行
给行内元素设置 padding-top padding-bottom 或者 width、height即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值