前端与HTML|青训营笔记

55 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

前端的概述

前端是什么?

  • 解决GUI人机交互问题
  • 跨终端
    • pc/移动浏览器
    • 客户端/小程序
    • vr/ar等
  • web技术栈

前端工程师就是使用web技术栈解决多端图形用户界面交互问题的工程师

前端技术栈

html 页面结构和内容 css 样式(页面大小etc) js 定义行为 ——运行在浏览器中 以上与服务器端通过http网络协议进行交互

前端应该关注哪些方面

  • 功能
  • 美观
  • 无障碍 access ability
  • 安全(用户数据的安全)
  • 性能(速度
  • 兼容性
  • 用户体验

前端的边界

nodejs 服务器端 Electron 客户端 React Native 客户端 Web RTC ttp在线传输,多人会议 WebGL 3d游戏 WebASSEMBLY 转c等代码为js等可在浏览器中使用的代码

HTML介绍

开发环境

  • 浏览器 IE edge chrome firefox safari
  • 编辑器 vscode vim webstorm

HTML是什么

HyperText Markup Language 超文本 (图片、标题、链接、表格) 标记语言

  • <h1>文章标题</h1> 开始标签和结束标签成对出现
  • <img src="photo.jpg" />可在标签上设置属性 属性名 = "属性值"

HTML代码

<!doctype html> 标记了当前在使用html文件的版本,浏览器会按照其选择渲染模式,如果不写,浏览器会按照老旧的怪异模式(quirks mode)渲染 怪异模式的判断可参见blog.csdn.net/lamanchas/a… <html>标签是根标签,所有其他的标签都是写在html标签里的 <head>标签中放页面的元数据,如:页面编码、标题 <body>标签中放呈现给用户的内容

DOM树

DOM结点

HTML语法

  • 标签和属性不区分大小写,推荐小写 原生标签:小写,自定义的组件:大写
  • 空标签可以不闭合,可以不用结束标签,如input meta
  • 属性值推荐用双引号包裹
  • 某些属性值可以省略,比如required 、readonly

标题h1~h6

<h1>字体排印学</h1>
<h2>历史</h2>
<p>活字的雏形或可追溯至公元前两千年前后美
索不达米亚文明的乌鲁克和拉尔萨,砖块上面不
均匀的印花被视作有可能是活字思想雏形。</p>
<h3>印刷体源流</h3>
<p>中国在唐代就已经出现雕版印刷术,公元868
年的《金刚经》是现存最古老的印刷品之一,使用
的技术即是木雕版印刷。</p>
<h2>应用</h2>
<p>...</p>

列表

<ol> order list 有序列表

<ul>undefine order list 无序列表


<dl>描述列表

<dt>

<dd>描述值

链接

<a href="www.sth.com" target="_blank"> target="_blank"指并不是在原有页面打开,而是在新标签页打开该页面

多媒体

图片

<img src="sth.jpg" alt="Metal movable type" width = "400" /> `alt = "Metal movable type" 指替代文本 应用场景:省流量或加载失败时,内容降级

音频

<audio src="/assets/music.ogg" controls></audio> controls默认出现控制条

视频

<video></video>

输入

表单

<input placeholder="请输入用户名" /> placeholder占位值 <input type="range" /> <input type="number" min="1" max="10" /> <input type="date" min="2018-02-10" /> <textarea>Hey</textarea>

code style : js 中 type = "sth" html 中 type="number" />结束标签前要有空格

选择

多选框

<label><input type="checkbox" />🍎</label>

<label><input type="checkbox" checked />🍏</label>

单选

<label><input type="radio" name="sport" />⚽️</label>

<label><input type="radio" name="sport" />🏀</label>

互斥关系通过name相同达成

文本

<blockquote>块级引用 <cite></cite>短引用 ——作品 <q></q>之前内容的引用,短引用 ——内容 <code></code>引用 ——代码,可多行


<pre></pre>是为了做格式化

<pre>标记定义预格式化的文本。

pre 元素中的文本以固定宽度显示字体displayed in a fixed-width font,它保留spaces空格和line breaks换行符.文本将完全按照 HTML 源代码中所写的方式显示。

支持全局属性和事件属性。

其默认的css设置如下

pre {  
  display: block;  
  font-family: monospace;  
  white-space: pre;  
  margin1em 0;  
}

强调,加粗,着重 <strong></strong> 非常紧急的 “事” <em></em> 语气上的强调 “词”

内容整体划分

image.png

一个页面一般只有一个main元素 aside表示与页面相关,但不是直接属于页面内容,如推荐等 正文一般放在main->article中 footer放在页尾,包含参考链接、版权等

语义化

语义化是什么?

html中的元素、属性及属性值都拥有某些含义 开发者应该遵循语义来编写HTML

如: 有序列表用ol;无序列表用ul; lang属性表示内容所使用的语言

为什么强调语义化的方式写HTML——谁在使用我们写的HTML

  • 开发者:修改、维护页面——便于协作
  • 浏览器:展示页面
  • 搜索引擎:提取关键词、排序——依据在于html中,对搜索引擎优化很重要,在DOM树不同位置权重不同
  • 屏幕阅读器:给盲人读页面内容(无障碍)

语义化的好处

  • 代码可读性
  • 可维护性
  • 搜索引擎优化
  • 提升无障碍性

语义化的关键——传达内容,而不是样式

<p style="font-size:32px">前端工程师的自我修养</p>

<h1>前端工程师的自我修养</h1>

如何做到语义化

  • 了解每个标签和属性的含义
    • MDN、W3C(HTML5规范)
  • 思考什么标签最适合描述这个内容
  • 不建议用可视化工具生成代码——无法控制生成的标签是否语义化