<body>hellobody>
<body id="myId">hellobody>
- <html>
- <head>
- <title>第一个页面title>
- head>
- <body>
- hello world
- body>
- html>
- <html>
- <head>
- <title>第一个页面title>
- head>
- <body>
- hello world
- body>
- html>
其中:head 和 body 是 html 的子标签(html 就是 head 和 body 的父标签)title 是 head 的子标签. head 是 title 的父标签.head 和 body 之间是兄弟关系.

标签之间的结构关系, 构成了一个 DOM 树。DOM 是 Document Object Mode (文档对象模型) 的缩写.

1.4 快速生成代码框架
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- head>
- <body>
-
- body>
- html>
ctrl + / 快捷键可以快速进行注释/取消注释.
- <h1>helloh1>
- <h2>helloh2>
- <h3>helloh3>
- <h4>helloh4>
- <h5>helloh5>
- <h6>helloh6>
css中的 1px 并不等于设备的 1px在css 中我们一般使用 px 作为单位,在桌面浏览器中 css 的 1 个像素往往都是对应着电脑屏幕的 1 个物理像素,这可能会造成我们的一个错觉,那就是css 中的像素就是设备的物理像素。但实际情况却并非如此, css中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css 中的 1px 所代表的设备物理像素是不同的。在为桌面浏览器设计的网页中,我们无需对这个津津计较,但在移动设备上,必须弄明白这点。在早先的移动设备中,屏幕像素密度都比较低,如iphone3 ,它的分辨率为 320x480 ,在 iphone3 上,一个 css 像素确实是等于一个屏幕物理像素的。后来随着技术的发展,移动设备的屏幕像素密度越来越高,从iphone4 开始,苹果公司便推出了所谓的Retina 屏,分辨率提高了一倍,变成 640x960 ,但屏幕尺寸却没变化,这就意味着同样大小的屏幕上,像素却多了一倍,这时,一个css 像素是等于两个物理像素的。其他品牌的移动设备也是这个道理。例如安卓设备根据屏幕像素密度可分为ldpi 、 mdpi 、 hdpi 、 xhdpi 等不同的等级,分辨率也是五花八门,安卓设备上的一个css 像素相当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。还有一个因素也会引起css 中 px 的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么 css 中1px所代表的物理像素也会增加一倍;反之把页面缩小一倍, css 中 1px 所代表的物理像素也会减少一倍。关于这点,在文章后面的部分还会讲到。在移动端浏览器中以及某些桌面浏览器中,window 对象有一个 devicePixelRatio 属性,它的官方的定义为:设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 /独立像素。css 中的 px 就可以看做是设备的独立像素,所以通过 devicePixelRatio ,我们可以知道该设备上一个css 像素代表多少个物理像素。例如,在 Retina 屏的 iphone 上, devicePixelRatio 的值为 2 ,也就是说1 个 css 像素相当于 2 个物理像素。但是要注意的是, devicePixelRatio 在不同的浏览器中还存在些许的兼容性问题,所以我们现在还并不能完全信赖这个东西,具体的情况可以看下这篇文章。

<p>这是一个段落p>
- <p>css中的1px并不等于设备的1pxp>
- <p>
- 在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像
- 素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。但实际情况却并非如此,css
- 中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同
- 的。在为桌面浏览器设计的网页中,我们无需对这个津津计较,但在移动设备上,必须弄明白这点。在早先的
- 移动设备中,屏幕像素密度都比较低,如iphone3,它的分辨率为320x480,在iphone3上,一个css像素确
- 实是等于一个屏幕物理像素的。后来随着技术的发展,移动设备的屏幕像素密度越来越高,从iphone4开始,
- 苹果公司便推出了所谓的Retina屏,分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着
- 同样大小的屏幕上,像素却多了一倍,这时,一个css像素是等于两个物理像素的。其他品牌的移动设备也是
- 这个道理。例如安卓设备根据屏幕像素密度可分为ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五
- 花八门,安卓设备上的一个css像素相当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。
- p>
- <p>
- 还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中
- 1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。关于
- 这点,在文章后面的部分还会讲到。
- p>
- <p>
- 在移动端浏览器中以及某些桌面浏览器中,window对象有一个devicePixelRatio属性,它的官方的
- 定义为:设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 /
- 独立像素。css中的px就可以看做是设备的独立像素,所以通过devicePixelRatio,我们可以知道该
- 设备上一个css像素代表多少个物理像素。例如,在Retina屏的iphone上,devicePixelRatio的值为2,
- 也就是说1个css像素相当于2个物理像素。但是要注意的是,devicePixelRatio在不同的浏览器中还存在
- 些许的兼容性问题,所以我们现在还并不能完全信赖这个东西,具体的情况可以看下这篇文章。
- p>

注意:
- <p>
- 在css中我们一般使用px作为单位,<br/>
- 在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像素,这可能会造成我们的一个错觉,
- 那就是css中的像素就是设备的物理像素。但实际情况却并非如此,css中的像素只是一个抽象的单位,在不
- 同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同的。在为桌面浏览器设计的网页中,我
- 们无需对这个津津计较,但在移动设备上,必须弄明白这点。在早先的移动设备中,屏幕像素密度都比较低,
- 如iphone3,它的分辨率为320x480,在iphone3上,一个css像素确实是等于一个屏幕物理像素的。后来随
- 着技术的发展,移动设备的屏幕像素密度越来越高,从iphone4开始,苹果公司便推出了所谓的Retina屏,
- 分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着同样大小的屏幕上,像素却多了一倍,
- 这时,一个css像素是等于两个物理像素的。其他品牌的移动设备也是这个道理。例如安卓设备根据屏幕像素
- 密度可分为ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五花八门,安卓设备上的一个css像素相
- 当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。
- p>

2.5 综合案例: 展示博客

提示:
- <strong>strong 加粗strong>
- <b>b 加粗b>
- <em>倾斜em>
- <i>倾斜i>
- <del>删除线del>
- <s>删除线s>
- <ins>下划线ins>
- <u>下划线u>

使用 CSS 也可以完成类似的效果. 实际开发中以 CSS 方式为主.
<img src="rose.jpg">
- <img src="rose.jpg" alt="鲜花" title="这是一朵鲜花" width="500px" height="800px"
- border="5px">
注意:1. 属性可以有多个, 不能写到标签之前2. 属性之间用空格分割, 可以是多个空格, 也可以是换行.3. 属性之间不分先后顺序4. 属性使用 "键值对" 的格式来表示.
<img src="image/rose2.jpg" alt="">
<img src="../rose.jpg" alt="">
<img src="D:/rose.jpg" alt="">
- <img src="https://images0.cnblogs.com/blog/130623/201407/300958475557219.png"
- alt="">
<a href="http://www.baidu.com">百度a>
<a href="http://www.baidu.com">百度a>
- 我是 1.html
- <a href="2.html">点我跳转到 2.htmla>
- 我是 2.html
- <a href="1.html">点我跳转到 1.htmla>
<a href="#">空链接a>
<a href="test.zip">下载文件a>
- <a href="http://www.sogou.com">
- <img src="rose.jpg" alt="">
- a>
- <a href="#one">第一集a>
- <a href="#two">第二集a>
- <a href="#three">第三集a>
- <p id="one">
- 第一集剧情 <br>
- 第一集剧情 <br>
- ...
- p>
- <p id="two">
- 第二集剧情 <br>
- 第二集剧情 <br>
- ...
- p>
- <p id="three">
- 第三集剧情 <br>
- 第三集剧情 <br>
- ...
- p>
禁止 a 标签跳转: 或者

提示:
- <h1>meta name="viewport" content="width=device-width,initial-scale=1.0" 解释h1>
- <h3>蒂其之死h3>
- <p>
- 简单来说 meta name="viewport" content="width=device-width,initial-scale=1.0"
- 解释
- p>
- <p>
- content属性值 : <br>
- width:可视区域的宽度,值可为数字或关键词device-width<br>
- height:同width<br>
- intial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放
- <br>
- maximum-scale=1.0, minimum-scale=1.0;可视区域的缩放级别,<br>
- maximum-scale用户可将页面放大的程序,1.0将禁止用户放大到实际尺寸之上。<br>
- user-scalable:是否可对页面进行缩放,no 禁止缩放<br>
- p>
- <p>
- 复杂的说:<br>
- 移动前端开发之viewport的深入理解<br>
- 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了
- viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或响应各
- 种不同分辨率的移动设备。<br>
- p>
- <h2>
- 一、viewport的概念
- h2>
- <p>
- 通俗的讲,移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,在具体一
- 点,就是浏览器上(也可能是一个app中的webview)用来显示网页的那部分区域,但viewport又不局限于浏
- 览器可视区域的大小,它可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。在默认情况下,一
- 般来讲,移动设备上的viewport都是要大于浏览器可视区域的,这是因为考虑到移动设备的分辨率相对于桌
- 面电脑来说都比较小,所以为了能在移动设备上正常显示那些传统的为桌面浏览器设计的网站,移动设备上的
- 浏览器都会把自己默认的viewport设为980px或1024px(也可能是其它值,这个是由设备自己决定的),但
- 带来的后果就是浏览器会出现横向滚动条,因为浏览器可视区域的宽度是比这个默认的viewport的宽度要小
- 的。下图列出了一些设备上浏览器的默认viewport的宽度。
- p>
- <img src="1.png" alt="">
- <h2>
- 二、css中的1px并不等于设备的1px
- h2>
- <p>
- 在css中我们一般使用px作为单位,在桌面浏览器中css的1个像素往往都是对应着电脑屏幕的1个物理像
- 素,这可能会造成我们的一个错觉,那就是css中的像素就是设备的物理像素。但实际情况却并非如此,css
- 中的像素只是一个抽象的单位,在不同的设备或不同的环境中,css中的1px所代表的设备物理像素是不同
- 的。在为桌面浏览器设计的网页中,我们无需对这个津津计较,但在移动设备上,必须弄明白这点。在早先的
- 移动设备中,屏幕像素密度都比较低,如iphone3,它的分辨率为320x480,在iphone3上,一个css像素确
- 实是等于一个屏幕物理像素的。后来随着技术的发展,移动设备的屏幕像素密度越来越高,从iphone4开始,
- 苹果公司便推出了所谓的Retina屏,分辨率提高了一倍,变成640x960,但屏幕尺寸却没变化,这就意味着
- 同样大小的屏幕上,像素却多了一倍,这时,一个css像素是等于两个物理像素的。其他品牌的移动设备也是
- 这个道理。例如安卓设备根据屏幕像素密度可分为ldpi、mdpi、hdpi、xhdpi等不同的等级,分辨率也是五
- 花八门,安卓设备上的一个css像素相当于多少个屏幕物理像素,也因设备的不同而不同,没有一个定论。
- p>
- <p>
- 还有一个因素也会引起css中px的变化,那就是用户缩放。例如,当用户把页面放大一倍,那么css中
- 1px所代表的物理像素也会增加一倍;反之把页面缩小一倍,css中1px所代表的物理像素也会减少一倍。关于
- 这点,在文章后面的部分还会讲到。
- p>
- <p>
- 在移动端浏览器中以及某些桌面浏览器中,window对象有一个devicePixelRatio属性,它的官方的
- 定义为:设备物理像素和设备独立像素的比例,也就是 devicePixelRatio = 物理像素 /
- 独立像素。css中的px就可以看做是设备的独立像素,所以通过devicePixelRatio,我们可以知道该
- 设备上一个css像素代表多少个物理像素。例如,在Retina屏的iphone上,devicePixelRatio的值为2,
- 也就是说1个css像素相当于2个物理像素。但是要注意的是,devicePixelRatio在不同的浏览器中还存在
- 些许的兼容性问题,所以我们现在还并不能完全信赖这个东西,具体的情况可以看下
- <a
- href="http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html">这篇
- 文章a>。
- p>
- <img src="2.png" alt="">
表格标签有一些属性, 可以用于设置大小边框等. 但是一般使用 CSS 方式来设置.这些属性都要放到 table 标签中.
- align 是表格相对于周围元素的对齐方式. align="center" (不是内部元素的对齐方式)
- border 表示边框. 1 表示有边框(数字越大, 边框越粗), "" 表示没边框.
- cellpadding: 内容距离边框的距离, 默认 1 像素
- cellspacing: 单元格之间的距离. 默认为 2 像素
- width / height: 设置尺寸.
注意, 这几个属性, vscode 都提示不出来.
- <table align="center" border="1" cellpadding="20" cellspacing="0" width="500"
- height="500">
- <tr>
- <td>姓名td>
- <td>性别td>
- <td>年龄td>
- tr>
- <tr>
- <td>张三td>
- <td>男td>
- <td>10td>
- tr>
- <tr>
- <td>李四td>
- <td>女td>
- <td>11td>
- tr>
- table>
- <table align="center" border="10" cellpadding="20" cellspacing="0" width="500"
- height="500">
- <tr>
- <td>姓名td>
- <td>性别td>
- <td>年龄td>
- tr>
- <tr>
- <td>张三td>
- <td colspan="2">男td>
- tr>
- <tr>
- <td>李四td>
- <td>女td>
- <td>11td>
- tr>
- table>
注意
- 元素之间是并列关系
- ul/ol 中只能放 li 不能放其他标签, dl 中只能放 dt 和 dd
- li 中可以放其他标签.
- 列表带有自己的样式, 可以使用 CSS 来修改. (例如前面的小圆点都会去掉)
- <h3>无序列表h3>
- <ul>
- <li>咬人猫li>
- <li>兔总裁li>
- <li>阿叶君li>
- ul>
- <h3>有序列表h3>
- <ol>
- <li>咬人猫li>
- <li>兔总裁li>
- <li>阿叶君li>
- ol>
- <h3>自定义列表h3>
- <dl>
- <dt>我的老婆们dt>
- <dd>咬人猫dd>
- <dd>兔总裁dd>
- <dd>阿叶君dd>
- dl>

2.12 表单标签
- <form action="test.html">
- ... [form 的内容]
- form>
<input type="text">
<input type="password">
- 性别:
- <input type="radio" name="sex">男
- <input type="radio" name="sex" checked="checked">女
注意: 单选框之间必须具备相同的 name 属性, 才能实现 多选一 效果.
- 爱好:
- <input type="checkbox"> 吃饭 <input type="checkbox"> 睡觉 <input type="checkbox">
- 打游戏
<input type="button" value="我是个按钮">
<input type="button" value="我是个按钮" onclick="alert('hello')">
- <form action="test.html">
- <input type="text" name="username">
- <input type="submit" value="提交">
- form>
提交按钮必须放到 form 标签内. 点击后就会尝试给服务器发送
![]()
7) 清空按钮
- <form action="test.html">
- <input type="text" name="username">
- <input type="submit" value="提交">
- <input type="reset" value="清空">
- form>
清空按钮必须放在 form 中. 点击后会将 form 内所有的用户输入内容重置.
<input type="file">
点击选择文件, 会弹出对话框, 选择文件.
<label for="male">男label> <input id="male" type="radio" name="sex">
2.14 select 标签
- <select>
- <option>北京option>
- <option selected="selected">上海option>
- select>
- <select>
- <option>--请选择年份--option>
- <option>1991option>
- <option>1992option>
- <option>1993option>
- <option>1994option>
- <option>1995option>
- select>
- <textarea rows="3" cols="50">
-
- textarea>
文本域中的内容, 就是默认内容, 注意, 空格也会有影响.rows 和 cols 也都不会直接使用, 都是用 css 来改的.
- <div>
- <span>咬人猫span>
- <span>咬人猫span>
- <span>咬人猫span>
- div>
- <div>
- <span>兔总裁span>
- <span>兔总裁span>
- <span>兔总裁span>
- div>
- <div>
- <span>阿叶君span>
- <span>阿叶君span>
- <span>阿叶君span>
- div>

- <h1>某某某h1>
- <div>
- <h2>基本信息h2>
- <img src="image/profile.jpg">
- <p><span>求职意向:span>Java 开发工程师p>
- <p><span>联系电话:span>XXX-XXX-XXXXp>
- <p><span>邮箱:span>xxx@foxmail.comp>
- <p><a href="https://github.com">我的 githuba>p>
- <p><a href="https://csdn.com">我的 博客a>p>
- div>
- <div>
- <h2>教育背景h2>
- <ol>
- <li>1990 - 1996 小葵花幼儿园 幼儿园li>
- <li>1996 - 2002 小葵花小学 小学li>
- <li>2002 - 2005 小葵花中学 初中li>
- <li>2005 - 2008 小葵花中学 高中li>
- <li>2008 - 2012 小葵花大学 计算机专业 本科li>
- ol>
- div>
- <div>
- <h2>专业技能h2>
- <ul>
- <li>Java 基础语法扎实,已经刷了 800 道 Leetcode 题;li>
- <li>常见数据结构都可以独立实现并熟练应用;li>
- <li>熟知计算机网络理论,并且可以独立排查常见问题;li>
- <li>掌握 Web 开发能力,并且独立开发了学校的留言墙功能。li>
- ul>
- div>
- <div>
- <h2>我的项目h2>
- <ol>
- <li>
- <h3>留言墙h3>
- <p>开发时间:2008年9月 到 2008年12月p>
- <p>功能介绍:
- <ul>
- <li>支持留言发布li>
- <li>支持匿名留言li>
- ul>
- p>
- li>
- <li>
- <h3>学习小助手h3>
- <p>开发时间:2008年9月 到 2008年12月p>
- <p>功能介绍:
- <ul>
- <li>支持错题检索li>
- <li>支持同学探讨li>
- ul>
- p>
- li>
- ol>
- div>
- <div>
- <h2>个人评价h2>
- <p>在校期间,学习成绩优良,多次获得奖学金。p>
- div>

提示:
- 使用表格进行整体布局
- 使用各种 input 标签 + textarea 实现页面中的输入控件
- input 标签搭配合适的 label 提升用户体验.
- 针对下拉框这种选项较多的, 使用 Emmet 快捷键提高输入效率.
- 图标图片可以去iconfont-阿里巴巴矢量图标库找
- <table width="500px" cellspacing="0">
- <thead>
- <h3>请填写简历信息h3>
- thead>
- <tbody>
- <tr>
- <td>
- <label for="name">姓名label>
- td>
- <td>
- <input type="text" id="name">
- td>
- tr>
- <tr>
- <td>
- 性别
- td>
- <td>
- <input type="radio" name="sex" id="male" checked="checked">
-
-
- <label for="male"><img src="./image/男.png" alt="" width="20px"> 男label>
- <input type="radio" name="sex" id="female">
- <label for="female"><img src="./image/女.png" alt=""
- width="20px">女label>
- td>
- tr>
- <tr>
- <td>
- 出生日期
- td>
- <td>
- <select>
- <option>--请选择年份--option>
- <option>1998option>
- <option>1999option>
- <option>2000option>
- <option>2001option>
- select>
- <select>
- <option>--请选择月份--option>
- <option value="">1option>
- <option value="">2option>
- <option value="">3option>
- <option value="">4option>
- <option value="">5option>
- <option value="">6option>
- <option value="">7option>
- <option value="">8option>
- <option value="">9option>
- <option value="">10option>
- <option value="">11option>
- <option value="">12option>
- select>
- <select>
- <option>--请选择日期--option>
- <option value="">1option>
- <option value="">2option>
- <option value="">3option>
- <option value="">4option>
- <option value="">5option>
- <option value="">6option>
- <option value="">7option>
- <option value="">8option>
- <option value="">9option>
- <option value="">10option>
- <option value="">11option>
- <option value="">12option>
- <option value="">13option>
- <option value="">14option>
- <option value="">15option>
- <option value="">16option>
- <option value="">17option>
- <option value="">18option>
- <option value="">19option>
- <option value="">20option>
- <option value="">21option>
- <option value="">22option>
- <option value="">23option>
- <option value="">24option>
- <option value="">25option>
- <option value="">26option>
- <option value="">27option>
- <option value="">28option>
- <option value="">29option>
- <option value="">30option>
- <option value="">31option>
- select>
- td>
- tr>
- <tr>
- <td>
- 就读学校
- td>
- <td>
- <input type="text">
- td>
- tr>
- <tr>
- <td>
- 应聘岗位
- td>
- <td>
- <input type="checkbox" id="frontend">
- <label for="frontend">前端开发label>
- <input type="checkbox" id="backend">
- <label for="backend">后端开发label>
- <input type="checkbox" id="qa">
- <label for="qa">测试开发label>
- <input type="checkbox" id="op">
- <label for="op">运维开发label>
- td>
- tr>
- <tr>
- <td>
- 掌握的技能
- td>
- <td>
- <textarea name="" id="" cols="30" rows="10">textarea>
- td>
- tr>
- <tr>
- <td>
- 项目经历
- td>
- <td>
- <textarea name="" id="" cols="30" rows="10">textarea>
- td>
- tr>
- <tr>
- <td>td>
- <td>
- <input type="checkbox" id="lisence">
- <label for="lisence">我已仔细阅读过公司的招聘要求label>
- td>
- tr>
- <tr>
- <td>td>
- <td>
- <a href="#">查看我的状态a>
- td>
- tr>
- <tr>
- <td>td>
- <td>
- <h3>请应聘者确认: h3>
- <ul>
- <li>以上信息真实有效li>
- <li>能够尽早去公司实习li>
- <li>能接受公司的加班文化li>
- ul>
- td>
- tr>
- tbody>
- table>
input[tab]
div*3[tab]
div#sex[tab]
div.sex[tab]
ul>li*3[tab]
span+span
div{hello}
div{$.hello}

html 标签就是用 < > 表示的. 因此内容里如果存在 < > , 就会发生混淆.