My Little World

关于css的一些事

1.CSS 选择器的优先级
!important
内联样式(1000)
id选择器(100)
类选择器(10)
元素选择器(1)

2.为兼容浏览器,对css基本样式做统一处理的三种方法
【reset】
消除浏览器默认样式,针对具体元素标签重写样式
【normalize】
样式规范确定的情况下,直接重写全部样式
【neat】
前两者结合,针对确定的样式直接重写,不确定的进行清除

3.css预处理语法工具需要具备的特性
可以变量声明和计算
支持语法表达式
可以定义函数进行处理
属性可以继承
可以自行实现autoprefix类似的兼容性补全功能

4.实现动画的6种方式
纯JS(利用setInternal,16ms)
svg(利用标签配置)
canvas(利用jsAPI配置)
css3-transition(过渡动画,不能独立实现动画)
css3-animation(纯css实现动画)
requestAnimationFrame(类似setInterval,但性能消耗低)
前两种兼容性良好,后四种适用于移动端

5.屏幕适配布局方案
想办法让比例不变
A.在html/body标签上加上zoom属性,缺点是不灵活
B.使用rem,相对于文档根元素font-size,
利用mediaQuery对常见几种屏幕宽度设置html的font-size
以font-size大小为1rem

6.响应式设计的两种方案
前端或者后端判断useragent来跳转不同站点得到不同页面
使用mediaQuery媒体查询让页面根据不同设备自动改变页面布局和显示

7.根据浏览器屏幕宽度和分辨率加载不同大小的图片
使用mediaQuery判断加载不同的背景图
使用H5的picture标签
模板进行判断然后渲染不同图片
请求图片时带上相关参数,让图片服务器吐出不同大小图片

table-layout: fixed; 妙用

具有滚动条的table表头和tbody分别用两个table实现时,在每列设置宽度的情况下,有时可能出现表头和tbody对不齐的情况,

这是因为table默认情况下,会按照表格内容进行列宽绘制,tbody和表头整个宽度是一样宽的,而tbody有滚动条宽度,表头没有滚动条,就会导致列对不上了
解决办法:

  1. 给table设置 table-layout: fixed;让table按照设置的列宽进行绘制
    .xxx-table {
    table-layout: fixed;
    }
  2. 不让所有的列都有具体的宽度,让某一列不设置宽度