一、前端学习历程

#什么是前端: 任何与用户直接打交道的操作界面都是前端

#什么是后端:  幕后操作者 不直接和用户打交道

1.前端基础

01 HTTP协议   HTML入门教程_html

 

 

2.学习之路

 

01 HTTP协议   HTML入门教程_服务端_02

 3.简介

01 HTTP协议   HTML入门教程_html_03

 

 

 

二、HTTP协议

超文本传输协议
规定了浏览器与服务端之间消息传输的数据格式

我们直接用浏览器连接我们的套接字服务端,如果你直接send二进制数据比如b'hello'过去,浏览器会报错,读不懂我们发送的内容,我们必须有一套公用协议,这就是http协议

就比如很多语言都可以连接数据库,我们就统一使用sql语句,不管谁来都要说sql

只要通过浏览器访问服务端都要遵循这套协议,除非你开发自己客户端和服务端,比如qq等,两者都是自己的东西,爱咋滴咋滴

01 HTTP协议   HTML入门教程_数据_04

 

01 HTTP协议   HTML入门教程_服务端_0501 HTTP协议   HTML入门教程_服务端_06
import socket

server = socket.socket()
server.bind(('127.0.0.1',8080))
server.listen(5)

while True:
    conn,addr = server.accept()
    data = conn.recv(1024)
    print(data)
    conn.send(b'HTTP/1.1 200 OK\r\n\r\n')
    with open('a.txt','rb') as f:
        res = f.read()
    conn.send(res)

    conn.close()
服务端代码
01 HTTP协议   HTML入门教程_服务端_0501 HTTP协议   HTML入门教程_服务端_06
<h1>hello Girl!</h1>
<a href="http://www.xiaohuar.com">click me</a>
<img src="http://img5.imgtn.bdimg.com/it/u=641490458,234938865&fm=26&gp=0.jpg"/>
xxx.txt

xxx.txt中写的是html语法

1.http四大特性:

        1.基于请求、响应
        2.基于TCP/IP之上、作用于应用层的协议
        3.无状态  (服务端无法保存用户的状态,一个人来一千次 我都记不住 还当你如初见)
        4.无连接  (请求来一次我响应一次 之后立马断开连接 两者之间就不再有任何关系了)
         ps:针对无连接,有时候需要连接怎么办呢?websocket 相当于是HTTP协议的一个大的补丁,它支持长连接,比如企业的通讯工具,聊天室等使用websocket

2.数据传输格式

# 请求数据格式:

        请求首行    (标识HTTP协议版本,当前请求方式(get/post))
        请求头  (一大堆k,v键值对)
        *********************空白行,这才是重点****************
        请求体      (携带的是一些敏感信息比如 密码,身份证号...)

#响应数据格式:

        响应首行    (标识HTTP协议版本,响应状态码)
        响应头  (一大堆k,v键值对)
        *********************空白行*********************************
        响应体      (返回给浏览器页面的数据 通常响应体都是html页面)

3.响应状态码

        用一串简单的数字来表示一些复杂的状态或者提示信息
        1XX:服务端已经成功接收了你的数据正在处理 你可以继续提交额外的数据
        2XX:服务端成功响应 你想要的数据(请求成功200)
        3XX:重定向(当你在访问一个需要登录之后才能访问的页面 你会发现窗口会自动调到登录页面 301 302)
        4XX:请求错误(请求资源不存在404,请求不合法不符合内部规定或权限不够403)
        5XX:服务器内部错误,我们不考虑(500)

 

4.请求方式

    1.get请求
        朝服务端要资源(比如浏览器窗口输入www.baidu.com)

        get请求也可以携带数据,跟在url的后面
            ip:port?xxx=yyy&zzz=qqq
            1.get能够携带的参数大小有限制,1kb左右很小
            2.数据是直接可见,直接显示在地址栏,不安全,不能携带敏感隐私信息

    2.post请求
        朝服务端提交数据(比如用户登录 提交用户名和密码),跟在请求体中

ps: URL:统一资源定位符(大白话 就是网址)

三、HTML

#Web服务的本质:
        浏览器中敲入网址回车发送了几件事?
        1.浏览器超服务端发送请求
        2.服务端接收请求
        3.服务端返回相应的响应 , 服务端把HTML文件内容发给浏览器
        4.浏览器接收响应 根据特定的规则渲染页面展示给用户看

 

1.html是什么

  • 超文本标记语言(Hypertext Markup Language, HTML)是一种用于创建网页的标记语言,搭建网页骨架,使用标签来描述网页,它不是一种编程语言
  • 本质上是浏览器可识别的规则,我们按照规则写网页,浏览器根据规则渲染我们的网页
  • 要想让你的页面能够正常被浏览器显示出来 你所写的页面 就必须遵循html标记语法,也就意味着所有能够被浏览器显示出来的页面 内部都是html代码,浏览器只认识html css js
  • 不同的浏览器,对同一个标签可能会有不同的解释,浏览器显示出来样式可能不一样(兼容性问题)
  • 网页文件的扩展名:.html或.htm
  • 注意:HTML是一种标记语言(markup language),它不是一种编程语言
  •  XML(老了)也可以搭建前端框架,在odoo框架中使用较多(员工内部管理软件大多都是此框架开发)

2.注释

注释是代码之母

<!--单行注释-->

<!--
多行注释
多行注释
-->

一般情况下 html的注释都会按照下面的方式书写,注释开始和结束中间写某些东西,找的时候通过注释快速找到:

<!--导航条样式开始-->
******中间内容******
<!--导航条样式结束-->

01 HTTP协议   HTML入门教程_css样式_09

 

3.HTML文档结构

最基本的HTML文档:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>css样式优先级</title>
</head>
<body>

</body>
</html>

 

  1. <!DOCTYPE html>声明为HTML5文档。
  2. <html>、</html>是文档的开始标记和结束的标记。是HTML页面的根元素,在它们之间是文档的头部(head)和主体(body)。
  3. <head>、</head>定义了HTML文档的开头部分。它们之间的内容不会在浏览器的文档窗口显示。包含了文档的元(meta)数据。
  4. <title>、</title>定义了网页标题,在浏览器标题栏显示。
  5. <body>、</body>之间的文本是可见的网页主体内容。

注意:对于中文网页需要使用 <meta charset="utf-8"> 声明编码,否则会出现乱码。有些浏览器会设置 GBK 为默认编码,则你需要设置为 <meta charset="gbk">

4.标签分类

第一种分类:单标签 和 双标签

        1.双标签(h1~h6 a p div span table ul ol dl)
        2.单标签(自闭和标签 <br/>、<hr/>、<img src="1.jpg" /> <input/>)

第二种分类: 块级标签 和 行内标签

        1.块儿级标签(独占浏览器一行) div p h等
            #块儿级标签可以修改长宽,改一个另一个等比改变
            #块儿级标签内部可以嵌套任意的块级标签和行内标签,但是p虽为块级却只能嵌套行内标签,连自己这个块都不能嵌套
                           

        2.行内标签(自身文本多大就占多大) span b s i u等

5.标签属性

id和class用的比较多,但都不是必备的

id值,该值就类似于人的身份证号,同一个html文件中id 应该保证唯一
class值,该值就类似于面向对象里面的继承(多个class由空格隔开)
style(不是必备),支持在标签内直接写css代码,属于行内样式,优先级最高,但不推荐使用
补充:任何标签都支持自定义属性 <a href="#" username="jason" password="123">...点我...</a>

6.emmet插件

输入input等关键字后tab可以一键补全,这是emmet插件的作用

 01 HTTP协议   HTML入门教程_html_10

01 HTTP协议   HTML入门教程_数据_11

 

 01 HTTP协议   HTML入门教程_数据_12

四、head内常用标签
标签 意义
<title></title> 定义网页标题
<style></style> 定义内部样式表
<script></script> 定义JS代码或引入外部JS文件
<link/> 引入外部样式表文件或网站图标
<meta/> 定义网页原信息

#引入js

 01 HTTP协议   HTML入门教程_服务端_13

 

#head引入外部css样式文件

01 HTTP协议   HTML入门教程_数据_14

 

 

1.Meta标签

Meta标签介绍:

  • <meta>元素可提供有关页面的元信息(mata-information),针对搜索引擎和更新频度的描述和关键词。
  • <meta>标签位于文档的头部,不包含任何内容。
  • <meta>提供的信息是用户不可见的。

meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name 属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。 

#http-equiv属性:相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变量值。

<!--指定文档的编码类型(需要知道)-->
<meta http-equiv="content-Type" charset=UTF8">  
<!--2秒后跳转到对应的网址,注意引号(了解)-->
<meta http-equiv="refresh" content="2;URL=https://www.oldboyedu.com">
<!--告诉IE以最高级模式渲染文档(了解)-->
<meta http-equiv="x-ua-compatible" content="IE=edge">

name属性: 主要用于描述网页,与之对应的属性值为content

keywords后的content是搜索关键字,只要你搜这些字都能找到该网页

description后的content是你搜索出来网站后网页上对该网站的描述

<meta name="keywords" content="淘宝,淘宝网,淘抢购,购物网">
<meta name="description" content="淘宝网是一个大型购物网站...">
二、body内常用标签

2.1基本标签

<b>加粗</b>
<i>斜体</i>
<u>下划线</u>
<s>删除</s>

<p>段落标签</p>  段落

<h1>标题1</h1>  1-6级标题
    ... 
<h6>标题6</h6>


<br> 换行

<hr> 水平线

01 HTTP协议   HTML入门教程_css样式_15

 

 

2.2特殊字符

内容 对应代码
空格 &nbsp;
> &gt;
< &lt;
& &amp;
¥ &yen;
版权 &copy;
注册 &reg;

 01 HTTP协议   HTML入门教程_表单_16

 

2.3 div标签和span标签

div标签用来定义一个块级元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现。
span标签用来定义内联(行内)元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现。

这两个元素是专门为定义CSS样式而生的。 

2.4 a标签

超链接标签

所谓的超链接是指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是一个图片,一个电子邮件地址,一个文件,甚至是一个应用程序。

01 HTTP协议   HTML入门教程_服务端_0501 HTTP协议   HTML入门教程_服务端_06
什么是URL?
URL是统一资源定位器(Uniform Resource Locator)的缩写,也被称为网页地址,是因特网上标准的资源的地址。
URL举例
http://www.sohu.com/stu/intro.html
http://222.172.123.33/stu/intro.html

URL地址由4部分组成
第1部分:为协议:http://、ftp://等 
第2部分:为站点地址:可以是域名或IP地址
第3部分:为页面在站点中的目录:stu
第4部分:为页面名称,例如 index.html
各部分之间用“/”符号隔开。
url
<a href="http://www.xiaohuar.com" target="_blank" >点我点我</a>

href: 指定目标网页地址,点击后会跳转该url,该地址可以有几种类型:

  • 绝对URL - 指向另一个站点(比如 href="http://www.jd.com)
  • 相对URL - 指当前站点中确切的路径(href="index.htm")
  • 锚URL - 指向页面中的锚(href="#top")锚点功能如:回到顶部

target:

  • _blank表示在新标签页中打开目标网页
  • _self表示在当前标签页中打开目标网页
锚点功能:href 还可以写另一个a标签的id值,点击就会跳到id值所对应的的a标签
        <a id="top">顶部</a>
        <a href="#top">点击回到顶部</a>

01 HTTP协议   HTML入门教程_表单_19

 

2.5 img图片标签 

<img src="图片路径" title="鼠标悬浮在图片上时显示" alt="提示信息(当图片加载不出来时会显示)" width="" height="当只指定一个时,会自动缩放"/>
    src 存放的是图片的路径
        1.该路径可以是本地的,也可以是网上的
        2.也可以放url(会自动请求该url获取相应数据)
        3.也可以直接放图片的二进制数据,会自动转换成图片

 

 

2.6 列表

无序列表ul li 、有序列表 ol li、标题列表 dl dt dd

1.无序列表

<ul type="选一个">
  <li>第一项</li>
  <li>第二项</li>
</ul>

type属性:

  • disc(实心圆点,默认值)
  • circle(空心圆圈)
  • square(实心方块)
  • none(无样式)

01 HTTP协议   HTML入门教程_数据_20

 

2.有序列表

<ol type="1" start="2">
  <li>第一项</li>
  <li>第二项</li>
</ol>

type属性:

  • 1 数字列表,默认值
  • A 大写字母
  • a 小写字母
  • Ⅰ大写罗马
  • ⅰ小写罗马

3.标题列表

<dl>
  <dt>标题1</dt>
  <dd>内容1</dd>
<dt>标题2</dt> <dd>内容1</dd> <dd>内容2</dd> </dl>

01 HTTP协议   HTML入门教程_数据_21

 

2.7 表格

table thead tr th tbody td tfoot

表格是一个二维数据空间,一个表格由若干行组成,一个行又有若干单元格组成,单元格里可以包含文字、列表、图案、表单、数字符号、预置文本和其它的表格等内容。
表格最重要的目的是显示表格类数据。表格类数据是指最适合组织为表格格式(即按行和列组织)的数据。
表格的基本结构:

<table>
  <thead>
  <tr>
    <th>序号</th>
    <th>姓名</th>
    <th>爱好</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>1</td>
    <td>Egon</td>
    <td>杠娘</td>
  </tr>
  <tr>
    <td>2</td>
    <td>Yuan</td>
    <td>日天</td>
  </tr>
  </tbody>
<tfoot>结尾</tfoot>
</table>


tr 表示一行
th 和 td 都是文本,建议在 thead内用带加粗效果的th,在 tbody内用td
rowspan="2" 合并两行成一行 colspan="2" 合并两列成一列 使用合并时要把被合并的那行删掉,不然会挤出来
border="1" 表格边框
cellpadding="10" 单元格内间距(td内容和边框之间的距离)
cellspacing="10" 单元格外边距(不同td之间的距离)

属性:

  • border: 表格边框.
  • cellpadding: 内边距
  • cellspacing: 外边距.
  • width: 像素 百分比.(最好通过css来设置长宽)
  • rowspan: 单元格竖跨多少行
  • colspan: 单元格横跨多少列(即合并单元格)

01 HTTP协议   HTML入门教程_表单_22

 

五、form表单

功能:

表单用于向服务器传输数据,从而实现用户与Web服务器的交互

表单能够包含input系列标签,比如文本字段、复选框、单选框、提交按钮等等。

表单还可以包含textarea、select、fieldset和 label标签。

5.1 表单属性

属性 描述
accept-charset 规定在被提交表单中使用的字符集(默认:页面字符集)。
action ****** 规定向何处提交表单的地址(URL)(提交页面)。
autocomplete 规定浏览器应该自动完成表单(默认:开启)。
enctype ****** 规定被提交数据的编码(默认:url-encoded)提交文件要改成formdata
method ****** 规定在提交表单时所用的 HTTP 方法(默认:get)
name 规定识别表单的名称(对于 DOM 使用:document.forms.name)。
novalidate 规定浏览器不验证表单。
target 规定 action 属性中地址的目标(默认:_self)。

 

注册实例为例:
<form action="这里填数据提交的目的地">
    <label for="username">username<input type="text" id="username"/></label>
    <label for="password">password</label>
    <input type="password" id="password"/>
</form>

1.action 控制数据提交的目的地
    不写的情况下,默认提交到当前页面所在的路径 ***
    写全路径(https://www.baidu.com),将数据提交给对应路径
    路径后缀(/index/会自动补全你本网站的ip和port *****

5.2 label标签   

正常情况下必须点击小圆圈才能选择,

为“男”和“女”文字都添加上“label”标签,标签属性“for”的属性值分别为对应id即“male”和“female”,这时用户点击“男”和“女”文字时也会选中对应的选 项,提高了用户体验。

除了单选框之外,多选框、文本框等标签也同样可以用label标签选中:

 

01 HTTP协议   HTML入门教程_表单_23

#两种使用方式

01 HTTP协议   HTML入门教程_html_24

 

 

 

5.3 input标签

<input> 元素会根据不同的 type 属性,变化为多种形态。

type属性值 表现形式 对应代码
text 单行输入文本 <input type=text" />
password 密码输入框 <input type="password"  />
date 日期输入框 <input type="date" />
checkbox 复选框 <input type="checkbox" checked="checked"  />
radio 单选框 <input type="radio"  />
submit 提交按钮 <input type="submit" value="提交" />
reset 重置按钮 <input type="reset" value="重置"  />
button 普通按钮 <input type="button" value="普通按钮"  />
hidden 隐藏输入框 <input type="hidden"  />
file 文本选择框 <input type="file"  />

 

input标签 就类似于是前端变形金刚
    type:
        text:普通文本
        password:密文 不展示明文
        date:日期
        
        submit:触发提交动作
        button:普通按钮 没有实际意义 但是可以通过js绑定事件实现自定义动作
        reset:清空重置用户填写的表单信息
        
        radio:单选  可以通过checked控制默认选择(当属性值和属性名相同的情况下 可以简写 checked 或 checked="checked")
        checkbox:多选 同上 可以设置默认值
        
        file:获取用户上传的文件
            form表单上传文件需要修改两个参数的值:
                1.将method由默认的get改为post
                2.将enctype编码格式由默认的urlencoded改为formdata
 
  • readonly:text和password设置只读
  • disabled:所有input均适用,记住这个就行了

5.3 select标签 下拉框

<form action="" method="post">
  <select name="city" id="city">
    <option value="1">北京</option>
    <option selected="selected" value="2">上海</option>
    <option value="3">广州</option>
    <option value="4">深圳</option>
  </select>
</form>

属性说明:

  • multiple:布尔属性,默认单选,声明后为多选
  • disabled:禁用
  • selected:默认选中该项
  • value:定义提交时的选项值

#多选和分组选择

01 HTTP协议   HTML入门教程_html_25

5.4 textarea多行文本

01 HTTP协议   HTML入门教程_html_26

<textarea name="memo" id="memo" cols="30" rows="10">
  个人简介:
</textarea>

属性说明:

  • name:名称
  • rows:行数
  • cols:列数
  • disabled:禁用

5.5 提交  防呆 

1.提交

form表单中 要想触发提交动作
只有两种情况可以
1.input标签type指定成submit
2.直接写button标签 <button>提交</button>

01 HTTP协议   HTML入门教程_html_27

 

2.防呆措施

disable 禁用,只能看(如:修改密码时用展示用户名,但是不能修改,只能看) 

readonly 只读(记disable就好了)