0x1 前端

  1. 什么是前端

    • 解决图形用户界面(GUI)人机交互的问题
    • 跨终端
      • PC/移动浏览器
      • 客户端/小程序
      • VR/AR 等
    • Web 技术栈

    一句话总结前端工程师的工作:使用 Web 技术栈解决多端 GUI 人机交互问题

  2. 前端技术栈

    在浏览网页时:

    1. 在浏览器中,通过 HTML 展示结构和内容,通过 CSS 表现样式,通过 JavaScript 控制行为
    2. 在服务器中,渲染 “HCJ” 的代码,使其图形化
    3. 通过各种网络协议(HTTP,TCP/IP)等,完成人机交互

    由此可见,前端的技术栈主要为 三件套网络协议,其中,三件套为前端的范畴

  3. 前端应该关注功能、美观、无障碍、安全、性能、兼容性、用户体验

  4. 前端的科技树

    • 通过node.js开发服务端
    • 通过ElectronReactNative开发客户端
    • 通过WebRTC开发 P2P 型在线传输,实现多人会议等
    • 通过WebGL开发一些 3D 游戏
    • 通过WebAssembly将 C++ 等代码编译渲染成网页
  5. 开发环境

    1. 浏览器

      IE/Edge Chrome Firefox Safari

    2. 编辑器

      VSCode Vim WebStorm

0x2 HTML

  1. 什么是 HTML

    超文本标记语言:HyperText Markup Language

    • 超文本(HyperText):即除文本外,还包含图片、视频等信息表达形式

    • 标记语言(Markup Language):即使用标签化的语言(如<p>段落</p>

      • 在标签化的语言中,可以在标签中添加属性,如<p color="xxx"></p>中的color就是属性名、xxx就是属性值

      • 当某个标签中不需要嵌套其他标签时,可以省略结束标签,如<br />

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <title>页面标题</title>
    </head>
    <body>
    <h1>一级标题</h1>
    <p>一个段落</p>
    </body>
    </html>

    对于上述的一段简单的 HTML 代码,其中:

    1. <!DOCTYPE html>用于说明使用的 HTML 版本
    2. <html></html>是页面的根标签
    3. <head></head>用于存放页面的源数据
    4. <body></body>用于存放需要面向用户展示的内容
  2. 文档对象模型(DOM)树

    再次以上述代码举例,其对应的 DOM 树如下:

    graph LR
    A(document)-->B(< html >)
    B-->C(< head >)
    B-->D(< body >)
    C-->E(< meta >)
    C-->F(< title >)
    D-->G(< h1 >)
    D-->H(< p >)
  3. HTML 语法

    • 标签和属性不区分大小写,推荐使用小写
    • 空标签可以不闭合,如<input />
    • 属性值推荐使用双引号包裹
    • 某些属性值可以省略,如requiredreadonly
  4. 标签

    1. 标题(h1~h6

    2. 列表

      1. 有序列表

        <ol>
        <li>第一项</li>
        <li>第二项</li>
        <li>第三项</li>
        </ol>
      2. 无序列表

        <ul>
        <li>xyz</li>
        <li>abc</li>
        <li>!@#</li>
        </ul>
      3. key-value

        <dl>
        <dt>xxx:</dt>
        <dd>xxx1</dd>
        <dt>yyy:</dt>
        <dd>yyy1</dd>
        <dd>yyy2</dd>
        <dd>yyy3</dd>
        </dl>
    3. 链接

      <a href="http://example.com" target="_blank">链接</a>
    4. 多媒体

      图片:<img src="xxx.jpg" alt="替代性文本" width="200" />

      音频:<audio src="xxx.wav" controls />

      视频:<video src="xxx.avi" coontrols />

    5. 输入

      输入提示:<input placeholder="提示文本" />

      条状选择:<input type="range" />

      范围输入:<input type="number" />

      日期输入:<input type="date" min="2000-01-01" />

      多行输入:<textarea>多行输入文本</textarea>

      单选输入:

      <label><input type="radio" name="xxx">a</label>
      <label><input type="radio" name="xxx">b</label>

      多选输入:

      <label><input type="checkbox" name="xxx">a</label>
      <label><input type="checkbox" name="xxx">a</label>

      下拉选择:

      <select>
      <option>a</option>
      <option>b</option>
      <option>c</option>
      </select>

      辅助输入:

      <input list="lists" />
      <datalist id="lists">
      <option>aaa</option>
      <option>bbb</option>
      <option>ccc</option>
      </datalist>
    6. 文本

      长引用:

      <blockquote cite="引用地址">
      <p>xxxxx</p>
      </blockquote>

      短引用:

      • 作品引用

        <p>
        xxx<cite>yyy</cite>zzz
        </p>
      • 内容引用

        <p>
        xxx<q>yyy</q>zzz
        </p>

      代码引用:<p><code></code></p>

      多行代码:<pre><code></code></pre>

      加粗:<strong></strong>

      斜体:<em></em>

  5. 内容划分

    graph TB
    A(header 头部内容)-->B(nav 导航)
    A-->C(main 主体内容)
    A-->D(aside 附加内容)
    C-->E(article 文章)
    E-->F(footer 足部内容)

0x3 HTML 语义化

  1. 什么是语义化

    • HTML 中的元素、属性及属性值都拥有某些含义

    • 开发者应该遵循语义来编写 HTML

  2. 好处

    • 代码可读性
    • 可维护性
    • 搜索引擎优化
    • 提升无障碍性
  3. 传达内容,而非样式

  4. 如何做到

    • 了解每个标签和属性的含义
    • 选择最适合描述内容的标签
    • 不使用可视化工具生成代码

首发于前端与 HTML | 青训营笔记

End

前端与 HTML的更多相关文章

  1. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  2. 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)

    前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...

  3. 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

    记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...

  4. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  5. Fis3的前端工程化之路[三大特性篇之声明依赖]

    Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...

  6. Fis3的前端工程化之路[三大特性篇之内容嵌入]

    Fis3版本:v3.4.22 Fis3的三大特性 资源定位:获取任何开发中所使用资源的线上路径 内容嵌入:把一个文件的内容(文本)或者base64编码(图片)嵌入到另一个文件中 依赖声明:在一个文本文 ...

  7. Fis3的前端模块化之路[基础篇]

    Fis3版本:v3.4.22 fis3是一个构建工具 解决前端开发中自动化工具.性能优化.模块化框架.开发规范.代码部署.开发流程等问题. 安装 npm install -g fis3 运行 fis3 ...

  8. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  9. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  10. 前端框架 EasyUI (0) 重新温习(序言)

    几年前,参与过一个项目.那算是一个小型的信息管理系统,BS 结构的,前端用的是基于 jQuery 的 EasyUI 框架. 我进 Team 的时候,项目已经进入开发阶段半个多月了.听说整个项目的框架是 ...

随机推荐

  1. 【苹果】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本

    前言 缘由 Iphone15来了,两年之约你还记得吗? 遂整合之前iphone13及iphone14的相关抢购代码,完成一个SpringBoot监听Iphone15有货邮件提醒+python自动化脚本 ...

  2. harbor 安装

    下载地址: https://github.com/goharbor/harbor/releases?page=1 下载了多个版本,发现仅v1.10.17版本支持GC清理,所以这里安装的v1.10.17 ...

  3. 14 CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C. Tenzing and Balls(dp+前缀最大值优化)

    思路: dp还是挺明显的,思路可以参考最长上升子序列 有点dp的感觉 \(f[i]\)表示考虑前\(i\)个数,的最大值 当前数有两种删或不删 不删:\(f[i]=f[i-1]\); 删:\(f[i] ...

  4. 探究WPF中文字模糊的问题:TextOptions的用法

    有网友问WPF中一些文字模糊是什么问题.之前我也没有认真思考过这个问题,只是大概知道和WPF的像素对齐(pixel snapping).抗锯齿(anti-aliasing)有关,通过设置附加属性Tex ...

  5. be动词 系动词 连缀动词 Linking Verb

    be动词 系动词 连缀动词 Linking Verb be 原型 am 第一人称单数形式 is 第三人称单数形式 are 第二人称单数和复数形式 been 过去分词 being 现在分词 was 第一 ...

  6. day06-Java流程控制

    Java流程控制 1.用户交互Scanner java.util.Scanner是Java5的新特征,我们可以通过Scannner类来获取用户的输入. 基本语法: Scanner s = new Sc ...

  7. Tomcat异常之 Exception loading sessions from persistent storage解决方案

    启动项目时报以下异常 严重: Exception loading sessions from persistent storage java.io.EOFException 遇到上述异常,删除Tomc ...

  8. eclipse错误之Could not write metadata for "xxx"

    Could not write metadata for '/test'. 这是由于删除一个项目时,没有同时在硬盘上删除该项目,而后又到硬盘文件系统中删除了该项目,才出现这问题的. 到eclipse工 ...

  9. 【个人笔记】Nestjs使用TypeORM注意点

    在Nestjs使用TypeORM还是有一些注意点. entities路径配置注意点 在nestjs中使用TypeORM,需要配置数据库连接(以MySQL为例).需要特别注意的是配置参数里面的entit ...

  10. 项目性能优化—使用JMeter压测SpringBoot项目

    项目性能优化-使用JMeter压测SpringBoot项目 我们的压力测试架构图如下: 配置JMeter 在JMeter的bin目录,双击jmeter.bat 新建一个测试计划,并右键添加线程组: 进 ...