理解CSS|青训营笔记

102 阅读3分钟

层叠、优先级

层叠三大规则:

  1. 样式表来源
  2. 选择器优先级‘
  3. 源码位置

优先级程度递减

样式表来源重要排序

  1. 用户代理样式(浏览器默认样式)
  2. 用户样式表(很少有)
  3. 作者样式表(开发人员)
  4. 作者样式表中 !important
  5. 用户样式表中!important
  6. 用户代理样式中!important

重要程度递增

注:

  • 选择器尽量少用id
  • 尽量不要用!important
  • 自己的样式加载在引用库样式后面

继承

可以使用inherit关键字显示指定一个属性值从其父元素继承

布局

任意盒子的display:

  • 外部显示类型:规定了该合资如何与同一格式上下文中的其他元素一起显示
  • 内部显示类型:规定了该盒子内部的布局方式,例:display:flex;外部显示block参与bfc,display“inline-flex,外部显示inline,参与ifc。他们的内部的盒子都参与弹性和布局

网格布局

元素可以只占其中的一个单元格,也可以站多个单元格

定位Position

sticky:

元素相对他的最近滚动祖先(祖先的overflow是scroll/hidden/auto)的视口(scrollport)定位

层叠上下文

形成新的层叠上下文的条件(任一即可):

  • position:reletive或absolute;并且z-index不是auto
  • position:fixed或sticky
  • flex或grid的子元素;并且z-index不是auto
  • opacity的值小于1
  • transform的值不为none
  • will-change的值不为通用值

stacking order:

  • z-index只在同一个层叠上下文内比较
  • 子元素的z-index无法超越父元素的z-index显示顺序

编写z-index的建议:

  • 使用css变量或者预处理语言的变量,管理z-index的值
  • 将预设间隔设置10或100,方便后续插入

响应式设计

遵循的原则:

  • 优先使用流式布局,如百分比,flex,grid等
  • 使用响应式图片,匹配尺寸,节省带宽
  • 使用媒体查询为不同设备类型做适配
  • 给移动端设置简单、统一的视口
  • 使用相对长度,em,rem,vm作为长度度量

媒体查询

允许某些样式只在页面满足特定条件时才生效,我们可以将媒体类型(如screen、print)以及媒体特性(如视口宽度、屏幕比例、设备方向:横向或纵向)作为约束条件

DPI&&PPI

dpi:每英寸多少点

ppi:每英寸多少像素

当用于描述显示器设备时ppi和dpi是同一个概念,说的是每英寸多少物理像素及显示器设备的点距

css像素

参考像素,其实是一个视角单位,规范给出的定义是,1css像素是从一臂之遥看解析度为96DPI(即一英寸96点)的设备输出时,1点(即1/96英寸)的视角

DPR设备像素比

未放缩状态下,设备像素和css像素的初识比例关系

DPR=设备像素/CSS像素

移动端的viewport

常见的移动端viewport的设置:

  • 保持scale为1:meta标签中,content:"width=device-width,initial-scale=1"

好处:在所有设备是不管横屏还是竖屏,让布局视口的宽度和设备屏幕的宽度保持一致,且参考像素不放缩

缺:若设备的dpr>1,那么想要画出一个设备像素粗细的线,需要其他方法实现

  • 保持scale放缩参数是1/dpr:meta标签中,content:"maximum-scale=1/window.devicePixelRation,minimum-scale=1/window.devicePixelRation,initial-scale=1/window.devicePixelRation,user-scalable=no"

好处:1个csspx等于一个设备像素,全局层面解决“真实1像素”问题

缺:不同设备想达到1个csspx严格等于一个设备像素,需要处理兼容性才能达到。而且全局等比放缩,多某些固定尺寸需要特殊处理。