CSS与CSS3总结 

164 阅读3分钟

浏览器渲染原理

浏览器有专门的渲染引擎,完成渲染工作。

当一个第一次渲染的时候会经历

  1. 构建HTML树(DOM)
  2. 构建CSS树
  3. 合并render tree(渲染树)
  4. layout(布局页面)
  5. paint(绘制页面)
  6. compose(合成)
  • 当我们用javascript调整结构时,不同的操作方式,因引发页面不同的调整方式,并不是将所有操作都是将渲染操作重新来过

CSS基础

  • 最广泛的CSS版本是2.1,目前最新是CSS3,它是模块化升级。
  • block inline-block inline在最新的css中,已经可以使用display来更换任意元素的属性
  • 块级元素的margin合并问题:
  1. 其子元素之间外边距会合并
  2. 首尾的子元素外边距会与父元素合并
  3. 只会上下合并、不会左右合并
  4. 可以使用

css布局

  1. float: 较老的布局方式,优点是兼容型比较好,IE都可以使用
  • 父元素:
.clearfix{
    content: '';
    display: block;
    clear: both;
}
  • 子元素:float + width
  1. flex: 目前最新的布局方式,布局方式更灵活,方便
  • 父元素: display: flex;
  • 子元素
flex-direaction: row/row-reverse/column/column-reverse;
flex-wrap: wrap/nowrap;
justify-content: start/end/center/space-around/space-between;
items-content: start/center/space-around/space-between;
flex: order shrink basis;
align-items: center/start/end;
align-self: auto/normal/center/start/end;
  1. grid: 未来的布局方式,布局更加容易,目前兼容性不好
  • 父元素: display: grid;
  • 子元素
grid-column-start:
grid-column-end:
grid-row-start:
grid-row-end:
grid-area:
order:
grid-template-columns:
grid-template-rows:

层叠上下文

一个div元素的层级从下到上依次是:bankground > border > block(children) > float > inline-block(children content)

  1. 最初它们都在html上层叠
  2. 定位元素在最上面
  3. 当使用了以下属性时,会产生新的层叠:
  • z-index: 0;
  • flex:
  • opacity:
  • transform:

定位

  1. position用于指定一个元素在文档中的定位方式
position: static; //默认值
position: revlative; //相对定位
position: absolute; //绝对定位(相对于又相对定位的父级元素)
position: fixed; //绝对定位(相对视口)
position: sticky; //黏性定位

css动画

  1. transform可以实现旋转、缩放、倾斜或平移给定元素
transform: translate(); //位移
transform: scale(); //缩放
transform: rotate(); //旋转
  1. transition可以实现一个元素在不同状态之间切换的时候定义不同的过渡效果;它是 transition-propertytransition-durationtransition-timing-functiontransition-delay 的一个简写属性。
transition-property: //应用过渡属性的名称
transition-duration: //过渡所需时间
transition-timing-fucntion: //过渡变化方式
transition-delay: //过渡延迟时间
  1. animation可以实现指定一组或多组动画;它是animation-nameanimation-duration, animation-timing-functionanimation-delayanimation-iteration-countanimation-directionanimation-fill-modeanimation-play-state 属性的一个简写属性形式。
animation-name: //动画名称
animation-duration: //动画时长
animation-timing-function: //动画节奏
animation-delay: // 动画延迟开始的时间
animation-iteration-count: //循环次数
animation-direction: //是否反向播放
animation-fill-mode: //动画完成前后应使用什么样式
animation-play-state: //动画运行或暂停的状态

示例:

animation:name 3s ease-in 1s infinite reverse;
@keyframes name{
  from{ transform: scale(1.0); }
  to{ transform: scale(1.5); }
}