示例
<!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <h1>标题</h1> <p>一句话 或 段落</p> </body> </html> <!DOCTYPE html> 这是标准的文档类型声明,必须在文档的第一行。 html 包含文档中的所有HTML内容。 head 文档的head,包含文档的所有元数据,比如它的title和对外部样式表、脚本的引用。 title 文档的标题。浏览器会把这个元素的内容显示在窗口标题栏中 有些元素是可以嵌套的。比如,可以使用em元素为文本增加强调的语义。 <p>This is a <em>really</em>interesting paragraph.</p>
div 层/块/盒子 HTML中最基本的标签 span 文本标签 p 段落 或 一句话 文本域标签 <textarea name="" id="" cols="30" rows="10"> 文本。。。。。。 </textarea> 图像标签 <img src="images/a.png" alt="图片不显示的文字" /> 锚点 <a href="#name1">点击到目标内容1</a> <a name="name1">目标内容头1</a> <a href="#name2">点击到目标内容2</a> <h5 id="name2">目标内容头2</> 本网站在谷歌浏览器上有时会出现锚点无法跳转的问题, 体现为点击左侧的标签,右侧页面不会随之变动, 刷新一下页面,第一次点击跳转没有问题 在火狐浏览器上没有这个问题,无法忍受刷新可考虑使用火狐浏览器 属性<标签名 属性="值" ></标签名> 其中id与class是所有标签的通用属性 <标签名 id="id1" class="aaa" ></标签名> HTML的属性允许自定义 <标签名 data1="qisanbiji" ></标签名> DOM及渲染DOM:Document Object Model,文件对象模型 眼睛看到是文档,是一个个xml格式的文本标签,web浏览器加载这些文本转化为结构化对象:DOM DOM,拥有一系列的属性,比如前面说的属性,在DOM中就转为一个对象Object的属性, DOM还有一系列的方法等,可以操作这些属性 渲染 web浏览器将文本转化为DOM后,再对DOM应用一系列视觉的计算方法, 并以像素的方式绘制到屏幕上,这个过程就是渲染。 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Video Example</title> </head> <body> <h1>My Video</h1> <video width="640" height="360" controls> <source src="path/to/your/video.mp4" type="video/mp4"> <source src="path/to/your/video.ogg" type="video/ogg"> <source src="path/to/your/video.webm" type="video/webm"> Your browser does not support the video tag. </video> </body> </html> autoplay(自动播放)、loop(循环播放)、muted(静音) <video width="640" height="360" controls autoplay muted> <source src="path/to/your/video.mp4" type="video/mp4"> Your browser does not support the video tag. </video> |
|
|
|
所有转义字符 参考 https://blog.csdn.net/hemeinvyiqiluoben/article/details/79750575 ISO Latin-1字符集: — 制表符Horizontal tab — 换行Line feed — 回车Carriage Return — Space ! ! — 惊叹号Exclamation mark ” " " 双引号Quotation mark # # — 数字标志Number sign $ $ — 美元标志Dollar sign % % — 百分号Percent sign & & & Ampersand ‘ ' — 单引号Apostrophe ( ( — 小括号左边部分Left parenthesis ) ) — 小括号右边部分Right parenthesis * * — 星号Asterisk + + — 加号Plus sign , , — 逗号Comma - - — 连字号Hyphen . . — 句号Period (fullstop) / / — 斜杠Solidus (slash) 0 0 — 数字0 Digit 0 1 1 — 数字1 Digit 1 2 2 — 数字2 Digit 2 3 3 — 数字3 Digit 3 4 4 — 数字4 Digit 4 5 5 — 数字5 Digit 5 6 6 — 数字6 Digit 6 7 7 — 数字7 Digit 7 8 8 — 数字8 Digit 8 9 9 — 数字9 Digit 9 : : — 冒号Colon ; ; — 分号Semicolon < < < 小于号Less than = = — 等于符号Equals sign > > > 大于号Greater than ? ? — 问号Question mark @ @ — Commercial at A A — 大写A Capital A B B — 大写B Capital B C C — 大写C Capital C D D — 大写D Capital D E E — 大写E Capital E F F — 大写F Capital F G G — 大写G Capital G H H — 大写H Capital H I I — 大写J Capital I J J — 大写K Capital J K K — 大写L Capital K L L — 大写K Capital L M M — 大写M Capital M N N — 大写N Capital N O O — 大写O Capital O P P — 大写P Capital P Q Q — 大写Q Capital Q R R — 大写R Capital R S S — 大写S Capital S T T — 大写T Capital T U U — 大写U Capital U V V — 大写V Capital V W W — 大写W Capital W X X — 大写X Capital X Y Y — 大写Y Capital Y Z Z — 大写Z Capital Z [ [ --- 中括号左边部分Left square bracket \ \ --- 反斜杠Reverse solidus (backslash) ] ] — 中括号右边部分Right square bracket ^ ^ — Caret _ _ — 下划线Horizontal bar (underscore) ` ` — 尖重音符Acute accent a a — 小写a Small a b b — 小写b Small b c c — 小写c Small c d d — 小写d Small d e e — 小写e Small e f f — 小写f Small f g g — 小写g Small g h h — 小写h Small h i i — 小写i Small i j j — 小写j Small j k k — 小写k Small k l l — 小写l Small l m m — 小写m Small m n n — 小写n Small n o o — 小写o Small o p p — 小写p Small p q q — 小写q Small q r r — 小写r Small r s s — 小写s Small s t t — 小写t Small t u u — 小写u Small u v v — 小写v Small v w w — 小写w Small w x x — 小写x Small x y y — 小写y Small y z z — 小写z Small z { { — 大括号左边部分Left curly brace | | — 竖线Vertical bar } } — 大括号右边部分Right curly brace ~ ~ — Tilde — — 未使用Unused 空格Nonbreaking space ? ¡ ¡ Inverted exclamation ¢ ¢ ¢ 货币分标志Cent sign £ £ £ 英镑标志Pound sterling ¤ ¤ ¤ 通用货币标志General currency sign ¥ ¥ ¥ 日元标志Yen sign | ¦ ¦ or &brkbar; 断竖线Broken vertical bar § § § 分节号Section sign ¨ ¨ ¨ or ¨ 变音符号Umlaut ? © © 版权标志Copyright a ª ª Feminine ordinal ? « « Left angle quote, guillemet left ? ¬ ¬ Not sign ? Soft hyphen ? ® ® 注册商标标志Registered trademark ˉ ¯ ¯ or &hibar; 长音符号Macron accent ° ° ° 度数标志Degree sign ± ± ± 加或减Plus or minus 2 ² ² 上标2 Superscrīpt two 3 ³ ³ 上标3 Superscrīpt three ′ ´ ´ 尖重音符Acute accent μ µ µ Micro sign ? ¶ ¶ Paragraph sign ? · · Middle dot ? ¸ ¸ Cedilla 1 ¹ ¹ 上标1 Superscrīpt one o º º Masculine ordinal ? » » Right angle quote, guillemet right ? ¼ ¼ 四分之一Fraction one-fourth ? ½ ½ 二分之一Fraction one-half ? ¾ ¾ 四分之三Fraction three-fourths ? ¿ ¿ Inverted question mark à À À Capital A, grave accent á Á Á Capital A, acute accent ?   Capital A, circumflex ? à à Capital A, tilde ? Ä Ä Capital A, di?esis / umlaut ? Å Å Capital A, ring ? Æ Æ Capital AE ligature ? Ç Ç Capital C, cedilla è È È Capital E, grave accent é É É Capital E, acute accent ê Ê Ê Capital E, circumflex ? Ë Ë Capital E, di?esis / umlaut ì Ì Ì Capital I, grave accent í Í Í Capital I, acute accent ? Î Î Capital I, circumflex ? Ï Ï Capital I, di?esis / umlaut D Ð Ð Capital Eth, Icelandic ? Ñ Ñ Capital N, tilde ò Ò Ò Capital O, grave accent ó Ó Ó Capital O, acute accent ? Ô Ô Capital O, circumflex ? Õ Õ Capital O, tilde ? Ö Ö Capital O, di?esis / umlaut × × × 乘号Multiply sign ? Ø Ø Capital O, slash ù Ù Ù Capital U, grave accent ú Ú Ú Capital U, acute accent ? Û Û Capital U, circumflex ü Ü Ü Capital U, di?esis / umlaut Y Ý Ý Capital Y, acute accent T Þ Þ Capital Thorn, Icelandic ? ß ß Small sharp s, German sz à à à Small a, grave accent á á á Small a, acute accent a â â Small a, circumflex ? ã ã Small a, tilde ? ä ä Small a, di?esis / umlaut ? å å Small a, ring ? æ æ Small ae ligature ? ç ç Small c, cedilla è è è Small e, grave accent é é é Small e, acute accent ê ê ê Small e, circumflex ? ë ë Small e, di?esis / umlaut ì ì ì Small i, grave accent í í í Small i, acute accent ? î î Small i, circumflex ? ï ï Small i, di?esis / umlaut e ð ð Small eth, Icelandic ? ñ ñ Small n, tilde ò ò ò Small o, grave accent ó ó ó Small o, acute accent ? ô ô Small o, circumflex ? õ õ Small o, tilde ? ö ö Small o, di?esis / umlaut ÷ ÷ ÷ 除号Division sign ? ø ø Small o, slash ù ù ù Small u, grave accent ú ú ú Small u, acute accent ? û û Small u, circumflex ü ü ü Small u, di?esis / umlaut y ý ý Small y, acute accent t þ þ Small thorn, Icelandic ? ÿ ÿ Small y, umlaut symbols, mathematical symbols, and Greek letters ? ƒ Α Α Β Β Γ Γ Δ Δ Ε Ε Ζ Ζ Η Η Θ Θ Ι Ι Κ Κ Λ Λ Μ Μ Ν Ν Ξ Ξ Ο Ο Π Π Ρ Ρ Σ Σ Τ Τ Υ Υ Φ Φ Χ Χ Ψ Ψ Ω Ω α α β β γ γ δ δ ε ε ζ ζ η η θ θ ι ι κ κ λ λ μ μ ν ν ξ ξ ο ο π π ρ ρ ? ς σ σ τ τ υ υ φ φ χ χ ψ ψ ω ω ? ϑ ? ϒ ? ϖ ? • … … ′ ′ ″ ″  ̄ ‾ ? ⁄ ? ℘ ? ℑ ? ℜ ? ™ ? ℵ ← ← ↑ ↑ → → ↓ ↓ ? ↔ ? ↵ ? ⇐ ? ⇑ ? ⇒ ? ⇓ ? ⇔ ? ∀ ? ∂ ?∃ ?∅ ? ∇ ∈ ∈ ? ∉ ? ∋ ∏ ∏ ∑ ∑ ? − ?∗ √ √ ∝ ∝ ∞ ∞ ∠ ∠ ∧ ∧ ∨ ∨ ∩ ∩ ∪ ∪ ∫ ∫ ∴ ∴ ~ ∼ ? ≅ ≈ ≈ ≠ ≠ ≡ ≡ ≤ ≤ ≥ ≥ ? ⊂ ? ⊃ ? ⊄ ?⊆ ? ⊇ ⊕ ⊕ ? ⊗ ⊥ ⊥ ? ⋅ ?⌈ ? ⌉ ? ⌊ ?⌋ ? 〈 ? 〉 ? ◊ ? ♠ ? ♣ ? ♥ ? ♦ markup-significant and internationalization characters: “ " & & < < > > ? Œ ? œ ? Š ? š ? Ÿ ? ˆ ? ˜ ? ? ? ? – – — — ‘ ‘ ’ ’ ? ‚ “ “ ” ” ? „ ?† ? ‡ ‰ ‰ ? ‹ ? › € € |
|
|
|
|
CSS(Cascading Style Sheets,层叠样式表)控制DOM元素的视觉外观
选择符 { 属性: 值; 属性: 值; }
类型选择符
匹配同名DOM元素的标签名: div /* 选择所有div元素 */ h1 /* 选择所有一级标题 */ p /* 选择所有段落 */ strong /* 选择所有strong元素 */ em /* 选择所有em元素 */
后代选择符
div p /* 选择包含在div中的p元素 */
类选择符
匹配class属性的value .red 匹配class="red"的元素 还可以级联 .red.small
ID 选择符
id="good" #good
属性和值
颜色名:orange 十六进制值:#3388aa或#38a RGB值:rgb(10, 150, 20) 带透明通道的RGB值:rgba(10, 150, 20, 0.5)
嵌入html
<head> <style type="text/css"> p { font-size: 20px; font-weight: bold; background-color: blue; color: red; } </style> </head>
外部样式
<head> <link rel="stylesheet" href="style.css"> <link rel='shortcut icon' href='#'></link> </head>
行内样式
<p style="background-color: #357210;color: white; font-size: 37px; font-style: italic;">学与用,输入与输出,应该有平衡或比例</p>
继承样式:子层默认继承父层样式
<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> div { background-color: #357210; color: white; font-size: 37px; font-weight: bold; font-style: italic; } </style> </head> <body> <p>走一走</p> <div> <p>停一停.</p> </div> </body> </html>
https://getbootstrap.com/
JavaScript是一种脚本语言,像其他语言一样,可以做很多事,比如,后台开发, 但若说应用最普遍的,那还是前端开发:嵌入HTML,通过操作DOM动态修改页面。 并且这是跨平台的,这像句废话,因为前端的东西,各个跨平台,哪个组件不跨平台才需要提一下 但JavaScript又稍加特殊,它还是一门语言,这是将一门语言作为了页面的插件来使用并且普及天下... 可以作为浏览器插件的语言还有Java,Rust,值得一提这三个语言背后的关系: Mozilla基金会(火狐浏览器的研发组织),Sun(Java前研发公司),Oracle 1993年,马克·安德森领导的团开发了一个真正有影响力的浏览器Mosaic,这就是后来世界上最流行的浏览器Netscape Navigator。 1995年,微软推出了闻名于世的浏览器Internet Explorer。 网景公司(Netscape)与Sun Microsystems合作,创建了互动性的Web站点。 著名的 Brendan Eich 只花了 10 天时间就创建了第一个版本的 JavaScript 语言, 这是一门动态编程语言,其语法上与 Sun 的 Java 语言大致类似。 由于这种合作关系,Sun 公司因此持有了“JavaScript”的商标。 1998年,Netscape公司开放Netscape Navigator源代码,成立了Mozilla基金会。 2001年,最初浏览器写超过20行的javascript代码就会崩溃,直到2001年微软发布了ie6,首次实现对js引擎的优化和分离。 (瞬间js提升到万行以上) 2003年,苹果公司发布了Safari浏览器。 2004年,Netscape公司发布了著名的开源浏览器Mozilla Firefox(中文俗称“火狐”) 2009 年,Oracle 收购了 Sun Microsystems,并因此获得了JavaScript的商标。 Rust Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现, 而 Mozilla 于 2009 年开始赞助这个项目。 第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布。 可以说 Mozilla基金会推出了JS,之后它推出的Rust其中一大特点就是可以作为插件运行在浏览器上, 弥补了JS作为解释性语言性能低的缺点,又能形成沙箱/黑盒,保护代码... 这几十年对于技术发展来说,真是 ...风起云涌遥望峰之巅...
ES 的特性
JS的语法比较灵活,或者说是松散,大规模开发会出现N多糟糕的局面,好几个公司都研发了自己的分支/版本, 微软推出了 JScript, CEnvi推出 ScriptEase, 与JavaScript 同样可以在浏览器上运行, Mozilla基金会是非赢利机构,你拿人家的东西修修改改就成自己,于双方 于社会发展 都不好 ... 为了统一,或者说为了解决这个局面... 欧洲计算机制造商联合会(European Computer Manufacturers Association,ECMA)提出了软件开发环境的参考模型: ECMA 标准 之后,JavaScript 兼容于 ECMA 标准,也称为 ECMAScript 或者 ES 解释性语言 -- (不需要编译成文件) 跨平台 单线程(js引擎单线程) 嗯,后续写JS要遵守ES规范
<body> <script type="text/javascript"> alert("11"); </script> </body>
<head> <title>Page Title</title> <script type="text/javascript" src="main.js"></script> </head>
循环控制
true && false true || false if (true) { // 如果为真,则执行这里的代码 } for (let i = 0; i < 5; i++) { console.log(i); // 把值输出到控制台 } var fun = function(a) { return a; };
typeof 37; // 返回"number" var myName = "aa"; typeof myName; // 返回"string" myName = true; typeof myName; // 返回"boolean" 11=='11' //true 11==='11' //false
JS 数组
var a = []; //创建一个空数组 var a = new Array("a","b","c");; // 创建一个包含1项数据为20的数组 var a = ["a",2]; let arr = ["a",2]; //js数组可以存放不同类型的数据,即使let也是如此 arr.push(3,4); let tmp = arr.pop(); console.log(tmp);//4 function compare(value1, value2) { if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0; } } arr = [3,1,2]; arr.sort(compare); console.log(arr); // [ 1, 2, 3 ] //1,2,3中index=0的元素为1 //1,2,3中index=1的元素为2 //1,2,3中index=2的元素为3 arr.forEach(function(x, index, a){ console.log(a+"中index="+index+"的元素为"+x); }); let ar2 = arr.map(function(item){ return item*2; }); console.log(ar2); // [ 2, 4, 6 ] ar2 = ar2.filter(function(x, index) { return index > 0; }); console.log(ar2); //[ 4, 6 ]
... 解构数组
// ES6 的写法 function f(x, y, z) { // ... } let args = [0, 1, 2]; f(...args); 复制数组 const a1 = [1, 2]; const a2 = a1;//引用 a2[0] = 2; a1 // [2, 2] const a1 = [1, 2]; // 写法一 const a2 = [...a1];//浅复制 // 写法二 const [...a2] = a1; 上面的两种写法,a2都是a1的克隆 引用实际的内容只有一个 浅复制,如果是简单类型,相当于独立的两份,如果是复合对象{}那还是相当于一份 合并数组 const arr1 = ['a', 'b']; const arr2 = ['c']; const arr3 = ['d', 'e']; // ES5 的合并数组 arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ] // ES6 的合并数组 [...arr1, ...arr2, ...arr3] // [ 'a', 'b', 'c', 'd', 'e' ]
变量作用域提升
JS可以将多个文件拼到一个文件中,那文件2中的变量拼接到新文件后,它的作用域会扩展到新文件吗? 会的 如果不想遇到一些奇怪的问题最好使用ES规范 ES6 新增了let命令,用来声明变量。 它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,也不允许重复声明 let声明的变量不会出现作用域提升的现象,更适合人的思维
function 原型Prototype
JS函数function是一个Function类型的对象,该对象有一个属性叫Prototype,即原型 可以通过原型为function添加一个属性/方法,就相当于高级语言中为类添加一个属性/方法 没错,JS中提到原型,实际上就是将定义的function对象当类用了,原型定义类的属性/方法,供所有对象使用 而单个对象也可以重新定义属性/方法,这将覆盖原型中的定义
将function当作类使用时,必须使用关键字:new
let TPF = function (){}; TPF.prototype.name = "自定义类"; TPF.prototype.log = function(msg){ console.log(msg); } let ta = new TPF(); ta.log("test")
ES6字符串的新增方法
String.fromCodePoint() String.raw() 实例方法:codePointAt() 实例方法:normalize() 实例方法:includes(), startsWith(), endsWith() 实例方法:repeat() 实例方法:padStart(),padEnd() 实例方法:trimStart(),trimEnd() 实例方法:matchAll() 实例方法:replaceAll() 实例方法:at()
ES6 允许为函数的参数设置默认值
function log(x, y = 'World') { console.log(x, y); } function Point(x = 0, y = 0) { this.x = x; this.y = y; } const p = new Point(); p // { x: 0, y: 0 }
参数默认值可以与解构赋值的默认值,结合起来使用
function foo({x, y = 5}) { console.log(x, y); } foo({}) // undefined 5 foo({x: 1}) // 1 5 foo({x: 1, y: 2}) // 1 2 foo() // TypeError: Cannot read property 'x' of undefined
ES5属性简写:当属性名与值的变量名一致时,可以简化为一个
let name = "红云"; let person = {"name":name}; console.log(person);//Object { name: "红云" } let person2 = {name}; console.log(person2);//Object { name: "红云" } {name} 等价于 {"name":name}
function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2}
方法的简写
const o = { method() { return "Hello!"; } }; // 等同于 const o = { method: function() { return "Hello!"; } };
JS Map
let TPF = function (){}; TPF.prototype.name = "自定义类"; TPF.prototype.log = function(msg){ console.log(msg); } let ta = new TPF(); ta.log("test") ta.map_show = function(){ let map = new Map(); map.set('a', "A"); map.set('b', false); map.set('c', 3); map.set('a', 4);//旧值被覆盖 ta.log(map.size);//3 ta.log(map.has('a'));//true map.clear(); map.set('a', "A"); map.set('b', false); map.set('c', 3); for (let key of map.keys()) { } for (let value of map.values()) { } //下面这三个for循环效果完全一样,选一个即可 for (let [key, value] of map) { console.log(key, value); } for (let item of map.entries()) { console.log(item[0], item[1]); } for (let [key, value] of map.entries()) { console.log(key, value); } } ta.map_show()
二维数组与map
const map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], ]); [...map.keys()] // [1, 2, 3] [...map.values()] // ['one', 'two', 'three'] [...map.entries()] // [[1,'one'], [2, 'two'], [3, 'three']] [...map] // [[1,'one'], [2, 'two'], [3, 'three']]
结合数组的map方法、filter方法,可以实现 Map 的遍历和过滤(Map 本身没有map和filter方法)
const map0 = new Map() .set(1, 'a') .set(2, 'b') .set(3, 'c'); const map1 = new Map( [...map0].filter(([k, v]) => k < 3) ); // 产生 Map 结构 {1 => 'a', 2 => 'b'} const map2 = new Map( [...map0].map(([k, v]) => [k * 2, '_' + v]) ); // 产生 Map 结构 {2 => '_a', 4 => '_b', 6 => '_c'}
Proxy/拦截器
var obj = {name:3}; var p = new Proxy(obj, { get: function(target, propKey,receiver) { console.log(target);//Object { name: 3 } console.log(propKey);//age console.log(receiver);//更像是自身... return 37; }, set: function (target, propKey, value, receiver) { console.log(`setting ${propKey}!`); return Reflect.set(target, propKey, value, receiver); }, apply: function(target, thisBinding, args) { return args[0]; }, construct: function(target, args) { return {value: args[1]}; } }); console.log(p.age);//37
var obj = {name:3}; var p = new Proxy(obj, { get: function(target, propKey,receiver) { if (propKey in target) { return target[propKey]; } else { throw new ReferenceError(" \"" + propKey + "\" does not exist."); } } }); console.log(p.name);//3 console.log(p.age);//Uncaught ReferenceError: "age" does not exist.
快速启动一个web服务
进入web的根目录 如果是python3 python -m http.server 8801 & 如果是python2 python -m SimpleHTTPServer 8801 &
html基础标签介绍及演示代码 22个超详细的 JS 数组方法