-
打个分吧:

360FED课程 - HTML

这么穷为什么还花钱买HTML学?

3分钟阅读
-
-

1. 前端做什么

用 web 标准技术 html css js svg http 等

做界面与交互

功能+美观+无障碍+安全+兼容+性能+体验

2. 知识图谱/技术栈

2.1. 语言

  • js
  • html
  • css
  • php

2.2. 行业标准

  • DOM
  • ES2018
  • HTTP
  • JSON
  • XML

2.3. 框架

  • React.js
  • Angular.js
  • jQuery
  • Vue.js
  • lodash

2.4. 兼容性

  • IE 等浏览器
  • CSS3 新特性
  • HTML5 新特性
  • ES2018
  • 移动端

2.5. 编程思想

  • 函数式编程
  • 面向对象
  • 设计模式

2.6. 调试

  • 浏览器
  • Fiddler http

2.7. 工程化

  • npm
  • webpack
  • postcss

2.8. 安全性

  • XSS
  • CSRF
  • 加密解密
  • 编解码

2.9. 性能

  • 优化规则
  • 开发者工具
  • 浏览器原理

2.10. 团队协作

  • git/svn
  • 编码规范/eslint
  • 文档管理

2.11. 交互设计

3. 前端边界

node、electron、react native、webRTC、WebGL、WEBAssembly

4. HTML

4.1. doctype

  • 指定文档使用的标准和版本;
  • 浏览器根据 doctype 决定使用哪种渲染模式;
  • 没写会以怪异模式渲染(盒模型不同等待)
  • 渲染模式

4.2. 语义化

  • 元素、属性、属性值都有特定含义,应该遵循语义来写 HTML
  • 可读性、可维护性、搜索引擎优化、无障碍性

4.3. 标签

4.3.1. flow 流式元素:

  • heading 标题
  • sectioning 章节
  • phrasing 段落内容 p h
  • Embedded 嵌入式内容 audio canvas
  • interactive 可交互性内容 button a
  • metadata 元数据元素 base link meta noscript script style title

4.3.2. 看规范

4.4. HTML 扩展

4.4.1. meta 标签(增加元数据

<!-- 编码 -->
<meta charset="utf-8">

<!-- 指定http header -->
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">

<!-- seo优化 -->
<meta name="keywords" content="关键词">
<meta name="description" content="页面介绍">

<!-- 移动设备的viewport 初始缩放比例,视口宽度 -->
<meta name="viewport" content="initial-scale=1">

<!-- 关闭IOS电话号码识别 -->
<meta name="format-detection" content="telphone=no">

<!-- 360等双核浏览器 指定渲染内核 -->
<meta name="renderer" content="webkit">

<!-- 指定IE渲染模式 -->
<meta name="X-UA-Compatibla" content="IE=Edge">

4.4.2. data-*属性(规范内-自定义的属性)

  datasetAPI
    <el data-id=""/>
    el.dataset.id
  • rel 属性(relation 关系,外部资源与当前页面的关系)
<!-- 引入css -->
<link rel="stylesheet" href="" />

<!--
    浏览器性能优化:dns预解析rel=dns-prefetch、资源预加载rel=prefetch、预渲染 rel=prerender
-->
<link rel="dns-prefetch" href="" /> <link rel="prefetch" href="" />
<link rel="prerender" href="" />

<!-- favicon:rel=icon -->
<link rel="icon" type="image/png" href="" />

<!-- RSS:rel=alternate -->
<link rel="alternate" type="application/rss+xml" href="" />

4.4.4. JSON-LD

LD:linkdata 链接的数据 (直接在页面嵌 json 数据)

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Person",
  "name": "John Doe",
  "jobTitle": "Graduate research assistant",
  "affiliation": "University of Dreams",
  "additionalName": "Johnny",
  "url": "http://www.example.com",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1234 Peach Drive",
    "addressLocality": "Wonderland",
    "addressRegion": "Georgia"
  }
}
//  应用例如分享页面时的数据
//  搜索引擎能识别等等
//  分享链接带有一些标题图片等信息
</script>

4.5. Web 无障碍/Accessibility

  • 一些 Web 开发者规范:
    • WCAG2.0
    • ARIA
  • 提升无障碍性
    • img alt
    • noscript
    • input 和 label 对应
    • 图片验证码与语音验证码
    • 文字背景对比度
    • 键盘可操作(tab modal focus)

4.6. 工具

4.7. 参考链接

全局属性

class id style

title

(兼容性最好的 tooltip😂)

tabindex

tab 键控制次序

lang

语言代码(利于语义化机器理解)(语言代码参考手册http://www.runoob.com/tags/html-language-codes.html)

dir

文本方向(rtl ltr auto)

accesskey

元素的键盘访问快捷键(例值为'h'则不同浏览器不同 OS 有不同的操作方式,例 chrome 是 alt + 'h')

(HTML5 全局属性)

data-*属性

属性名不要包含大写字母,在 data- 后必须至少有一个字符。 该属性可以是任何字符串

el.getAttribute("data-xx")

hidden

不需要属性值,隐藏元素,原理是 display:none

contenteditable

元素是否可编辑

contextmenu

(说是目前只有 firefox 支持,亲测没效果

<p contextmenu="mymenu"></p>
<menu id="mymenu">
    <command label="xxx" onclick="fn()"/>
    <command label="xxx" onclick="fn()"/>
</menu>

draggable:(与 HTML5drag 结合用)


<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<p id="drag1" draggable="true" ondragstart="drag(event)">这是一段可移动的段落。可把该段落拖入上下的矩形。</p>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

function allowDrop(ev){
	ev.preventDefault();
}
function drag(ev){
	ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev){
	var data=ev.dataTransfer.getData("Text");
	ev.target.appendChild(document.getElementById(data));
	ev.preventDefault();
}

dropzone 属性:

规定当被拖动的数据在拖放到元素上时,是否被复制### 动或链接,无浏览器支持

sppelcheck:

对元素的文本进行拼写检查

translate 属性:

规定元素内容是否要翻译,=yes|no

遗留

表单元素 属性 datalist select 下拉多选 input 的 multiple 属性 button 的 type 属性默认值 video 不能嵌套 img p 不能嵌套 div figure dfn cite 标签


“因为你永远不知道你不知道的有多少”
上次更新:

评论区