前端之HTML
前戏
一、简介
HTML(超文本标记语言)是一种面向描述的用于开发web网页的一种语言。
网页文件的扩展名:.html或.htm
HTML开发没有任何的逻辑,就是记的东西有点多。
二、注释
正所谓注释是代码之母,我们学习每一种语言都应该先学习其注释。
Python中对HTML的注释格式是<!--注释内容-->
,如下:
<!--单行注释--> <!--多行注释 多行注释 -->
ps:快捷键为ctrl + /
HTML
一、特性
html语言是基于HTTP协议下的语言,而HTTP协议具有如下四大特性:
-
基于请求响应
只有当你请求访问时,html才会做出反应
就好比癞蛤蟆,你戳一下,它动一下 -
基于TCP/IP作用于应用层之上的协议
就是要满足一定的网络通信规范,关于TCP/IP可参见TCP/IP协议
-
无状态
不保存用户的信息,就算你访问了一千次,http也待你如陌生人一样ps:由于http是无状态的,所以有时为了记录用户状态,可以使用cookie、session、token等技术
-
短链接
就是你来一次我响应一次,之后我们之间就没有任何关系了ps: websocket可以建立长链接,默认建立连接后不断开
二、html结构
首先新建一个html_study.html文件,观察初始格式:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> </body> </html>
注意:对于中文网页需要使用 <meta charset="utf-8"> 声明编码,否则会出现乱码。有些浏览器会设置 GBK 为默认编码,则你需要设置为 <meta charset="gbk">。
html结构可以分为三部分:
-
响应首行:用于标识HTTP协议版本、状态码、语言等内容
<!DOCTYPE html> <html lang="en"> ... </html>
-
响应头:可以看成是一大堆键值对,用于书写给浏览器看的内容
<head> <meta charset="UTF-8"> <title>Title</title> </head>
-
响应体:用于写展示给用户看的内容
<body> ... </body>
head内常用标签
title标签
title标签用于书写网页标题(在网页最上端显示的标签名)
<title>my first html</title>
style标签
style标签用于在内部书写css代码
<style> h1{color:red;} </style>
link标签
<link rel="stylesheet" href="outside.css">
script标签
script标签用于内部书写js代码或引入外部js文件
<!--内部书写js代码--> <script>alert('access successfully')</script> <!--引入外部js文件:outside文件--> <script src="outside.js"></script>
meta标签
meta标签用于提供一些页面的元信息,包括一些描述和关键词
(了解)meta标签常用有两个属性:http-equiv和name
- http-equiv:相当于html的文件头,用于向浏览器传一些信息或一些跳转操作,其属性值为content
<!--显示文档编码类型--> <meta http-equiv="content-type" charset="UTF-8"> <!--两秒后跳转到百度--> <meta http-equiv="refresh" content="2;URL=https://www.baidu.com">
- name:用于向浏览器机器人提供一些描述网页的信息和分类词,其属性值表述在content中
<meta name="keywords" content="python,weer,study"> <meta name="description" content="weer的博客 python study">
body内常用标签
基本标签
h1~h6表示一级到六级标题
b是文本加粗标签,i是文本斜体标签,p是段落标签
u是下划线标签,s是删除线标签
br是换行标签,hr是水平分割线标签
<h1>this is the h1</h1> <h2>this is the h2</h2> <h3>this is the h3</h3> <h4>this is the h4</h4> <h5>this is the h5</h5> <h6>this is the h6</h6> <b>加粗</b> <p>this is a paragraph</p> <i>斜体</i> <u>下划线</u> <s>删除线</s> <br>换行(转到下一行) <hr>加了一个分割线
列表标签
列表分为无序列表和有序列表以及带标题的列表
- 无序列表
ul标签里搭配li标签嵌套,type指定形状,如circle(默认)、square等<ul type="square"> <li>first</li> <li>second</li> <li>third</li> <li>forth</li> </ul>
- 有序列表
ol标签里搭配li标签嵌套,type指定数字类型(I,1,a,A等),start指定起始编号<ol type="1" start="2"> <li>第一步</li> <li>第二步</li> <li>第三步</li> </ol>
3. 标题列表(了解)
<dl> <dt>title 1</dt> <dd>content 1</dd> <dt>title 2</dt> <dd>content 2</dd> </dl>
表格标签
table标签用于绘制表格,分为thead和tbody。thead用于提示各列的属性,tbody用于显示表格内的内容。
table中可以加border属性,用于显示外边框(很丑,但后期可以美化),整数表示外边框厚度
<table border="1"> <thead> <tr> <th>username</th> <!--th表示加粗文本--> <td>password</td> <!--td表示普通文本--> <td>hobby</td> </tr> </thead> <tbody> <tr> <td>Bob</td> <td>123</td> <td>cook</td> </tr> </tbody> </table>
基本、列表、表格标签完整代码
<!DOCTYPE html> <html lang="en"> <head> <!--网页标题--> <title>my first html</title> <!--内部写css代码--> <style> h1{color:red;} </style> <!--引入外部css文件:outside文件--> <link rel="stylesheet" href="outside.css"> <!--内部书写js代码--> <script>alert('access successfully')</script> <!--引入外部js文件:outside文件--> <script src="outside.js"></script> <!--显示文档编码类型--> <meta http-equiv="content-type" charset="UTF-8"> <!--两秒后跳转到百度--> <!-- <meta http-equiv="refresh" content="2;URL=https://www.baidu.com"> --> <meta name="keywords" content="python,itleaner007,study"> <meta name="description" content="itlearner007的博客python study"> </head> <body> <!--基本标签--> <!--h1~h6级标题--> <h1>this is the h1</h1> <h2>this is the h2</h2> <h3>this is the h3</h3> <h4>this is the h4</h4> <h5>this is the h5</h5> <h6>this is the h6</h6> <p>this is a paragraph</p> <b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除线</s> <br>换行(转到下一行) <hr>加了一个分割线 <!--列表标签--> <!--无序标签--> <ul type="square"> <li>first</li> <li>second</li> <li>third</li> <li>forth</li> </ul> <!--有序标签--> <ol type="1" start="2"> <li>第一步</li> <li>第二步</li> <li>第三步</li> </ol> <!--标题列表--> <dl> <dt>title 1</dt> <dd>content 1</dd> <dt>title 2</dt> <dd>content 2</dd> </dl> <!--表格标签--> <table border="1"> <thead> <tr> <th>username</th> <!--th表示加粗文本--> <td>password</td> <!--td表示普通文本--> <td>hobby</td> </tr> </thead> <tbody> <tr> <td>Bob</td> <td>123</td> <td>cook</td> </tr> <tr> <td>John</td> <!-- colspan表示水平方向占2格,rowspan表示竖直方向占格 --> <td colspan="2">drink</td> </tr> </tbody> </table> </body> </html>
div标签
div标签用于占位,可以把它看成是一个水平容器,里面可以放任意块级标签和行内标签,也可以嵌套分区域。
<div style="height:200px;background-color:red;">一块区域</div> <div style="height:200px;background-color:green">一块区域 <div style="height:100px;background-color:purple"> 区域里的区域 </div> </div>
span标签
span标签为行内标签,文本有多大其就有多大且需手动换行
<span>我是span</span> <span>我是span2</span>
注意
块级标签&行内标签
I:块级标签
不管文本多大,它都会先独占一行
可以修改其宽度和高度
块级标签内部可以嵌套任意块级标签和行内标签
如h1~h6级标签,p标签,div标签,label标签,input标签等等
II:行内标签
文本有多大,标签所占位置就有多大
行内标签内只能嵌套行内标签
如i,u,s,b,span标签等
标签必备两个属性
- id值
就好比每个人的身份证号码,各不一样,用于区分和后面写css、js代码时便于选择 - class
继承某个类,不同标签可以是同一个class取值
a标签
<a href="" target=""></a>
a标签又称链接标签,有两个功能:
- 超链接
href中放一个完整的URL地址时,点击内容即可跳转到相应网站
<a href="https://www.baidu.com" target="">click me to baidu</a>
target默认为_self,即在当前页面跳转;当设置target=“_blank”时,新建一个空白页面跳转
- 锚点
设置href为某个标签的#+id值时,点击文本内容即可跳转到id所对应的位置
<div style="height:1000px;background-color:red;" id = 'd1'>一块区域</div> <a href="#d1">click me to 一块区域</a>
img标签
<img src="" alt="" title="">
img标签用于在网站显示图片。src是图片路径,可以是url,也可以是本地路径;alt是图片加载不出来时的描述(如网不好时有些图片看不到,只显示alt的内容);title是将鼠标放于图片上时的提示信息
<img src="yanhua.png" alt="烟花" title="yanhua">
表单标签
表单标签form能够获取用户输入数据(用户输入、用户选择、用户上传等),并把它传给后端服务器
如某宝的登录界面
<form action=""> </form>
表单属性
属性 | 描述 |
---|---|
accept-charset | 规定在被提交表单中使用的字符集(默认:页面字符集)。 |
action | 规定向何处提交表单的地址(URL)(提交页面)。 |
autocomplete | 规定浏览器应该自动完成表单(默认:开启)。 |
enctype | 规定被提交数据的编码(默认:url-encoded)。 |
method | 规定在提交表单时所用的 HTTP 方法(默认:GET)。 |
name | 规定识别表单的名称(对于 DOM 使用:document.forms.name)。 |
novalidate | 规定浏览器不验证表单。 |
target | 规定 action 属性中地址的目标(默认:_self)。 |
在pycharm中写form然后tab键可得如上代码,其中action表示数据提交的路径:
- 不填:表示向当前页面的url处提交
- 完整url如https://www.baidu.com,即向百度服务器提交
- 只写路径后缀如’/index/',则自动识别电脑的ip和port结构加在前面
1、label
label标签即文本标签,用于显示不可修改的文本提示信息,怀里通常嵌套input标签等。
并且label标签里的for属性可以绑定input标签的id值,当点击label的文本信息时,鼠标就会自动跳到输入框中进行输入操作
<form action=""> <label for="a1">用户名 <input type="text" id="a1"> </label> </form>
2、input
input标签,顾名思义,即为用户输入标签。通过指定type的类型有不同的输入方式:
<input type="text" id="">
- type=“text”(默认)
表示普通文本输入框,可以输入任意内容(汉字、英文、数字…)
- type=“password”
密文,比如输入密码时自动用*或圆点.隐藏显示
- type=“date”
日期,自动调用内置日历,选择即可
- type=“submit”
提交按钮,发送数据给服务器,会刷新网页。默认显示的是“提交”,可通过设置value更改
- type=“button”
就是一个普通按钮,但可通过绑定事件实现功能
- type=“reset”
重置按钮,即清空所有已输入的内容,默认文本为“重置”
- type=“radio”
单选框,必须有name属性才能实现单选,value属性绑定每个选项的变量由于分别。
checked(checked=checked)表示默认选中
<label>性别: <input type="radio" name="sex" value="male">男 <input type="radio" name="sex" value="female" checked>女 <input type="radio" name="sex" value="other">其它 </label>
- type=“checkbox”
多选框,表示可多选。checked表示默认选中
- type=“file”
自动调取获取文件函数,也可获得多个文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>html study 2</title> </head> <body> <form action=""> <label for="a1">用户名 <input type="text" id="a1"> </label> <p><label for="a2">密码<input type="password" id="a2"></label></p> <p><label for="a3">日期<input type="date" id="a3"></label></p> <p> <label for="a4"><input type="submit" value="登录" id="a4"></label> <label><input type="button" value="按钮"></label> <label><input type="reset" value="取消"></label> </p> <p> <label>性别: <input type="radio" name="sex" value="male">男 <input type="radio" name="sex" value="female" checked>女 <input type="radio" name="sex" value="other">其它 <!--必须有name值才能实现单选,checked(或checked='checked')表示提前默认选中--> </label> </p> <p> <label>hobby: <input type="checkbox" value="喝茶">drink tea <input type="checkbox" value="打游戏" checked>play games <input type="checkbox" value="看电视">watch tv <input type="checkbox" value="睡觉" checked>sleep </label> </p> </form> </body> </html>
3、select
列表式选取标签,option内加多选内容,可加multiple表示多选,selected表示默认选中
<select name="" id="" multiple> <option value="">1</option> <option value="" selected>2</option> <option value="">3</option> </select>
属性说明:
- multiple:布尔属性,设置后为多选,否则默认单选
- disabled:禁用
- selected:默认选中该项
- value:定义提交时的选项值
4、textarea
大段文本标签,常用来写一些自我简介啊、经历啊什么的
<label for="">自我简介<textarea name="ddd" id="ppp" cols="30" rows="10"></textarea></label>
属性说明:
- name:名称
- rows:行数
- cols:列数
- disabled:禁用
5、注意
A:form标签默认提交数据的方式是get请求,数据是直接放在url后面的
可以通过method="post"指定提交方式为post请求
<form action="" method="post"></form>
B:当利用type=“file”传文件时,form标签的提交方式必须是post,且应有enctype=“multipart/form-data”
<form action="" method="post" enctype="multipart/form-data"></form>
C:能触发提交数据的方式:
- 1.
<input type="submit" id="">
- 2.
<button>提交</button>