菜鸟的不完全笔记之CSS

155 阅读5分钟

关于CSS

额,我作为菜鸟对于CSS的浅理解是这样的:

(选择器1){

          (选择器2):属性值/声明

}

外链

就是把CSS写在一个单独的文件,用一个<link>标签把它引入页面里面

嵌入

就是直接把CSS写到<style>标签里面

内联

就是把CSS用style="....",写到当前标签里面

一些选择器

通配选择器、id选择器、类选择器、属性选择器、伪类选择器(状态伪类:当具有某种状态才选择;结构伪类:根据DOM节点在DOM树中的位置做选择)

组合
  • 直接组合// AB //满足A和B
  • 后代组合// A B //当A为后代,选择B
  • 亲子组合// A>B//当B为A子元素,选择B
  • 兄弟选择器//A~B//当B在A后且与A同级,选择B -相邻选择器//A+B//当B紧跟A,选择B
选择器的组

可以用“,”把选择器隔开形成一个选择器的组

(选择器),(选择器),(选择器),(选择器),(选择器){

          (选择器2):属性值/声明

}

为文字设置颜色
rgb函数

#xxxxxx(16进制表示)

rgb(x,x,x)(“x”取值0~255)

HSL模型

H指色相,0-360

S指饱和度,0—100%

L指亮度,0—100%

hsl(x,x%,x%)

除了以上方式,你还可以简单粗暴地使用关键字

透明度

在16进制中加在最后两位0-255

在rgba、hsla中加在最后0-1

字体

font-family // 你可以写多个,根据实际情况和先后顺序选择,通常来说以防万一,会在字体最后写上通用字体族,英文字体放在中文字体前面

使用Web Fonts

font-family:"字体";
src:
url(一段链接....woff2)format('woff2');

font-size // 字体的大小

  • 关键字 small 、medium 、 large
  • 长度 px 、 em
  • 百分数 相对于父元素字体大小

font-style // 设置斜体

italic 斜体

font-weight//设置字体粗细

取值可以从100-900(400-normal 700-bold)如果没有系统会取一个最接近的值

line-height//行高,也就是基线距离

text-align//对齐方式

left center right justify(两端对齐)

spacing//间距

字母间距:letter-spacing 单词间距:word-spacing

text-indent//文字缩进

text-decoration//文字装饰

none、 underline 、line-through 、 overline

white-space//空格

  • normal 合并多个
  • nowrap 不换行
  • pre 保留所有
  • pre-wrap 能显示下的情况下不换行
  • pre-line 合并空格,保留换行
调试CSS

ctrl+shift+I(win) cmd+opt+I(Mac)

选择器特异度

#id(1).类(2)E标签(2)

高优先级会覆盖低优先级里的内容

继承

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

显式继承 例

*{
box-sizing: inherit;
}
布局

常规流、浮动、绝对定位

设置属性值时,依照从上开始,顺时针的顺序

对于content,容器有指定高度时,百分数才生效。

对于padding,百分数相对于容器的宽度。

对于border,有三种属性

  • border-width
  • border-style
  • border-color 四个方向可以单独设置

对于margin,百分数相对于容器的宽度,可以用auto来实现朴素的水平居中,垂直方向上margin会合并

box-sizing:border-box

宽高变为了border-box的宽高

overflow//溢出 visible(溢出显示)hidden(溢出隐藏)scroll(溢出滚动)

块级

不和其他盒子并列摆放

适用于所有盒模型属性

行级 和其他行级盒子放在一行或拆开成多行

盒模型中的width、height不适用

display属性

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

行级排版上下文

只包含行级盒子的容器会创建一个IFC

IFC内的排版规则

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

块级排版上下文 某些容器会创建一个BFC

  • 根元素
  • 浮动、绝对定位、inline-block
  • Flex子项和Grid子项
  • overflow值不是visible的块盒
  • display:flow-root BFC内的排版规则
  • 盒子从上到下摆放
  • 垂直margin合并
  • BFC内盒子的margin不会与外面的合并
  • BFC不会和浮动元素重叠

Flex Box是一种新的排版上下文

它可以控制盒子的

  • 摆放顺序
  • 摆放的流向(右左上下)
  • 盒子的宽度和高度
  • 水平和垂直方向的对齐
  • 是否允许折行

flex-direction//控制子元素的摆放方向

  • row 从左到右
  • row-reverse 从右到左
  • column 从上到下
  • column-reverse 从下到上

justify-content//主轴的对齐方式

  • flex-start 左对齐
  • flex-end 右对齐
  • center 居中
  • space-between 前后顶满,平均空格
  • space-around 两头空白少,中间空白多
  • space-evenly 平均分配空格

align-items//侧轴对齐方式 -flex-start 上对齐

  • flex-end 下对齐
  • center 居中 -stretch 拉伸填满
  • baseline 文字基线对齐

align-self、order//设置单个元素的对齐方式

Flexibility//设置子项的弹性 -flex-grow 伸展能力

  • flex-shrink 收缩能力
  • flex-basis 基础长度

Grid布局

  • display:Grid生成一个块级的Grid容器
  • 使用grid-template把容器分成网格
  • 设置每个子项占据的行和列 columns划分列 rows划分行

grid-area:x/x/x/x;(右上 左上 右下 左下)

position属性

  • static 默认值,非定位元素
  • relative 相对于自身原位置偏移,不脱离文档流
  • absolute 绝对定位,相对于非static祖先元素定位
  • fixed 相对于视口绝对定位