字节跳动青训营--前端day2

文章目录

  • 前言
  • 一、css
    • 1. css的组成
    • 2. css三种使用方式
    • 3.css的工作方式
  • 二、 css选择器Selector
    • 1. 选择元素的方式
    • 2. 伪类(pseudo-classes)
      • 2.1 状态伪类
      • 2.1 结构伪类
    • 3.通过组合选择元素
      • 3.1 直接组合
      • 3.2 元素组合的拓展
    • 4. 选择器的特异度(Specificity)
    • 5. 样式覆盖
    • 6. 样式继承
      • 6.1 显式继承:
      • 6.2 初始值
    • 7. css求值过程
  • 三、css文档流(NormalFlow)
    • 1. css行级 & 块级
    • 2. diaplay 属性
    • 3. 行级排版上下文
      • 3.1 IFC 内的排版规则:
    • 4. 块级排版上下文
      • 4.1会创建一个BFC的容器
      • 4.2 BFC内的排版规则
  • 四、布局(Layout)
    • 1.布局相关技术
    • 2.常规盒模型
      • 2.1 width
      • 2.2 heigth
      • 2.3 padding
      • 2.4 boeder
      • 2.5 margin
    • 3. Flex Box
      • 3.1 他可以控制盒子的:
      • 3.2 Flexibility
    • 4. Grid
    • 5. float
    • 6. position属性
      • 6.1 position:relative
      • 6.2 position:absolute
  • 五、颜色
    • 1. RGB
    • 2. HSL
    • 3. 透明度


前言

仅以此文章记录学习历程


一、css

Cascading Style Sheets(用来定义页面元素的样式)

  • 设置字体和颜色
  • 设置位置和大小
  • 添加动画效果

1. css的组成

字节跳动青训营--前端day2_第1张图片

2. css三种使用方式

通常建议时用外链和嵌入式(主要是样式分离)
字节跳动青训营--前端day2_第2张图片

3.css的工作方式

字节跳动青训营--前端day2_第3张图片

二、 css选择器Selector

作用:找出页面中的元素,以便给他们设置样式

1. 选择元素的方式

  • 按照标签名(h1,div,p…)、类名class(.)或者id(#)
  • 按照属性
  • 按照DOM树中的位置

字节跳动青训营--前端day2_第4张图片
利用通配符匹配选择
字节跳动青训营--前端day2_第5张图片

2. 伪类(pseudo-classes)

定义:伪类是添加到选择器的关键字,用于指定所选元素的特殊状态

两种伪类类型:

  • 状态伪类
  • 结构性伪类

2.1 状态伪类

<style>
/*默认状态*/
a:link{
    color:black;
}
/*点击后状态*/
a:visited {
    color:gray;
}
/*鼠标悬浮状态*/
a:hover{
    color: red;
}
/*输入框边框高亮样式*/
:focus{
    outline: 2px solid orange;
}
</style>
<body>
<a href="http://baidu.com">百度</a>
<label>
  <input type="text">
</label>

2.1 结构伪类

<style>
/*默认状态*/
li{
    list-style-position: inside;
    border-bottom: 1px solid;
    padding: .5em;
}
/*选中第一个*/
li:first-child{
    color: #ff99cc;
}
/*选中最后一个*/
li:last-child{
    border-bottom: none;
}
</style>
<body>
<ol>
  <li>泰坦尼克号</li>
  <li>星球大战</li>
  <li>阿凡达</li>
  <li>复仇者联盟</li>
  <li>速度与激情8</li>
</ol>
</body>

字节跳动青训营--前端day2_第6张图片

3.通过组合选择元素

3.1 直接组合

<style>
/*默认状态*/
.error {
    color: red;
}
/*通过类名和标签组合*/
input.error {
    border-color: red;
}
</style>
<body>
<label>
  用户名
  <input class="error" value="aa">
</label>
<span class="error">
  最少3个字符
</span>
</body>

字节跳动青训营--前端day2_第7张图片

3.2 元素组合的拓展

字节跳动青训营--前端day2_第8张图片

4. 选择器的特异度(Specificity)

字节跳动青训营--前端day2_第9张图片

5. 样式覆盖

字节跳动青训营--前端day2_第10张图片

6. 样式继承

不可继承属性:width,hiegth等
可继承属性:color,font-size等

字节跳动青训营--前端day2_第11张图片

6.1 显式继承:

通过通配符 * 和 inherit 关键字使不可继承元素能够继承

inherit的定义和用法:

  • inherit 关键字指定一个属性应从父元素继承它的值
  • inherit 关键字可用于任何 HTML 元素上的任何 CSS 属性

字节跳动青训营--前端day2_第12张图片

6.2 初始值

CSS中,每个属性都有一个初始值

  • background-color 的初始值为 transparent
  • margin-left 的初始值为 0

可以使用initial 关键字显式重置为初始值

  • background-color: initial

7. css求值过程

字节跳动青训营--前端day2_第13张图片

三、css文档流(NormalFlow)

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

1. css行级 & 块级

Block Level Box Inline Level Box
不和其它盒子并列摆放 和其它行级盒子一起放在一行或拆开成多行
适用所有的盒模型属性 盒模型中的width、height不适用
块级元素 行级元素
生成块级盒子 生成行级盒子;内容分散在多个行盒(line box) 中
body、article、div、main、section、h1-6、p、ul、li等 span、em: strong、cite、code 等
display: block display: inline

2. diaplay 属性

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

3. 行级排版上下文

  • Inline Formatting Context (IFC)
  • 只包含行级盒子的容器会创建一个IFC

3.1 IFC 内的排版规则:

  • 盒子在一行内水平摆放
  • 一行放不下时,换行显示
  • text-align 决定一行内盒子的水平对齐
  • vertical-align 决定一个盒子在行内的垂直对齐
  • 避开浮动(float)元素

4. 块级排版上下文

Block Formatting Context (BFC)

4.1会创建一个BFC的容器

  • 根元素
  • 浮动、绝对定位、inline-block
  • Flex子项和Grid子项
  • overflow 不是 visible 的块盒
  • display: flow-root;

4.2 BFC内的排版规则

  • 盒子从上到下摆放
  • 垂直 margin 合并
  • BFA内盒子的 margin 不会与外面的合并
  • BFC 不会和浮动元素重叠

四、布局(Layout)

作用:确定内容的大小和位置的算法

依据元素、容器、兄弟节点和内容等信息来计算

1.布局相关技术

常规流也称为文档流
字节跳动青训营--前端day2_第14张图片

2.常规盒模型

字节跳动青训营--前端day2_第15张图片

2.1 width

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

2.2 heigth

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

2.3 padding

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

padding定义的几种方式

  1. padding:10px(四个边内边距均为10px)
  2. padding:10px 20px(上下内边距为10px,左右内边距为20px)
  3. padding:10px 20px 30px 40px(内边距分别为上10px 右20px 下30px 左40px

2.4 boeder

字节跳动青训营--前端day2_第16张图片

2.5 margin

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

边距塌陷:
当有两个盒子存在,并且都有边距时,会取两者中最大的一个而不是相加,如:
a下边距为100px,b上边距为120px 他两者的间距为120px

3. Flex Box

一种新的排版上下文

3.1 他可以控制盒子的:

  • 摆放的流向( ↑ ↓ ← → )
  • 摆放顺序
  • 盒子宽度和高度水平和垂直方向的对齐
  • 是否允许折行

3.2 Flexibility

  • 可以设置子项的弹性:当容器有剩余空间时,会伸展;容器空间不够时,会收缩。
  • flex-grow 有剩余空间时的伸展能力
  • lex-shrink 容器空间不足时收缩的能力
  • flex-basis 没有伸展或收缩时的基础长度

字节跳动青训营--前端day2_第17张图片

4. Grid

  • display:grid使元素生成一个块级的Grid容器

  • display: grid 使元素生成一个块级的 Grid 容器
    使用grid-template 相关属性将容器划分为网格

  • 设置每一个子项占哪些行/列

5. float

  • 通过改变子元素的float:left/right值来让元素布局,需要时可以在子元素上加上width
  • 当子元素浮动之后会造成父元素塌陷的情况,需要在父元素上加上clearfix:after来清除浮动

6. position属性

static relative absolute fied stick
默认值,非定位元素 相对自身原本位置偏移,不脱离文档流 绝对定位,相对非 static 祖先元素定位 相对于视口绝对定位 一些时候是relative定位(定位基点是自身默认位置),另一些时候自动变成fixed定位(定位基点是视口)

6.1 position:relative

字节跳动青训营--前端day2_第18张图片

6.2 position:absolute

字节跳动青训营--前端day2_第19张图片

五、颜色

1. RGB

初始值都为0,最大值则为255
即:rgb(000,000,000)–> rgb(255,255,255)

字节跳动青训营--前端day2_第20张图片

2. HSL

场景:当需要把一个颜色变亮或者变暗时,可以通过调整Lightness实现
字节跳动青训营--前端day2_第21张图片
字节跳动青训营--前端day2_第22张图片

3. 透明度

字节跳动青训营--前端day2_第23张图片

你可能感兴趣的:(字节跳动青训营--前端,前端,javascript,css,字节跳动,字节跳动青训营)