Tian Jiale's Blog

HTML + CSS

HTML 基础

文档声明

文档声明用来告诉浏览器当前网页的版本

<!DOCTYPE html>

语言声明

声明在 html 根标签中

<html lang="en">
  <html lang="zh"></html>
</html>

实体

html 实体用来呈现特殊字符

&nbsp; 空格 &gt; 大于号 &lt; 小于号 &copy; 版权符号

meta 标签

meta 主要用于设置网页中的一些元数据

1.charset 指定网页的字符集
<meta charset="UTF-8" />
2.name 指定的数据的名称 content 指定的数据的内容 keywords 网站的关键字,多个关键字用,隔开 description 用于指定网站的描述 title标签的内容会作为搜索结果的超链接上的文字显示
<meta name="keywords" content="网购,电商" />

3.http-equiv将页面重定向到另一个网站
<meta http-equiv="refresh" content="3;url=https://www.mozilla.org" />

语义化标签

标签的名字表征了标签的用途

h1-h6    标题
p       段落
em        加重
strong     强调
blockquote  长引用
q        短引用
br       换行
header     网页的头部
main      网页的主体部分
footer     网页的底部
nav       网页中的导航
aside     和主体相关的其他内容侧边栏
article    一个独立的文章
section    表示一个独立的区块
div       没有语义
span      行内元素无语义

列表

无序列表,使用ul标签来创建无序列表
    使用li表示列表项

有序列表,使用ol标签来创建无序列表
    使用li表示列表项

定义列表,使用dl标签来创建一个定义列表
    使用dt来表示定义的内容
    使用dd来对内容进行解释说明

列表之间可以互相嵌套

超链接

<a href="https://www.baidu.com">超链接</a> target属性,用来指定超链接打开的位置 可选值: _self 默认值 在当前页面中打开超链接 _blank 在一个新的要么中打开超链接 可以直接将超链接的href属性设置为#,跳转到当前页面 将href属性设置 #目标元素的id属性值,可以跳转到页面的指定位置

图片标签

img这种元素属于替换元素(块和行内元素之间,具有两种元素的特点)
属性:
    src 属性指定的是外部图片的路径(路径规则和超链接是一样的)
    alt 图片的描述,这个描述默认情况下不会显示,有些浏览器在图片无法加载时显示,搜索引擎会根据alt中的内容来识别图片,如果不写alt属性则图片不会被搜索引擎所收录

    width 图片的宽度 (单位是像素)
    height 图片的高度
        - 宽度和高度中如果只修改了一个,则另一个会等比例缩放

    注意:
        一般情况在pc端,不建议修改图片的大小,需要多大的图片就裁多大
        但是在移动端,经常需要对图片进行缩放(大图缩小)

内联框架

内联框架,用于向当前页面中引入一个其他页面

src 指定要引入的网页的路径

frameborder 指定内联框架的边框(inline)

<iframe src="https://www.qq.com" width="200" height="600" frameborder="0"></iframe>

音视频

audio 标签用来向页面中引入一个音频文件

video 标签用来向网页中引入一个视频文件

属性

controls 是否允许用户控制播放
autoplay 音频文件是否自动播放
loop 音乐是否循环播放

例子

<audio src="./source/audio.mp3" controls></audio>

<audio controls>
  <!-- 对不起,您的浏览器不支持播放音频!请升级浏览器! -->
  <source src="./source/audio.mp3" />
  <source src="./source/audio.ogg" />
  <embed src="./source/audio.mp3" type="audio/mp3" width="300" height="100" />
</audio>

表格

<!-- 短表格 -->
<table>
  <tr>
    <td>A1</td>
    <td>B1</td>
    <td>C1</td>
    <td>D1</td>
  </tr>
  <tr>
    <td>A2</td>
    <td>B2</td>
    <td>C2</td>
    <!-- rowspan 纵向的合并单元格 -->
    <td rowspan="2">D2</td>
  </tr>
</table>
<!-- 长表格 -->
<table>
  <thead>
    <tr>
      <th>日期</th>
      <th>收入</th>
      <th>支出</th>
      <th>合计</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>2000.1.1</td>
      <td>500</td>
      <td>200</td>
      <td>300</td>
    </tr>
    <tr>
      <td>2000.1.1</td>
      <td>500</td>
      <td>200</td>
      <td>300</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td></td>
      <td></td>
      <td>合计</td>
      <td>300</td>
    </tr>
  </tfoot>
</table>

注释

<!-- 这是注释 -->

CSS 基础

层叠样式表,用来控制 HTML 展现样式

使用方式

  • 内联样式

    在标签内部通过 style 属性来设置元素的样式

  • 内部样式表

    将样式编写到 head 中的 style 标签里

  • 外部样式表

    将 CSS 样式编写到一个外部的 CSS 文件中通过 link 标签引入

<p style="color: red; font-size: 60px;">今天天气真不错!</p>

<style>
  p {
    color: green;
    font-size: 50px;
  }
</style>

<link rel="stylesheet" href="./style.css" />

语法

选择器,通过选择器可以选中页面中的指定元素

比如 p 的作用就是选中页面中所有的 p 元素

声明块,通过声明块来指定要为元素设置的样式

声明块由一个一个的声明组成。声明是一个名值对结构。一个样式名对应一个样式值,名和值之间以:连接,以;结尾

p {
  color: red;
  font-size: 40px;
}

h1 {
  color: green;
}

选择器

基本选择器

元素选择器

标签名 {
}

id 选择器

#id属性值 {
}

类选择器

.class属性值 {
}

通配选择器

* {
}

复合选择器

交集选择器

语法选择器1选择器2选择器3选择器n{}
交集选择器中如果有元素选择器必须使用元素选择器开头

选择器分组(并集选择器)

语法选择器1,
选择器2,
选择器3,
选择器n {
}

关系选择器

父元素:直接包含子元素的元素叫做父元素

子元素:直接被父元素包含的元素是子元素

祖先元素:直接或间接包含后代元素的元素叫做祖先元素

后代元素:直接或间接被祖先元素包含的元素叫做后代元素

兄弟元素:拥有相同父元素的元素是兄弟元素

子元素选择器

语法:父元素 > 子元素

后代元素选择器

语法:祖先 后代

选择下一个兄弟

语法:前一个 + 下一个

选择下边所有的兄弟

兄 ~ 弟

属性选择器

[属性名]      选择含有指定属性的元素
[属性名=属性值]  选择含有指定属性和属性值的元素
[属性名^=属性值] 选择属性值以指定值开头的元素
[属性名$=属性值] 选择属性值以指定值结尾的元素
[属性名*=属性值] 选择属性值中含有某值的元素的元素

伪类选择器

伪类用来描述一个元素的特殊状态

比如:第一个子元素、被点击的元素、鼠标移入的元素…

:first-child 第一个子元素
:last-child 最后一个子元素
:only-child 没有任何兄弟元素的子元素
:nth-child() 选中第n个子元素
    特殊值
    n 第n个 n的范围0到正无穷
    2n  even 表示选中偶数位的元素
    2n+1  odd 表示选中奇数位的元素

    - 以上这些伪类都是根据所有的子元素进行排序

:first-of-type
:last-of-type
:nth-of-type()
:only-of-type
:empty
- 这几个伪类的功能和上述的类似不通点是他们是在同类型元素中进行排序

a 元素的伪类

:link 用来表示没访问过的链接正常的链接
:visited 用来表示访问过的链接
:hover 用来表示鼠标移入的状态
:active 用来表示鼠标点击

伪元素选择器

伪元素:表示页面中一些特殊的并不真实的存在的元素(特殊的位置)

::first-letter 表示第一个字母
::first-line 表示第一行
::selection 表示选中的内容
::before 元素的开始
::after 元素的最后
    - before  after 必须结合content属性来使用

样式的继承

样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上
利用继承我们可以将一些通用的样式统一设置到共同的祖先元素上,
这样只需设置一次即可让所有的元素都具有该样式

注意:并不是所有的样式都会被继承:
比如 背景相关的,布局相关等的这些样式都不会被继承。

选择器的权重

样式的冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。

选择器的权重

内联样式        1,0,0,0
id选择器        0,1,0,0
类和伪类选择器    0,0,1,0
元素选择器       0,0,0,1
通配选择器       0,0,0,0
继承的样式       没有优先级

可以在某一个样式的后边添加 !important ,则此时该样式会获取到最高的优先级,甚至超过内联样式

单位

像素
    - 屏幕显示器实际上是由一个一个的小点点构成的
    - 不同屏幕的像素大小是不同的像素越小的屏幕显示的效果越清晰
    - 所以同样的200px在不同的设备下显示效果不一样
百分比
    - 也可以将属性值设置为相对于其父元素属性的百分比
    - 设置百分比可以使子元素跟随父元素的改变而改变
em
    - em是相对于元素的字体大小来计算的
    - 1em = 1font-size
    - em会根据字体大小的改变而改变
rem
    - rem是相对于根元素的字体大小来计算

颜色

颜色名
redorangeyellowbluegreen ... ...

RGB值
    - RGB通过三种颜色的不同浓度来调配出不同的颜色
    - R redG green B blue
    - 每一种颜色的范围在 0 - 255 (0% - 100%) 之间
    - 语法rgb(255, 0, 0)

RGBA:
    - 就是在rgb的基础上增加了一个a表示不透明度
    - 需要四个值前三个和rgb一样第四个表示不透明度
        1表示完全不透明   0表示完全透明  .5半透明
 - 语法rgba(106,153,85,0.5)

十六进制的RGB值
    - 颜色浓度通过 00-ff
    - 如果颜色两位两位重复可以进行简写
        #aabbcc --> #abc
 - 语法#红色绿色蓝色

HSL值 HSLA值
    - H 色相(0 - 360)
    - S 饱和度颜色的浓度 0% - 100%
    - L 亮度颜色的亮度 0% - 100%
 - 语法hsla(98, 48%, 40%, 0.658)

盒模型

文档流(normal flow)

- 网页是一个多层的结构,一层摞着一层
- 通过CSS可以分别为每一层来设置样式
- 作为用户来讲只能看到最顶上一层
- 这些层中,最底下的一层称为文档流,文档流是网页的基础
    我们所创建的元素默认都是在文档流中进行排列
- 对于我们来说元素主要有两个状态
    在文档流中
    不在文档流中(脱离文档流)

- 元素在文档流中有什么特点:
    - 块元素
        - 块元素会在页面中独占一行(自上向下垂直排列)
        - 默认宽度是父元素的全部(会把父元素撑满)
        - 默认高度是被内容撑开(子元素)

    - 行内元素
        - 行内元素不会独占页面的一行,只占自身的大小
        - 行内元素在页面中左向右水平排列,如果一行之中不能容纳下所有的行内元素
            则元素会换到第二行继续自左向右排列(书写习惯一致)
        - 行内元素的默认宽度和高度都是被内容撑开

盒模型示例

2021-01-23-23-40-43-28

子元素溢出

如果子元素的大小超过了父元素则子元素会从父元素中溢出
使用 overflow 属性来设置父元素如何处理溢出的子元素
(overflow-xoverflow-y)
可选值
    visible 默认值 子元素会从父元素中溢出在父元素外部的位置显示
    hidden  溢出内容将会被裁剪不会显示
    scroll  生成两个滚动条通过滚动条来查看完整的内容
    auto   根据需要生成滚动条

margin 的折叠

- 相邻的垂直方向外边距会发生重叠现象
- 兄弟元素
    - 兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)
    - 特殊情况:
        如果相邻的外边距一正一负,则取两者的和
        如果相邻的外边距都是负值,则取两者中绝对值较大的

    - 兄弟元素之间的外边距的重叠,对于开发是有利的,所以我们不需要进行处理


- 父子元素
    - 父子元素间相邻外边距,子元素的会传递给父元素(上外边距)
    - 父子外边距的折叠会影响到页面的布局,必须要进行处理

行内元素的盒模型

行内元素的盒模型
    - 行内元素不支持设置宽度和高度
    - 行内元素可以设置padding但是垂直方向padding不会影响页面的布局
    - 行内元素可以设置border垂直方向的border不会影响页面的布局
    - 行内元素可以设置margin垂直方向的margin不会影响布局

盒模型类别

display 用来设置元素显示的类型

可选值
    inline 将元素设置为行内元素
    block 将元素设置为块元素
    inline-block 将元素设置为行内块元素
            行内块既可以设置宽度和高度又不会独占一行
    table 将元素设置为一个表格
    none 元素不在页面中显示

visibility 用来设置元素的显示状态
可选值
    visible 默认值元素在页面中正常显示
    hidden 元素在页面中隐藏 不显示但是依然占据页面的位置

重置样式表

默认样式:
    - 通常情况,浏览器都会为元素设置一些默认样式
    - 默认样式的存在会影响到页面的布局

重置样式表:专门用来对浏览器的样式进行重置的
    reset.css 直接去除了浏览器的默认样式
    normalize.css 对默认样式进行了统一

盒子的尺寸

 默认情况下,盒子可见框的大小由内容区、内边距和边框共同决定

box-sizing 用来设置盒子尺寸的计算方式(设置width和height的作用)
可选值:
    content-box 默认值,宽度和高度用来设置内容区的大小
    border-box 宽度和高度用来设置整个盒子可见框的大小
    width 和 height 指的是内容区 和 内边距 和 边框的总大小

轮廓和圆角

阴影

box-shadow 用来设置元素的阴影效果阴影不会影响页面布局
第一个值 水平偏移量 设置阴影的水平位置 正值向右移动 负值向左移动
第二个值 垂直偏移量 设置阴影的水平位置 正值向下移动 负值向上移动
第三个值 阴影的模糊半径
第四个值 阴影的颜色

轮廓线

outline 用来设置元素的轮廓线用法和border一模一样
轮廓和边框不同的点就是轮廓不会影响到可见框的大小

圆角

border-radius 用来设置元素的圆角半径大小

浮动

简介

使用 float 属性来设置于元素的浮动
    可选值
        none 默认值 元素不浮动
        left 元素向左浮动
        right 元素向右浮动

注意元素设置浮动以后水平布局的等式便不需要强制成立
    元素设置浮动以后会完全从文档流中脱离不再占用文档流的位置
        所以元素下边的还在文档流中的元素会自动向上移动

浮动的特点
    1浮动元素会完全脱离文档流不再占据文档流中的位置
    2设置浮动以后元素会向父元素的左侧或右侧移动
    3浮动元素默认不会从父元素中移出
    4浮动元素向左或向右移动时不会超过它前边的其他浮动元素
    5如果浮动元素的上边是一个没有浮动的块元素则浮动元素无法上移
    6浮动元素不会超过它上边的浮动的兄弟元素最多最多就是和它一样高

简单总结
    浮动目前来讲它的主要作用就是让页面中的元素可以水平排列
        通过浮动可以制作一些水平方向的布局

其他特点

浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围, 所以我们可以利用浮动来设置文字环绕图片的效果

脱离文档流的特点:
块元素:
    1、块元素不在独占页面的一行
    2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开

行内元素:
    行内元素脱离文档流以后会变成块元素,特点和块元素一样

高度坍塌

在浮动布局中,父元素的高度默认是被子元素撑开的,

当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离

将会无法撑起父元素的高度,导致父元素的高度丢失

父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱

BFC

BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有 Block-level box 参与, 它规定了内部的 Block-level Box 如何布局,并且与这个区域外部毫不相干。

特点

独立的布局区域,将内外的布局分隔开

开启方式

1设置元素的浮动不推荐
2将元素设置为行内块元素不推荐
3将元素的overflow设置为一个非visible的值
    - 常用的方式 为元素设置 overflow:hidden 开启其 BFC 以使其可以包含浮动元素

clear

如果我们不希望某个元素因为其他元素浮动的影响而改变位置可以通过clear属性来清除浮动元素对当前元素所产生的影响

clear
- 作用清除浮动元素对当前元素所产生的影响
- 可选值
    left 清除左侧浮动元素对当前元素的影响
    right 清除右侧浮动元素对当前元素的影响
    both 清除两侧中最大影响的那侧

原理
设置清除浮动以后浏览器会自动为元素添加一个上外边距 以使其位置不受其他元素的影响

理想的解决方案

设置父元素的::after 伪类

.box1::after {
  content: '';
  clear: both;
  display: block;
}

clearfix

/*
clearfix 这个样式可以同时解决高度塌陷和外边距重叠的问题,当你在遇到这些问题时,直接使用clearfix这个类即可
*/
.clearfix::before,
.clearfix::after {
  content: '';
  display: table;
  clear: both;
}

定位

定位是一种更加高级的布局手段

通过定位可以将元素摆放到页面的任意位置

使用position属性来设置定位
可选值
    static 默认值元素是静止的没有开启定位
    relative 开启元素的相对定位
    absolute 开启元素的绝对定位
    fixed 开启元素的固定定位
    sticky 开启元素的粘滞定位

偏移量

当元素开启了定位以后可以通过偏移量来设置元素的位置
top
    - 定位元素和定位位置上边的距离
bottom
    - 定位元素和定位位置下边的距离

- 定位元素垂直方向的位置由top和bottom两个属性来控制
---------------------------------------------------------
left
    - 定位元素和定位位置的左侧距离
right
    - 定位元素和定位位置的右侧距离

- 定位元素水平方向的位置由left和right两个属性控制

相对定位

- 当元素的position属性值设置为relative时则开启了元素的相对定位
- 相对定位的特点
    1.元素开启相对定位以后如果不设置偏移量元素不会发生任何的变化
    2.相对定位是参照于元素在文档流中的位置进行定位的
    3.相对定位会提升元素的层级
    4.相对定位不会使元素脱离文档流
    5.相对定位不会改变元素的性质块还是块行内还是行内

绝对定位

- 当元素的position属性值设置为absolute时则开启了元素的绝对定位
- 绝对定位的特点
    1.开启绝对定位后如果不设置偏移量元素的位置不会发生变化
    2.开启绝对定位后元素会从文档流中脱离
    3.绝对定位会改变元素的性质行内变成块块的宽高被内容撑开
    4.绝对定位会使元素提升一个层级
    5.绝对定位元素是相对于其包含块进行定位的

绝对定位的包含块:
    包含块就是离它最近的开启了定位的祖先元素如果所有的祖先元素都没有开启定位则根元素就是它的包含块

固定定位

- 将元素的position属性设置为fixed则开启了元素的固定定位
- 固定定位也是一种绝对定位所以固定定位的大部分特点都和绝对定位一样,唯一不同的是固定定位永远参照于浏览器的视口进行定位,固定定位的元素不会随网页的滚动条滚动

粘滞定位

- 当元素的position属性设置为sticky时则开启了元素的粘滞定位
- 粘滞定位和相对定位的特点基本一致不同的是粘滞定位可以在元素到达某个位置时将其固定

元素层级

对于开启了定位元素可以通过z-index属性来指定元素的层级
z-index需要一个整数作为参数值越大元素的层级越高元素的层级越高越优先显示

如果元素的层级一样则优先显示靠下的元素

祖先的元素的层级再高也不会盖住后代元素

字体

提供字体

font-face 可以将服务器中的字体直接提供给用户去使用

@font-face {
  /* 指定字体的名字 */
  font-family: 'myfont';
  /* 服务器中字体的路径 */
  src: url('./font/ZCOOLKuaiLe-Regular.ttf') format('truetype');
}

字体样式

颜色(color)

color: #fff;

字体大小(font-size)

和font-size相关的单位
em 相当于当前元素的一个font-size
rem 相对于根元素的一个font-size

字体族(font-family)

serif  衬线字体
sans-serif 非衬线字体
monospace 等宽字体
- 指定字体的类别浏览器会自动使用该类别下的字体
- font-family 可以同时指定多个字体多个字体间使用,隔开
    字体生效时优先使用第一个第一个无法使用则使用第二个 以此类推

字重(font-weight)

字体的加粗
可选值
    normal 默认值 不加粗
    bold 加粗
    100-900 九个级别没什么用

字体的风格(font-style)

可选值
    normal 正常的
    italic 斜体

图标字体

- 在网页中经常需要使用一些图标可以通过图片来引入图标
    但是图片大小本身比较大并且非常的不灵活

- 所以在使用图标时我们还可以将图标直接设置为字体
    然后通过font-face的形式来对字体进行引入

- 这样我们就可以通过使用字体的形式来使用图标

文本属性

行高(line-height)

- 行高指的是文字占有的实际高度
- 可以通过line-height来设置行高
    行高可以直接指定一个大小px em
    也可以直接为行高设置一个整数
        如果是一个整数的话行高将会是字体的指定的倍数
- 行高经常还用来设置文字的行间距
    行间距 = 行高 - 字体大小

水平对齐(text-align)

可选值
    left 左侧对齐
    right 右对齐
    center 居中对齐
    justify 两端对齐

垂直对齐( vertical-align)

可选值
    baseline 默认值 基线对齐
    top 顶部对齐
    bottom 底部对齐
    middle 居中对齐

文本修饰(text-decoration)

可选值
    none 什么都没有
    underline 下划线
    line-through 删除线
    overline 上划线

空白(white-space)

可选值
    normal 正常
    nowrap 不换行
    pre 保留空白

背景

背景颜色(background-color)

background-color: #bfa;

背景图片 (background-image)

- 可以同时设置背景图片和背景颜色这样背景颜色将会成为图片的背景色
- 如果背景的图片小于元素则背景图片会自动在元素中平铺将元素铺满
- 如果背景的图片大于元素将会一个部分背景无法完全显示
- 如果背景图片和元素一样大则会直接正常显示
background-image: url("./img/1.png");

背景的重复(background-repeat)

可选值
    repeat 默认值  背景会沿着x轴 y轴双方向重复
    repeat-x 沿着x轴方向重复
    repeat-y 沿着y轴方向重复
    no-repeat 背景图片不重复

背景图片的位置(background-position)

- 通过 top left right bottom center 几个表示方位的词来设置背景图片的位置
    使用方位词时必须要同时指定两个值如果只写一个则第二个默认就是center

- 通过偏移量来指定背景图片的位置
    水平方向的偏移量 垂直方向变量

背景的范围(background-clip、background-origin)

background-clip
    border-box 默认值背景会出现在边框的下边
    padding-box 背景不会出现在边框只出现在内容区和内边距
    content-box 背景只会出现在内容区

background-origin 背景图片的偏移量计算的原点
    padding-box 默认值background-position从内边距处开始计算
    content-box 背景图片的偏移量从内容区处计算
    border-box 背景图片的变量从边框处开始计算

背景图片的大小(background-size)

第一个值表示宽度
第二个值表示高度
- 如果只写一个则第二个值默认是 auto

cover 图片的比例不变将元素铺满
contain 图片比例不变将图片在元素中完整显示

背景图片的固定(background-attachment)

scroll 默认值背景图像会随着页面其余部分的滚动而移动
fixed 当页面的其余部分滚动时背景图像不会移动

渐变

通过渐变可以设置一些复杂的背景颜色可以实现从一个颜色向其他颜色过渡的效果
!!渐变是图片需要通过background-image来设置

线性渐变linear-gradient()
语法
 linear-gradient(red,yellow)
 红色在开头黄色在结尾中间是过渡区域
- 线性渐变的开头我们可以指定一个渐变的方向
    to leftto rightto bottomto topdegturn
- 渐变可以同时指定多个颜色多个颜色默认情况下平均分布 也可以手动指定渐变的分布情况
repeating-linear-gradient() 可以平铺的线性渐变


径向渐变radial-gradient()
- 语法
    radial-gradient(形状 at 位置, 颜色 位置 ,颜色 位置 ,颜色 位置)
    形状
    circle 圆形
    ellipse 椭圆
    closest-side 近边
    closest-corner 近角
    farthest-side 远边
    farthest-corner 远角
    位置
    top right left center bottom 坐标
- 默认情况下径向渐变的形状根据元素的形状来计算的
- 我们也可以手动指定径向渐变的形状circleellipse

表单

在现实生活中表单用于提交数据

在网页中也可以使用表单,网页中的表单用于将本地的数据提交给远程的服务器

使用 form 标签来创建一个表单

表单

<form action="target.html">
  <!--
		action 表单要提交的服务器的地址
		method 表单提交的方式GET、POST
	-->
</form>

文本框

<!--
    注意:数据要提交到服务器中,必须要为元素指定一个name属性值
    autocomplete="off" 关闭自动补全
    readonly 将表单项设置为只读,数据会提交
    disabled 将表单项设置为禁用,数据不会提交
    autofocus 设置表单项自动获取焦点
-->
<input type="text" name="username" />

密码框

<input type="password" name="password" />

单选按钮

<!--
    - 像这种选择框,必须要指定一个value属性,value属性最终会作为用户的填写的值传递给服务器
    - checked 可以将单选按钮设置为默认选中
-->
<input type="radio" name="hello" value="a" />
<input type="radio" name="hello" value="b" checked />

多选框

<input type="checkbox" name="test" value="1" />
<input type="checkbox" name="test" value="2" />
<input type="checkbox" name="test" value="3" checked />

下拉列表

<select name="haha">
  <option value="i">选项一</option>
  <option selected value="ii">选项二</option>
  <option value="iii">选项三</option>
</select>

文件提交

<input type="file" accept="" />

提交按钮

<input type="submit" value="注册" />

重置按钮

<input type="reset" />

弹性盒模型

弹性盒模型