沐游虞笔记
  • 前端面试题

    • HTML面试题汇总(无答案)
    • HTML面试题汇总
    • CSS 面试题汇总(无答案)
    • CSS 面试题汇总
    • javascript 面试题汇总(无答案)
    • javascript 面试题汇总
    • promise 面试题(无答案)
    • promise 面试题
    • 浏览器面试题汇总(无答案)
    • 浏览器面试题汇总
    • 网络面试题汇总(无答案)
    • 网络面试题汇总
    • 工程化面试题汇总(无答案)
    • 工程化面试题汇总
    • VUE面试题汇总(无答案)
    • VUE面试题汇总
  • 直播课文件

    • 静态页面学习指导
    • 属性的计算过程
    • 层叠继承规则总结
    • BFC
    • JS基础知识回顾
    • DOM 事件的传播机制
    • DOM 事件的注册和移除
    • 阻止事件默认行为
    • 基础领航考试题
    • 基础领航考试题(答案)
    • 2024前端发展
    • JS核心概念学习指导
    • 第三方库与工程化学习指导
    • Vue入门学习指导
    • vue进阶学习指导
    • 前端性能优化
  • 笔面试环节知识讲解

    • 目录
    • 图像处理
    • 图像处理(面试)
    • Webpack构建优化
    • Webpack构建优化(面试)
    • TTS性能优化
    • TTS性能优化(面试)
    • 实时协作
    • 实时协作(面试)
    • 网页复制图片到剪贴板
    • 网页复制图片到剪贴板(面试)
    • vite插件
    • vite插件(面试)
    • 表单数据同步与保持
    • 表单数据同步与保持(面试)
    • 优化虚拟列表
    • 优化虚拟列表(面试)
    • 微前端解决巨石应用
    • 微前端解决巨石应用(面试)
    • DNS解析与优化
    • DNS解析与优化(面试)
    • 前端监控
    • 前端监控(面试)
    • 12.跨标签页通信
    • 12.跨标签页通信(面试)
    • 13.Vite相关优化
    • 13.Vite相关优化(面试)
    • 14.计时器节流问题
    • 14.计时器节流问题(面试)
    • 15.多文件预览支持
    • 15.多文件预览支持(面试)
    • 16.defer优化白屏时间
    • 16.defer优化白屏时间(面试)
  • Vue3整体变化
  • Vue2响应式回顾
  • Vue3响应式变化
  • nextTick实现原理
  • 两道代码题
  • Vue运行机制
  • 渲染器核心功能
  • 事件绑定与更新
  • computed面试题
  • watch面试题
  • 图解双端diff
  • 图解快速dff
  • 最长递增子序列
  • 模板编译器
  • 模板编译提升
  • 组件name作用
  • 路由传参方式
  • 基础篇

    • 序章React介绍
    • JSX基础语法
    • React基本介绍
    • 表单
    • 生命周期
    • 组件与事件绑定
    • 组件状态与数据传递
    • Hooks
    • React--redux介绍
    • React-router介绍
  • 就业篇

    • 属性默认值和类型验证
    • 高阶组件
    • Ref
    • Context
    • Render Props
    • Portals
    • 错误边界
    • 组件渲染性能优化
    • 前端框架的理解
    • Reacti和Vue描述页面的区别
    • 前端框架的分类
    • 虚拟DoM
    • React整体架构
    • React渲染流程
    • Fiber双缓冲
    • MessageChannel
    • Scheduleri调度普通任务
    • Scheduleri调度延时任务
    • 最小堆
    • React中的位运算
    • beginWork工作流程
    • completeWork工作流程
    • 图解diff算法
    • commit工作流程
    • lane模型
    • React中的事件
    • Hooks原理
    • useStateuseReducer.
    • effect相关hook
    • useCallbackuseMemo
    • useRef
    • Update
    • 性能优化策略之eagerState
    • 性能优化策略之bailout
    • bailoutContextAPl
    • 性能优化对日常开发启示
  • 前端监控概述
  • 错误监控
  • 数据上报
  • 页面性能监控
  • 用户行为收集与埋点
  • CSS3手册
  • HTML5手册
  • JavaScript语言提升

    • es补充
    • 事件循环
    • promise基础
    • Promise的链式调用
    • Promise的静态方法
    • async和await
    • Promise相关面试题
  • 网络

    • 客户端与服务器
    • 关于 Apifox 的使用
  • git文档
  • 工程化

    • CommonJS
    • ES module
    • npm文档(包管理)
    • Lass笔记
    • webpack工具
  • canvas详解
  • uinapp笔记
  • 自动化测试
  • oauth2令牌

    • 认识Oauth2
    • 三方应用实现github授权
    • 微信三方应用登录实现
    • 支付宝沙箱支付功能
  • 前端面试题

    • HTML面试题汇总(无答案)
    • HTML面试题汇总
    • CSS 面试题汇总(无答案)
    • CSS 面试题汇总
    • javascript 面试题汇总(无答案)
    • javascript 面试题汇总
    • promise 面试题(无答案)
    • promise 面试题
    • 浏览器面试题汇总(无答案)
    • 浏览器面试题汇总
    • 网络面试题汇总(无答案)
    • 网络面试题汇总
    • 工程化面试题汇总(无答案)
    • 工程化面试题汇总
    • VUE面试题汇总(无答案)
    • VUE面试题汇总
  • 直播课文件

    • 静态页面学习指导
    • 属性的计算过程
    • 层叠继承规则总结
    • BFC
    • JS基础知识回顾
    • DOM 事件的传播机制
    • DOM 事件的注册和移除
    • 阻止事件默认行为
    • 基础领航考试题
    • 基础领航考试题(答案)
    • 2024前端发展
    • JS核心概念学习指导
    • 第三方库与工程化学习指导
    • Vue入门学习指导
    • vue进阶学习指导
    • 前端性能优化
  • 笔面试环节知识讲解

    • 目录
    • 图像处理
    • 图像处理(面试)
    • Webpack构建优化
    • Webpack构建优化(面试)
    • TTS性能优化
    • TTS性能优化(面试)
    • 实时协作
    • 实时协作(面试)
    • 网页复制图片到剪贴板
    • 网页复制图片到剪贴板(面试)
    • vite插件
    • vite插件(面试)
    • 表单数据同步与保持
    • 表单数据同步与保持(面试)
    • 优化虚拟列表
    • 优化虚拟列表(面试)
    • 微前端解决巨石应用
    • 微前端解决巨石应用(面试)
    • DNS解析与优化
    • DNS解析与优化(面试)
    • 前端监控
    • 前端监控(面试)
    • 12.跨标签页通信
    • 12.跨标签页通信(面试)
    • 13.Vite相关优化
    • 13.Vite相关优化(面试)
    • 14.计时器节流问题
    • 14.计时器节流问题(面试)
    • 15.多文件预览支持
    • 15.多文件预览支持(面试)
    • 16.defer优化白屏时间
    • 16.defer优化白屏时间(面试)
  • Vue3整体变化
  • Vue2响应式回顾
  • Vue3响应式变化
  • nextTick实现原理
  • 两道代码题
  • Vue运行机制
  • 渲染器核心功能
  • 事件绑定与更新
  • computed面试题
  • watch面试题
  • 图解双端diff
  • 图解快速dff
  • 最长递增子序列
  • 模板编译器
  • 模板编译提升
  • 组件name作用
  • 路由传参方式
  • 基础篇

    • 序章React介绍
    • JSX基础语法
    • React基本介绍
    • 表单
    • 生命周期
    • 组件与事件绑定
    • 组件状态与数据传递
    • Hooks
    • React--redux介绍
    • React-router介绍
  • 就业篇

    • 属性默认值和类型验证
    • 高阶组件
    • Ref
    • Context
    • Render Props
    • Portals
    • 错误边界
    • 组件渲染性能优化
    • 前端框架的理解
    • Reacti和Vue描述页面的区别
    • 前端框架的分类
    • 虚拟DoM
    • React整体架构
    • React渲染流程
    • Fiber双缓冲
    • MessageChannel
    • Scheduleri调度普通任务
    • Scheduleri调度延时任务
    • 最小堆
    • React中的位运算
    • beginWork工作流程
    • completeWork工作流程
    • 图解diff算法
    • commit工作流程
    • lane模型
    • React中的事件
    • Hooks原理
    • useStateuseReducer.
    • effect相关hook
    • useCallbackuseMemo
    • useRef
    • Update
    • 性能优化策略之eagerState
    • 性能优化策略之bailout
    • bailoutContextAPl
    • 性能优化对日常开发启示
  • 前端监控概述
  • 错误监控
  • 数据上报
  • 页面性能监控
  • 用户行为收集与埋点
  • CSS3手册
  • HTML5手册
  • JavaScript语言提升

    • es补充
    • 事件循环
    • promise基础
    • Promise的链式调用
    • Promise的静态方法
    • async和await
    • Promise相关面试题
  • 网络

    • 客户端与服务器
    • 关于 Apifox 的使用
  • git文档
  • 工程化

    • CommonJS
    • ES module
    • npm文档(包管理)
    • Lass笔记
    • webpack工具
  • canvas详解
  • uinapp笔记
  • 自动化测试
  • oauth2令牌

    • 认识Oauth2
    • 三方应用实现github授权
    • 微信三方应用登录实现
    • 支付宝沙箱支付功能
  • HTML+CSS语言提升

    • CSS3视觉

      • CSS3手册
        • 弹性盒
          • 生成弹性容器和弹性项目
          • 更改方向
          • 主轴排列
          • 侧轴排列
          • 弹性项目伸缩
          • 主轴换行
        • 网格
          • 生成网格布局
          • 定义行和列
          • 改变排列方向
          • 单元格之间的间隙
          • 单元格内部的对齐
          • 网格项目定位
          • 视觉
        • 阴影
          • 盒子阴影
          • 文字阴影
        • 圆角
        • 背景渐变
        • 变形
          • translate 平移
          • scale 缩放
          • rotate 旋转
          • 改变变形原点
          • 多种变形叠加
          • 过渡和动画
        • 过渡
        • 动画
          • 其他
        • box-sizing
        • 字体图标
        • 图像内容适应
        • 视口单位
        • 伪元素选择器
        • 平滑滚动
    • HTML5文档

      • HTML5手册
  • JavaScript语言提升

    • 零碎的改动

      • ES语言提升
    • 数组

    • 事件循环

      • 课件
    • Promise基础

      • 笔记
    • Promise的链式调用

      • 笔记
    • Promise的静态方法

      • 笔记
    • async和await

      • 笔记
    • Promise相关面试题

      • 笔记
  • 网络

    • 基本概念-客户端和服务器

      • 网络课件
    • 关于 Apifox 的使用

      • 关于 Apifox 的使用
  • git

    • git基本概念

      • git文档
    • git分支

  • 工程化

    • CommonJS

      • 课堂笔记
    • ES Module

      • 模块化手册
    • 包管理器

      • npm文档
    • Less

      • 课堂笔记
    • 构建工具的使用

      • 课堂笔记
    • 分页电影列表案例

  • 技术应用
  • HTML+CSS语言提升
  • CSS3视觉
luzhichang
2023-10-23
目录

CSS3手册

# 布局

image-20210511102549096

浮动:做文字环绕效果

弹性盒:单行或单列布局

网格:多行多列布局

# 弹性盒

详细文档见MDN (opens new window)

弹性盒小游戏 (opens new window)

# 生成弹性容器和弹性项目

image-20210511112624876

**默认情况下,**弹性项目沿着主轴依次排列,侧轴拉伸

# 更改方向

通过flex-direction可更改主轴方向

image-20210511112510632

# 主轴排列

通过justify-content属性,可以影响主轴的排列方式

image-20210511113617325

# 侧轴排列

通过align-items属性,可以影响侧轴的排列方式

image-20210511114016304

# 弹性项目伸缩

所谓伸缩,是指在主轴方向上,当弹性容器有额外空间时,是否需要拉伸,当空间不足时,是否需要压缩

在弹性项目上使用flex属性,可设置拉伸和压缩比例:flex: 拉伸比例 压缩比例 初始尺寸

拉伸示例:

image-20210511120916571

压缩示例:

image-20210511121459341

默认情况下,flex: 0 1 auto

# 主轴换行

默认情况,当主轴剩余空间不足时,按照压缩比例进行压缩,但如果设置了主轴换行,则不会压缩,直接换行显示

给弹性容器设置flex-wrap: wrap,即可主轴换行

image-20210511123310673

尽管如此,多行多列仍然推荐使用网格布局

# 网格

MDN详细文档 (opens new window)

阮一峰网格布局教程 (opens new window)

网格布局小游戏 (opens new window)

网格布局是多行多列布局的终极解决方案

# 生成网格布局

image-20210511165317363

容器生成网格布局后,其所有子元素为网格项目

# 定义行和列

grid-template-rows:定义行

grid-template-columns:定义列

它们的语法是相同的

image-20210511172305100

# 改变排列方向

使用属性grid-auto-flow: column,可使子元素按列排放

image-20210511173447321

# 单元格之间的间隙

row-gap: 10px; /* 行间隙为10px */
column-gap: 20px; /* 列间隙为20px */
gap: 10px 20px; /* 行间隙为10px,列间隙为20px */

image-20210512132025687

# 单元格内部的对齐

默认情况下,网格项目在单元格内部水平和垂直拉伸,以撑满单元格

可以使用属性justify-items设置水平方向的排列方式

可以使用属性align-items设置垂直方向的排列方式

它们的可取值是相同的:

justify-items: start 左 | end 右 | center 中 | stretch 拉伸;
align-items: start 上 | end 下 | center 中 | stretch 拉伸;
image-20210511174450356

可以使用速写属性place-items: 垂直对齐方式 水平对齐方式同时设置这两个值

place-items: start center; /* 垂直靠上,水平居中 */

# 网格项目定位

默认情况下,网格项目依次排列到单元格中,每个网格占据一个单元格

但可以对网格项目设置grid-area属性来改变这一行为

使用方式为:

grid-area: 起始行线编号/起始列线编号/结束行线编号/结束列线编号;
image-20210511180027983

# 视觉

所谓视觉类样式,是指不影响盒子位置、尺寸的样式,例如文字颜色、背景颜色、背景图片等

# 阴影

# 盒子阴影

MDN详细文档 (opens new window)

通过box-shadow属性可以设置整个盒子的阴影

下面是一些示例

<iframe src="http://mdrs.yuanjin.tech/html/css-manual/box-shadow.html?v=2" style="height:900px;">

# 文字阴影

MDN详细文档 (opens new window)

通过text-shadow可以设置文字阴影

下面是一些示例

<iframe src="http://mdrs.yuanjin.tech/html/css-manual/text-shadow.html?v=3" style="height:500px;">

# 圆角

MDN详细文档 (opens new window)

通过设置border-radius,可以设置盒子的圆角

image-20210512131026084

border-radius可以有很多灵活的用法,将下面的代码依次粘贴到页面中测试一下

border-radius: 10px; /* 同时设置4个角的圆角,半径为10px */
border-radius: 50%; /* 同时设置4个角的圆角,圆的横向半径为宽度一半,纵向半径为高度一半 */
border-radius: 10px 20px 30px 40px; /* 分别设置左上、右上、右下、左下的圆角 */
<iframe src="http://mdrs.yuanjin.tech/html/css-manual/border-raduis.html?v=5" style="height:550px;">

# 背景渐变

MDN详细文档 (opens new window)

在设置背景图片时,除了可以使用url()加载一张背景图,还可以使用linear-gradient()函数设置背景渐变

linear-gradient()用于创建一张渐变的图片,语法为:

/* 设置渐变背景,方向:从上到下,颜色:从#e66465渐变到#9198e5 */
background: linear-gradient(to bottom, #e66465, #9198e5);

image-20210512135024676

# 变形

MDN详细文档 (opens new window)

通过transform属性,可以使盒子的形态发生变化

该属性支持多种变形方案,常见的有:

  • translate,平移
  • scale,缩放
  • rotate,旋转

无论是哪一种transform,都只是视觉效果的变化,不会影响盒子的布局

transform不会导致浏览器reflow和rerender,因此效率极高

# translate 平移

使用translate可以让盒子在原来位置上产生位移,类似于相对定位

image-20210512140622630

# scale 缩放

使用translate可以让盒子在基于原来的尺寸发生缩放

image-20210512141500499

# rotate 旋转

使用rotate属性可以在原图基础上进行旋转

/* 在原图的基础上,顺时针旋转45度角 */
transform: rotate(45deg); 
/* 在原图的基础上,顺时针旋转半圈 */
transform: rotate(0.5turn); 

可以点击下面的按钮试一下旋转效果

<iframe src="http://mdrs.yuanjin.tech/html/css-manual/rotate.html" style="height:400px;">

# 改变变形原点

MDN详细文档 (opens new window)

变形原点的位置,会影响到具体的变形行为

默认情况下,变形的原点在盒子中心,你可以通过transform-origin来改变它

transform-origin: center; /* 设置原点在盒子中心 */
transform-origin: left top; /* 设置原点在盒子左上角 */
transform-origin: right bottom; /* 设置原点在盒子右下角 */
transform-origin: 30px 60px; /* 设置原点在盒子坐标 (30, 60) 位置 */

试一试,先点击设置原点的按钮来设置原点(已在图片中使用红色小点标记),然后点击变形按钮进行变形

<iframe src="http://mdrs.yuanjin.tech/html/css-manual/transform-origin.html?v2" style="height:600px;">

# 多种变形叠加

可以一次性设置多种变形效果

/* 先旋转45度,再平移(100,100) */
transform: rotate(45deg) translate(100px, 100px);
/* 先平移(100, 100),再旋转45度 */
transform: translate(100px, 100px) rotate(45deg);

注意:旋转会导致坐标系也跟着旋转,从而可能影响到后续的变形效果

下面的例子可以很好的说明这一点

http://mdrs.yuanjin.tech/html/css-manual/multi-transform.html

本来打算把这个效果嵌入到markdown,但由于嵌入后出现一些未知的bug,因此只能粘贴效果地址了

# 过渡和动画

使用过渡和动画,可以让css属性变化更加丝滑

过渡和动画无法对所有的CSS属性产生影响,能够产生影响的只有数值类属性,例如:颜色、宽高、字体大小等等

# 过渡

MDN详细文档 (opens new window)

transition: 过渡属性 持续时间 过渡函数 过渡延迟
  • 过渡属性

    针对哪个css属性应用过渡。例如填写transform,则表示仅针对transform属性应用过渡。

    若填写all或不填写,则表示针对所有css属性都应用过渡

  • 持续时间

    css属性变化所持续的时间,需要带上单位。例如3s表示3秒,0.5s或500ms均表示500毫秒

  • 过渡函数

    本质是css属性变化的贝塞尔曲线函数,通常直接使用预设值:

    ease-in-out:平滑开始,平滑结束

    linear:线性变化

    ease-in:仅平滑开始

    ease-out:仅平滑结束

  • 过渡延迟

    书写规则和持续时间一样,表示过渡效果延迟多久后触发,不填则无延迟

在JS中,可以监听元素的transitionstart和transitionend事件,从而在过渡开始和过渡结束时做一些别的事情

# 动画

MDN详细文档 (opens new window)

动画的本质是预先定义的一套css变化规则,然后给该规则取个名字

image-20210513172902413

然后,其他元素即可使用这样的规则:

animation: 规则名 持续时间;

在应用规则时,还可以指定更多的信息

animation: 规则名 持续时间 重复次数 时间函数 动画方向 延迟时间

一些细节:

  • 定义规则时,0%可以书写为from
  • 定义规则时,100%可以书写为to
  • 重复次数为infinite时,表示无限重复
  • 动画方向为alternate时,表示交替反向,第1次正向,第2次反向,第3次正向,第4次方向,以此类推

在JS中,可以监听元素的animationstart和animationnend事件,从而在过渡开始和过渡结束时做一些别的事情

# 其他

# box-sizing

一图胜千言

image-20210514150015660

使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

# 字体图标

MDN font-face 指令 (opens new window)

css3新增了font-face指令,该指令可以让我们加载网络字体

其最常见的应用就是字体图标

字体图标本质上是文字,即通过color设置颜色,通过font-size设置尺寸

国内使用最多的字体图标平台是阿里巴巴矢量图标库 (opens new window)

登录平台后即可免费使用其所有字体图标

# 图像内容适应

MDN详细文档 (opens new window)

css3属性object-fit可以控制多媒体内容和与元素的适应方式,通常应用在img或video元素中

一图胜千言

下图中的所有img元素均被固定了宽高,溢出img的部分实际上均不会显示

image-20210514134908778

# 视口单位

css3支持使用vw和vh作为单位,分别表示视口宽度和视口高度

例如1vh表示视口高度的1%,100vw表示视口宽度的100%

# 伪元素选择器

通过::before和::after选择器,可以通过css给元素生成两个子元素

image-20210514140049244

使用伪元素可以避免在HTML中使用过多的空元素

伪元素必须要有content属性,否则不能生效,如果不需要有元素内容,设置content:''

# 平滑滚动

MDN详细文档 (opens new window)

使用scroll-behavior: smooth,可以让滚动更加丝滑

参见MDN效果即可

HTML5手册

HTML5手册→

Theme by Vdoing | Copyright © 2021-2024 蜀ICP备2024068710号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式