CSS 速查笔记

CSS 学习套路

  1. 找它,利用选择器,把对应标签选出来;
  2. 摆它:利用布局样式(标准流、浮动、定位等),把盒子摆在需要的位置;
    1. 标准流可以从上向下摆放块级盒子从左向右摆放行内盒子
    2. 浮动可以从左向右摆放多个块级盒子,盒子之间没有缝隙并且顶端对齐
    3. 定位可以让盒子:摆放在另一个盒子中的任意位置(子绝父相)或者固定在屏幕中的某个位置。
  3. 改它:利用外观样式(字体、文本、背景等),修改盒子内容的显示效果。

一. 三种引入 CSS 的方式

样式表优点缺点使用频率控制范围注意点
行内书写方便,权重高结构样式混合控制一个标签不需要 style 标签
内部部分结构和样式分离没有彻底分离较多,授课和练习使用控制一个页面样式定义在 style 标签中
外部完全结构和样式分离需要 link 引入可以被多处复用样式定义在标签的 style 属性中

二. 选择器(找它)

2.1 基础选择器

基础选择器作用特点使用频率
☆ 标签选择器选中相同标签统一设置相同标签的样式,没有差异化较多
☆ 类选择器(.)按需选择标签根据需求选择非常多
id 选择器(#)选中唯一标签仅针对唯一标签通常与 JavaScript 联用
通配符选择器(*)选中所有标签选择的太多,有部分不需要有特定的应用场景

2.2 复合选择器

选择器作用频率用法示例
☆ 后代找后代较高使用空格分隔 .nav a
子代找亲儿子较少使用 > 分隔 .nav>a
兄弟找后面所有弟弟极少使用 ~ 分隔 li ~ li
临近兄弟找后面第一个弟弟极少使用 + 分隔 li + li
子代找亲儿子较少使用 > 分隔 .nav>a
☆ 并集找大伙较多使用 , 分隔 .nav, .header
交集多选一极少标签.类名

2.3 伪类选择器

关键词:状态

选择器作用频率用法示例
☆ 鼠标伪类鼠标悬停较多选择器:hover
☆ 链接伪类链接状态较多a:hover LVHAo
☆ 结构伪类元素位置较多E:first-child
E:last-child
E:nth-child(n)
E:nth-last-child(n)
focus表单状态较少input:focus
  • 结构伪类选择器

    选择符描述
    E:first-child匹配父元素中的第一个子元素 E
    E:last-child匹配父元素中的最后一个子元素 E
    E:nth-child(n)从前向后匹配父元素中的一个或特定多个子元素 E
    E:nth-last-child(n)从后向前匹配父元素中的一个或特定多个子元素 E
    E:first-of-type匹配类型 E 的第一个
    E:last-of-type匹配类型 E 的最后一个
    E:nth-of-type(n)匹配类型 E 的第 n 个
  • 结构伪类常用公式

    公式取值
    2n偶数
    2n + 1奇数
    5n5、10、15…
    n + 5从第 5 个开始(包含第 5 个)一直到最后
    -n + 5前 5 个(包含第 5 个)
  • 链接伪类选择器(LVHAo)

    链接伪类选择器说明
    a:link选择所有未被访问的链接
    a:visited选择所有已经被访问的链接
    a:hover选择鼠标指针位于其上的链接
    a:active选择激活链接(鼠标按下未抬起的链接)

2.4 伪元素选择器

关键词:内容

选择器作用频率
::before在标签刚开始之后插入行内元素较多
::after在标签要结束之前插入行内元素较多

提示:伪元素选择器必须要指定 content 属性。

2.5 属性选择器

选择符描述
E[att]选择具有 att 属性的 E 元素
E[att="val"]选择具有 att 属性且值等于 val 的 E 元素
E[att^="val"]选择具有 att 属性且值以 val 开头的 E 元素
E[att$="val"]选择具有 att 属性且值以 val 结尾的 E 元素
E[att*="val"]选择具有 att 属性且值包含 val 的 E 元素

^ 以 xxx 开头 / $ 以 xxx 结束 / * 包含。

2.6 选择器的权重

选择器权重
继承或 *0,0,0,0
标签选择器 / 伪元素0,0,0,1
类选择器 / 属性选择器 / 伪类选择器0,0,1,0
id 选择器0,1,0,0
行内样式1,0,0,0
!important

开发技巧:向上找层叠,向下找继承,巧用后代多用类,权重无需记。

三. 显示模式

3.1 标准流

3.1.1 显示模式
元素模式排列方式指定宽高包含
块级元素(block一行一个,独占一行可以任何标签
行内元素 (inline1. 一行多个,内容撑开
2. 遇到边界会折行
3. 彼此之间可能有缝隙
不可以文本或其他行内元素
行内块元素 (inline-block1. 一行多个,内容撑开
2. 遇到边界会折行
3. 彼此之间可能有缝隙
可以任何标签
显示模式转换
  • display: block 转换为块元素,并显示隐藏的元素;
  • display: none 隐藏元素,不保留原有位置;
  • display: inline-block 转换为行内块元素。

提示:display 转换显示模式的代码要写在第一行。

3.1.2 盒子模型
属性速记盒子大小说明
borderbd / bdt / bdr / bdb / bdl影响solid 实线 / dashed 虚线 / dotted 点线
paddingp / pt / pr / pb / pl影响上右下左,缺哪个对称补
marginm / mt / mr / mb / ml不影响上右下左,缺哪个对称补
3.1.3 盒子大小(box-sizing)
  • content-box盒子大小 = 宽高 + padding + border(传统盒子模型);
  • border-box宽高 = padding + border + 内容区域大小(CSS3 盒子模型)。
3.1.4 溢出处理(ov)

overflow 属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度)的处理方式,包括:

属性值描述
visible不剪切内容也不添加滚动条
hidden不显示超过对象尺寸的内容,超出的部分隐藏掉
scroll不管超出内容否,总是显示滚动条(macOS 下和 auto 等效)
auto超出自动显示滚动条,不超出不显示滚动条
3.1.5 显示和隐藏
属性值描述
display: none;隐藏元素,不保留原有位置
display:block;转换成块级元素,同时显示元素
visibility: hidden;隐藏元素,保留原有位置
visibility: visible;元素可见

3.2 浮动(float)

作用:让多个块级元素(不改变显示方式)水平排成一行。

属性值速记符效果
leftfl左浮动,元素从左向右依次排列
rightfl:r右浮动,元素从右向左依次排列
特点
  1. 脱离标准流(脱标);
  2. 一行显示并且顶端对齐(行内和行内块元素会按照文本对齐方式对齐);
  3. 具有行内块元素的特性(但是彼此之间没有间隙);
  4. 如果父盒子没有高度,同时所有子盒子都是浮动的,下方的盒子会钻上来,需要清除浮动。

浮动最早是用于图文混排的,浮动的盒子不会压住下方的文字内容。

3.3 定位(子绝父相)

3.3.1 定位模式(pos)
语义脱标移动位置常用场景
static静态定位不移动几乎不用不定位
relative ☆相对定位相对自身常用子绝父相
absolute ☆绝对定位带定位的父级常用子绝父相
fixed ☆固定定位浏览器可视区常用浏览器可视区
sticky粘性定位浏览器可视区不常用浏览器可视区

提示:子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。

3.3.2 边偏移
边偏移属性示例描述
top(t)top: 80px顶端偏移量,定义元素相对于其参照元素上边线的距离
bottom(b)bottom: 80px底部偏移量,定义元素相对于其参照元素下边线的距离
left(l)left: 80px左侧偏移量,定义元素相对于其参照元素左边线的距离
right®right: 80px右侧偏移量,定义元素相对于其参照元素右边线的距离

标准流浮动与这四个属性搭配使用无效。

3.3.3 叠放顺序(z-index)
  1. 数值是整数(没有单位),默认是 auto,数值越大,盒子越靠前;
  2. 数值相同,按书写顺序显示,后书写的盒子显示在上方;
  3. 只有定位的盒子在可以使用 z-index 属性。

四. 样式(改它)

4.1 字体样式

属性速记含义注意事项
font-familyff字体工作中按照团队约定即可
font-sizefz字号单位通常是 px(像素),字号一定要有单位
font-weightfw字重700 加粗 / 400 普通,数字字重不带单位
font-stylefs / fsn字体样式italic 斜体 / normal 正常,把 em 改成不倾斜
fontf连写font-size/line-height font-family,工作中按照团队约定即可

4.2 文本样式

属性速记含义注意事项
colorc颜色#f60 / rgba(0~255, 0~255, 0~255, 0~1)
text-aligntac对齐center / left / right
text-decorationtd / tdu文本修饰text-decoration: none; / text-decoration: underline;
text-indentti首行缩进text-indent: 2em;
line-heightlh行高行高等于盒子高度会垂直居中 / lh1 去除上下间距,易于卡片布局

4.3 背景样式

属性速记作用
background-colorbgc颜色颜色 / #f60 / rgba(0~255, 0~255, 0~255, 0~1) / transparent
background-imagebgi图像url(图片路径)
background-repeatbgr平铺repeat / no-repeat / repeat-x / repeat-y
background-positionbgp位置x, y / left right center top bottom center
background-sizebgs尺寸x, y / contain 图片完整 / cover 铺满盒子
background-attachmentbga附着方式scroll / fixed

复合写法推荐顺序:background: color image repeat position/size

4.4 边框和阴影

属性速记作用
border-radiusbdrs圆角边框圆形:border-radius: 50%;
圆角矩形:border-radius: 高度的一半;
单独设置:左上角开始,顺时针方向设置
box-shadowbxsh盒子阴影X 偏移 Y 偏移 阴影模糊半径 颜色
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.4);
transform: translate(0, -1px);
text-shadow文字阴影X 偏移 Y 偏移 阴影模糊半径 颜色
text-shadow: 0 15px 30px rgba(0, 0, 0, 0.4);

常用代码:

.box:hover {
  box-shadow: 0 15px 30px rgba(0, 0, 0, 0.4);
  transform: translate(0, -1px);
}

4.5 其他

属性及值作用
list-style: none;取消显示列表默认列表样式
cursor: pointer;鼠标样式,提示用户可以点击
text 可以输入内容 / not-allowed 禁止 / move 移动
outline: none;取消表单轮廓
resize: none;防止拖拽文本域
vertical-align: top / middle / bottom设置图片或者表单(行内块元素)和文字垂直对齐 / 图片底侧空白缝隙
transition: 要过渡的属性 动画时间 运动曲线 何时开始;谁做过渡给谁加,常用 transition 0.3s
filter: blur(5px)数值越大越模糊,数值为 0 最清晰(不做模糊处理)
filter: grayscale(100%)可以让整个网站灰度显示,清明节常用
width: calc(100% - 80px);让子盒子永远比父盒子的宽度小 80px (注意: 运算符前后必须有空格)

五. 布局技巧(方案)

5.1 居中

  1. 文本水平居中:在父盒子中设置 tac

  2. 块级元素水平居中:margin: 0 auto

  3. 绝对定位元素水平垂直居中:

    1. pos:a+t0+r0+b0+l0+m:a
    2. pos:a+t50%+l50%+trf:t / -50%, -50%
  4. 文本垂直居中:

    1. 单行文本垂直居中:lh 等于父盒子高度;

    2. 多行文本垂直居中:

      1. 父盒子:行高等于父盒子高度;
      2. 子盒子:dib+lh1.2+va / middle

      原理:将多行文本转换成行内块元素,可以在父盒子中指定行高实现垂直居中。

5.2 行内块元素

  • 元素之间的间隙:父盒子字体设置为 0 / 子盒子单独设置字体;
  • 图片底侧空白缝隙:vertical-align: top / middle / bottom
  • 图片或者表单(行内块元素)和文字垂直对齐:vertical-align: top / middle / bottom

5.3 清除浮动

  1. ::after 伪元素法:

    .clearfix::after {
      content: " ";
      display: block;
      clear: both;
      visibility: hidden;
      height: 0;
    }
    
  2. 双伪元素法:

    .clearfix::before,
    .clearfix::after {
      content: "";
      display: table;
    }
    
    .clearfix::after {
      clear: both;
    }
    

5.4 文字溢出显示省略号

  1. 单行文本溢出

    /* 1. 强制在一行显示文本,默认 normal 会自动换行 */
    white-space: nowrap;
    
    /*2 . 超出的部分隐藏 */
    overflow: hidden;
    
    /* 3. 文字用省略号替代超出的部分 */
    text-overflow: ellipsis;
    
  2. 多行文本溢出

    /* 1. 超出的部分隐藏 */
    overflow: hidden;
    
    /* 2. 文字用省略号替代超出的部分 */
    text-overflow: ellipsis;
    
    /* 3. 弹性伸缩盒子模型显示 */
    display: -webkit-box;
    
    /* 4. 限制在一个块元素显示的文本的行数 */
    -webkit-line-clamp: 2;
    
    /* 5. 设置或检索伸缩盒对象的子元素的排列方式 */
    -webkit-box-orient: vertical;
    

5.5 外边距合并(折叠)处理

  • 兄弟盒子只设置一个;
  • 父子盒子:
    • 父盒子上设置 overflow: hidden;
    • 父盒子设置 padding-top

5.6 细线边框

5.6.1 表格细线边框
  • border-collapse: collapse; (bdcl) 可以把相邻的边框合并到一起;
  • border-collapse 仅适用于表格。
5.6.2 块级元素细线边框
  • margin 值边框宽度。
  • hover 处理:
    • 无定位:pos
    • 有定位:z-index: 1

5.7 CSS 三角形

原理:边框连接处是斜边连接的。

5.7.1 等边三角形
  1. w0+h0+lh0+fz0
  2. bd / 100px solid transparent;
  3. 需要哪个方向的三角形,就设置哪个方向的颜色。
5.7.2 直角三角形
  1. w0+h0+lh0+fz0
  2. bdt / 200px solid transparent;
  3. bdr / 100px solid red;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值