深入CSS

深入CSS

360前端星计划-第三课
主讲:赵文博老师

选择器的优先级=》特异度(Specificity)

在这里插入图片描述

<button class="btn">普通按钮</button>
<button class="btn primary">主要按钮</button>
<style>
  .btn {
    display: inline-block;
    padding: .36em .8em;
    margin-right: .5em;
    line-height: 1.5;
    text-align: center;
    cursor: pointer;
    border-radius: .3em;
    border: none;
    background: #e6e6e6;
    color: #333;
  }
  .btn.primary {
    color: #fff;
    background: #218de6;
  }
</style>

在这里插入图片描述

继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值

<p>
  This is a <em>test</em> of
  <strong>inherit</strong>
</p>

<style>
  body {
    font-size: 20px;
  }
  p {
    color: blue;
  }
  em {
    color: red;
  }
</style>

在这里插入图片描述
显式继承

* {
  box-sizing: inherit;
}

html {
  box-sizing: border-box;
}

.some-widget {
  box-sizing: content-box;
}

初始值

  • CSS 中,每个属性都有一个初始值
    background-color 的初始值为 transparent
    margin-left 的初始值为 0
  • 可以使用 initial 关键字显式重置为初始值
    background-color: initial

CSS 求值过程

在这里插入图片描述

布局(Layout)

在这里插入图片描述

布局相关技术

在这里插入图片描述

盒模型

在这里插入图片描述
width

  • 指定 content box 宽度
  • 取值为长度、百分数、auto
  • auto 由浏览器根据其它属性确定
  • 百分数相对于容器的 content box 宽度

height

  • 指定 content box 高度
  • 取值为长度、百分数、auto
  • auto 取值由内容计算得来
  • 百分数相对于容器的 content box 高度
  • 容器有指定的高度时,百分数才生效

padding

  • 指定元素四个方向的内边距
  • 百分数相对于容器宽度

border

  • 指定容器边框样式、粗细和颜色​​​​​​​

margin

  • 指定元素四个方向的外边距
  • 取值可以是长度、百分数、auto
  • 百分数相对于容器宽度

块级 vs. 行级

在这里插入图片描述

块级元素与行级元素

在这里插入图片描述

display

  • block 块级盒子
  • inline 行级盒子
  • inline-block 本身是行级,可以放在行盒中;可以设置宽高;作为 一个整体不会被拆散成多行
  • none 排版时完全被忽略

常规流 Normal Flow

  • 根元素、浮动和绝对定位的元素会脱离常规流
  • 其它元素都在常规流之内(in-flow)
  • 常规流中的盒子,在某种排版上下文中参与布局
    在这里插入图片描述

行级排版上下文

  • Inline Formatting Context (IFC)
  • 只包含行级盒子的容器会创建一个IFC
  • IFC 内的排版规则
    盒子在一行内水平摆放
    一行放不下时,换行显示
    text-align 决定一行内盒子的水平对齐
    vertical-align 决定一个盒子在行内的垂直对齐
    避开浮动(float)元素

块级排版上下文

  • Block Formatting Context (BFC)
  • 某些容器会创建一个BFC
    根元素
    浮动、绝对定位、inline-block
    Flex子项和Grid子项
    overflow 值不是 visible 的块盒
  • BFC 内的排版规则
  • 盒子从上到下摆放
  • 垂直 margin 合并 BFC 内盒子的margin不会与外面的合并
  • BFC 不会和浮动元素重叠

Flex Box

  • 一种新的排版上下文
  • 它可以控制子级盒子的:
    摆放的流向 ( → ← ↑ ↓ )
    摆放顺序
    盒子宽度和高度
    水平和垂直方向的对齐
    是否允许折行
  • display: flex
    display: flex 使元素生成一个块级的 Flex 容器
    display: inline-flex 使元素生成一个行级的 Flex 容器

Grid 布局

  • display: grid 使元素生成一个块级的 Grid 容器
  • 使用 grid-template 相关属性将容器划分为网格
  • 设置每一个子项占哪些行/列

浮动

position 属性

  • static 默认值,非定位元素
  • relative 相对自身原本位置偏移,不脱离文档流
    在常规流里面布局
    相对于自己本应该在的位置进行偏移
    使用 top、left、bottom、right 设置偏移长度
    流内其它元素当它没有偏移一样布局
  • absolute 绝对定位,相对非 static 祖先元素定位
    脱离常规流
    相对于最近的非 static 祖先定位
    不会对流内元素布局造成影响
  • fixed 相对于视口绝对定位
    相对于 Viewport 定位
    不会随面滚动发生位置变化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值