Blog

常见知识归纳

目录

1. 盒子模型
2. css 选择器
3. css 三大特性
4. css 字体
5. pointer events
6. css reset
7. @viewport
8. 使用 rem 代替 px 没有必要替换,看使用场景 9. 百分比相对属性

1 盒子模型

w3c: content, padding, border, margin

ie: content, margin, 其中 content 包含了 padding 和 border

2 css 选择器

深入css-选择器及权重

3 css 三大特性

继承、层叠性、权重

3.1 继承

什么是继承?哪些样式可以继承?哪些样式不可以继承?

继承:父节点具有某些属性样式,子节点没有设置这个样式,却能够表现出跟父节点相同的这个样式

虽说是经验之谈,但是我可以通过 chrome devtool 查看,在 Elements 下,查看 Styles,可以查看到选中节点的样式,其中有一栏 Inherited from,这里可以用于测试那些样式可以继承

可以继承的样式:

  1. font-size font-family (font 系列)
  2. color
  3. text-align text-decoration (text 系列)
  4. line-height

不可继承的样式: width padding border margin height

3.2 权重

指一个节点,如果有多个相同的样式设定,如果确定采用哪一个?

根据权重分配与计算,可以在 这里 看到权重的信息

3.3 层叠性

指同一个元素,可以设置多层样式,浏览器根据特定的层叠算法,计算出css样式对应的权重值,获胜的则应用到节点上。

4 css 字体

time: 2018.10.25

今天做一个展示型的网页,移动端展示,需要设置字体,以为在 pc 上跑出了效果,手机端就能展示相应的字体,其实不然。浏览器能展示这个字体,是因为宿主环境自带了这种字体,比如 windows 就有微软雅黑、宋体等,但是 iphone 就没有,iphone 自带的中文字体是 Heiti SC ,英文字体是 Helvetica

现在开始要处理字体、单位(px, rem)等 css 基本知识了,这里总结一下 css 字体。

基本原则

  1. 浏览器能显示的字体,需要电脑或手机带这种字体才行
  2. 使用 @font-face {} 引入字体
  3. 字体文件太大会影响性能

获取字体:访问 webfont-generator ,上传 ttf 字体,然后转换生成下载 woff 、 eot 文件, eot 是 ie 专属, woff 是其他主流浏览器都可以用的。

应用字体

@font-face {
  font-family: 'kaitiregular';
  src: url('../styles/simkai-webfont.woff2') format('woff2'),
       url('../styles/simkai-webfont.woff') format('woff');
  font-weight: normal;
  font-style: normal;
}

p {
  font-family: 'kaitiregular';
}

5 pointer events

time: 2018.11.06

最近做嵌套滚动时,出现了滚动联动问题,原因是 chrome 浏览器为 touchStart, touchMove 实现了事件默认 passive 值为 true 。
可以通过设置 passive 为 false 解决这个问题,也可以通过设置 touch-action 属性为 none 实现。

touch-action: css 属性。控制该元素如何响应用户操作。可选值有 auto, none, manipulation, pan-x 等,功能是可控制用户点击、缩放等操作。

pointer-events: 事件绑定参数控制。控制元素是否成为鼠标事件的 target 。可选值有 auto, none 等

判断是否是支持 touch:@media (any-hover: hover)

6 css reset

7 @viewport

time: 2018.12.29

谈到响应式设计,马上想到的是 css 属性 @viewport,但是浏览器支持不是很好,暂时不做学习

8 使用 rem 代替 px

css length 的单位,没有必要替换,看使用场景

8.1 相对长度单位

使用其它距离作为自己的单位,通常用于指定字符大小、行高、视窗大小

em, ex, rem, ch, lh, rlh

em: 表示获取元素的 font-size 计算值。如果用在 font-size 本身,则其继承父元素的 font-size ,最顶层会获取浏览器初始的 font-size 字体大小。

rem: 表示获取根元素 html 的 font-size 计算值。如果根元素没有具体的

8.2 视口比例的长度

比例长度,相对于视口的长度大小,视口即文档可视的部分。

vh, vw, vi, vb, vmin, vmax

8.3 绝对长度单位

px, mm, cm, in, pt, pc, mozmm

1in === 96px
3pt === 4px
25.4mm === 96px

8.4 为什么要用 rem 代替 px

相对长度单位,比如 em、rem ,被用于创建可伸缩布局,即使用户改变字体大小,页面布局也会保持一个自适应布局。

px 属于绝对长度单位,不能保持一个自使用布局变化。

px 也是一个相对单位,每个显示设备都会对 px 做一个适配,不同 dpi、ppi 都会对它做一个比例改变,用以保证在不同 dpi、ppi 设备上构建的页面,展示效果都一样

9. 百分比相对属性

padding, margin 相对于父级元素宽度;
line-height 相对于当前元素字号

参考文章

1 css 继承与层叠
2 mdn @viewport
3 知乎 2019 web 开发技术指南和趋势
4 mdn length 5 css 百分比