HTML原生的弹窗 dialog
模态和非模态模态对话框(Modal Dialog) 阻止背景交互:当模态对话框打开时,它会阻止用户与对话框之外的应用程序其他部分进行交互,直到对话框被关闭。 强制用户响应:通常用于需要用户必须完成或取消某个操作才能继续的情况,比如确认删除、填写重要信息等。 示例:浏览器中的 alert()、confirm()、prompt() 都是模态的。 非模态对话框(Non-modal Dialog) 允许背景交互:非模态对话框打开时,用户仍然可以与应用程序的其他部分进行交互,对话框不会阻止用户操作其他部分。 不强制立即响应:通常用于提供辅助信息或工具,用户可以不理会它而继续其他工作,比如查找/替换对话框、调色板等。 属性closedby any closerequset none 一种是轻量级关闭用户操作 ,即当用户点击或轻触对话框外部时, 会自动关闭一种是平台特定的用户操作 ,例如在桌面平台上按下 Esc 键,或在移动平台上执行“返回”或“关闭”手势。一种是开发者指定的机制,通过 JavaScript 调用 close() 方法,或者通过 form 的提交 any: 任...
HTML 微数据和JSON-LD
用途让搜索引擎理解网页内容的“含义” 怎么用https://schema.org 词汇表 JSON-LD 描述网页的语义 12345678<script type="application/ld+json"> { "@context": "https://schema.org", // 这是“词典”的地址 "@type": "Person", // "Person" 这个词的定义在 schema.org 上 "name": "张三", "jobTitle": "软件工程师" }</script> 微数据 itemtype 描述术语 itemprop 描述具体属性 123456<div itemscope itemtype="https://schema.org/Person"...
CSS 之 transform
一、三大核心属性 属性 作用 是否必须 类比 perspective 设置观察者距离,开启 3D 视觉空间 ✅ 必须(父容器) 摄像机离场景多远 transform-style: preserve-3d 让子元素的子元素进入 3D 空间,不被压扁 ✅ 嵌套 3D 时必须 打开“3D 结界” backface-visibility: hidden 元素背面朝你时自动隐藏 ✅ 翻转/立方体时必须 纸牌转过去就消失 二、核心概念解析1. perspective(透视) 作用:决定透视的强烈程度 perspective: 200px → 近,透视强(夸张) perspective: 1000px → 远,透视弱(平缓) 必须加在父容器上,不能加在变换元素自身 123.scene { perspective: 800px;} 2. transform-style: preserve-3d 默认是 flat → 子元素被压扁到父平面,换言之就是子元素应用 3d 效果看不出来,比如 translateZ 就和 scale 看不出区别...
Git 相关命令的解析
✅ 撤回(add)添加的内容语法1git reset [filename] 📌 作用撤回添加到暂存区文件,不会对工作区的内容产生变化。因为 add 的时候会将文件转成 blob 对象,所以这里的 reset 只是将二进制的对象变成未引用的,具体的内容会由 gc 处理,reset 并不会删除二进制对象。 ✅ 查看当前仓库连接的远程仓库地址语法1git remote -v 示例输出: 12origin https://github.com/naiyniB/yian.git (fetch)origin https://github.com/naiyniB/yian.git (push) 📌 作用列出所有远程仓库的名称和 URL(-v 表示 verbose,显示详细地址)。 ✅ 查看当前所在的本地分支语法1git branch --show-current 💡 也可以用: 1git status 📌 作用直接输出当前分支名,如 main 或 master。 第一行会显示:On branch main ✅ 3. 查看所有本地分支1git branch 示例输出...
docker在不同主机上打镜像的问题
场景在 mac 上打包 docker 镜像导出到 liunx 的主机上运行报错架构不同的问题 原因默认情况下,Docker 会根据当前主机的架构构建镜像。也就是说,如果你在一个 x86_64 架构的机器上构建镜像,那么 Docker 会生成适用于 x86_64 架构的镜像;如果你在一个 arm64 架构的机器上构建镜像,Docker 会生成适用于 arm64 架构的镜像。 不过,你可以显式地指定要为其他平台构建镜像,使用 --platform 选项。例如: 构建特定平台的镜像:12docker build --platform linux/amd64 -t myimage .docker build --platform linux/arm64 -t myimage . 使用 docker buildx 构建多平台镜像:docker buildx 是 Docker 提供的一个扩展命令,支持多平台构建。你可以用它来为多个平台构建镜像,同时也支持将镜像推送到 Docker Hub 或其他容器镜像仓库。 首先,确保启用了 buildx,可以通过以下命令查看: 1docker buil...
JavaScript 浏览器环境的模块
| 涵盖:导入导出、执行机制、跨平台设计 一、模块基础:import 与 export1. 导出(export) 类型 语法 特点 命名导出 export const name = 'Alice';export function greet() {}export { name, greet }; 可多个,导入时名字必须匹配 默认导出 export default function() {}export default obj; 每模块最多一个,导入时可自定义名字 2. 导入(import) 场景 语法 说明 导入命名导出 import { name, greet } from './utils.js'; 名字必须匹配 导入默认导出 import main from './utils.js'; 名字可自定义 同时导入 import main, { version } from './utils.js'; 默认 + 命名 全部导入 import * as utils from...
JavaScript 模块重新导出(桶文件)引出的性能问题分析
模块中重新导出的问题 [模块中关于桶文件的描述] 详见 📚 JavaScript 模块系统深度笔记 什么是“桶文件”(Barrel file)?“桶文件”(Barrel file)是一种在 JavaScript/TypeScript 项目中常见的模式。它是一个特殊的模块文件(通常命名为 index.ts, index.js, all.ts 等),它的主要作用是从当前包(package)或目录下的其他多个模块中重新导出(re-export)它们的成员,从而创建一个单一的、方便的入口点。 举个例子: 假设你有一个名为 @my-lib/utils 的工具库包,里面包含几个工具函数文件: 123456@my-lib/utils/├── src/│ ├── stringUtils.ts│ ├── numberUtils.ts│ └── dateUtils.ts└── index.ts <-- 这就是“桶文件” stringUtils.ts: 12export function capitalize(str: string): string {...
展开
展开操作符(...)会把数组或对象的元素“拷贝一份”放进新的数组或对象里,原来的数组 / 对象本身不会被修改。但拷贝是“浅拷贝”,不是深拷贝。 二、这段代码做了什么1234let first = [1, 2]let second = [3, 4]let bothPlus = [0, ...first, ...second, 5] 等价理解为: 1let bothPlus = [0, 1, 2, 3, 4, 5] 关键点 bothPlus 是 一个全新的数组 first 和 second 没有被修改 12first // [1, 2]second // [3, 4] 三、浅拷贝1️⃣ 对基本类型(number / string)123456let a = [1, 2]let b = [...a]b[0] = 100a // [1, 2] ← 不受影响 因为: 数字是值类型 拷贝的是真实的值 2️⃣ 对引用类型(对象 / 数组)123456let a = [{ x: 1 }]let b = [...a]b[0]...
解构
解构数组对象其实都还挺简单理解的,但是在函数中解构的同时带上默认值就有点不太好理解了 1function f({ a = "", b = 0 } = {}): void {} 初读很乱,我们从外往里拆: ① 最外层:= {} 1function f(param = {}) {} 当调用 f() 时,如果没有传参数,就用一个空对象 {}不然解构会出现问题 如果解构 undefined 或 null 会出现问题解构底层就是在读对象属性,而 undefined / null 不能读属性 ② 中间层:对象解构 { a, b } 1function f({ a, b }) {} 从参数对象中取出 a 和 b ③ 内层:属性默认值 1{ a = "", b = 0 } 如果对象里:没有 a → 用 “” 没有 b → 用 0 这是“二层默认值”:外层默认...