前端基础-01HTML基础

 

01 前端介绍 

web应用程序

浏览器向应用程序发起网络请求,基于http协议,

应用程序基于http协议响应一个字符串,

那么这样的应用程序就是web应用程序

 

web请求:客户端发请求,让浏览器渲染成好看的页面(排版、布局)

前端三剑客

HTML 构成页面元素

CSS   元素渲染和布局 渲染:让HTML好看,做修饰 布局:放在什么位置

JS 构成动态事件        相当于皮影戏的操手

轮播图:隔几秒切换。通过JS代码实现

悬浮事件

点击事件

 

VUE

 

输入框示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="text">
</body>
</html>

页面布局

第一行head

跳转超链接标签

分块布局

 

02 http协议特点

概述

没有逻辑,所见即所得

HTML超文本标记语言
HTML 不是一种编程语言,没有逻辑:循环 判断...
HTML文件是由浏览器解释运行的,浏览器充当的就是一个解释器

浏览器:基于域名,组装符合http协议的字符串
服务器:解析参数,返回给客户端浏览器 文本
浏览器:把拿到的文件解释渲染
都是由浏览器运行出显示效果

 

HTML,即超文本标记语言(HyperText Markup Language ]),由SGML (标准通用标记语言) 发展而来,也叫web页面。扩展名是 .html 或是 .htm

 

HTML,是一种用来制作网页的标准标记语言。超文本,指的就是超出普通文本范畴的文档,可以包含文本、图片、视频、音频、链接等元素。

 

HTML 不是一种编程语言,而是一种写给网页浏览器、具有描述性的标记语言。

 

http协议

两端:浏览器和服务器

http协议特点:
    1 基于TCP协议
        对应用层数据格式做限定
    2基于请求响应,先有请求再有响应
    3 短连接
        断网仍然可以看到。本质是把字符串接到本地

问题1 客户端没发请求能否收到数据?

数据发生更新,必须再发请求,再次接收才能更新
服务端永远不能推送给客户端数据。
与Web.socket区分

问题2 刷新页面是否有变化?

页面发生变化了
刷新再次发送请求 响应。

问题3 为甚么要短连接?

conn 一直存在,需要维持连接状态,占用服务器资源。
无连接
新版本中改进用短连接,因为,断开需要再三次连接(三次握手也占用资源)

http是前端和后端的桥梁

03 http请求协议格式

http协议格式

             遵循http协议请求格式
浏览器 ---------------请求-----------------> 应用程序(server)
      <--------------响应------------------
             遵循http协议响应格式

基于socket

请求和响应的字符串,内容较多

http协议请求格式:三部分

请求方式  请求路径和参数 协议   # 请求首行

"""
get  /s?wd=yuan   HTTP/1.1
key1:value1  # 请求头 浏览器跟服务器说的小秘密
key2:value2
key3:value3
\r\n\r\n
请求体(POST数据)
"""

请求头

Accept: 当前浏览器能接受什么协议
Accept-Encoding:当前浏览器能支持的压缩方式。如果要用压缩,用gzip
User-Agent:浏览器告诉服务器一些基本信息用

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36

请求方式:get post

携带数据区别
根据不同的请求方式,放在不同的位置
get:请求数据放在请求路径后面,以?作为分割
post:请求数据放在请求体中

URL:   IP:端口/路径?参数
            根据路径信息,决定返回的信息
            https://www.baidu.com/s?wd=zhutao2014

  

浏览器控制台

network 记录网络请求日志
    最上边的路径
    request 请求
    response 响应

扩展知识

爬虫:无论是浏览器发送还是程序发送请求,都基于http协议
正常浏览器发送有user-agent,程序发送请求没有user-agent
反爬,第一步 请求头是否携带user-agent

getpost请求本质区别

post请求:登录一般用POST
get请求:请求信息就挂在路径上了。暴露信息

get把数据放在path路径,post更安全
get请求,地址栏有上限
get请求,没有请求体

POST请求

https://www.baidu.com/s?wd=zhutao2014

"""
post /s HTTP/1.1 #请求首行
key1:value1 #请求头
key1:value1 #请求头
key1:value1 #请求头

user=zhutao2014&pawd=123 (请求体 post请求数据)
user=zhutao2014&pawd=123
"""

点击按钮发生了什么?

点击按钮?是post还是get
由标签特性决定的
取决于服务器端开发人员决定

 

浏览器
    1用户通过浏览器发送
    2浏览器根据用户的请求组装字符串,
    3由标签决定post和get(点击按钮,post或get请求的页面已经加载到浏览器)
    4 发送给服务端
服务器:
    1 拿到数据,拆分

 

请求首行
    get请求由标签决定
    路径名:/s
    协议 HTTP/1.1
请求头 k1/v1,k2/v2 ...

 

浏览器组装数据

服务器:拆开
    拆分分别取出路径和参数
    通过参数,查数据库
    拼装成响应格式

04 http响应协议格式

服务器给浏览器发送

http响应格式

响应协议  状态吗 解释文
"""
HTTP/1.1 200 ok    # 响应首行
key1:value1         # 响应头
key2:value2
key3:value3

响应体
"""

响应状态码

2开头 正常
3开头 重定向
4开头 客户端请求问题
5开头 服务端问题

响应体

Response Headers
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Server: BWS/1.1

请求报文构成

  

响应报文构成

示例

package main

import (
   "fmt"
   "net"
)

func main() {
   listen, err := net.Listen("tcp", "127.0.0.1:8888")
   if err != nil {
      fmt.Println("listen err:", err)
      return
   }

   for true {
      conn, _ := listen.Accept()
      data := make([]byte, 1024)
      n, _ := conn.Read(data)
      if n == 0 {
         break
      }

      fmt.Println("---", string(data[:n]))

      res := "HTTP/1.1 200 OK\r\n\r\nhello"
      n2, _ := conn.Write([]byte(res))
      fmt.Printf("---res:%v n2:%v\n", res, n2)
      err := conn.Close()
      if err != nil {
         return
      }
   }
}

conn 客户端的套接字对象
执行到conn已经完成三次握手

服务端:1接收请求数据
2接收后打印
对接收的data做拆分,逻辑处理等操作

测试1不符合http规范

res返回数据,设置为不符合http协议规范

      fmt.Println("---", string(data[:n]))

      res := "hello"
      conn.Write([]byte(res))
      conn.Close()
   }
}

浏览器不能解析响应的报文,报响应无效

 

 

打印的请求信息

--- GET / HTTP/1.1
Host: 127.0.0.1:8888
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="97", "Chromium";v="97"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9 

测试2 符合http规范

修改添加响应头,响应体,符合浏览器可解析的响应格式

       res := "HTTP/1.1 200 OK\r\n\r\nhello"
      conn.Write([]byte(res))
      //n2, _ := conn.Write([]byte(res))
      //fmt.Printf("---res:%v n2:%v\n", res, n2)
      conn.Close()
   }
}

显示结果

  

web框架的好处

web框架,在原有的基础上,用别人写好的接口
不用写底层的socket实现

服务器如何知道请求数据里的格式?

通过请求头content-type:json

content-type: text/html; charset=utf-8

ajax请求 期待内容由ajax决定的。

请求头

拿到请求体中的键值 用户名 密码等

"""
post /s HTTP/1.1 #请求首行
key1:value1 #请求头
key2:value2 #请求头
key3:value3 #请求头
content-type:json

{"user":"yuan","pwd":123}
#user=yuan&pwd=123
"""

urlencoded格式

x-www-form-urlencoded 格式   user=yuan&pwd=123
json格式,响应体也可以其他格式 {"user":"yuan","pwd":123}

05 web开发流程

标题标签<h1>

增加<h1></h1>标签

       fmt.Println("---", string(data[:n]))

      res := "HTTP/1.1 200 OK\r\n\r\n<h1>hello</h1>"
      conn.Write([]byte(res))
      //n2, _ := conn.Write([]byte(res))
      //fmt.Printf("---res:%v n2:%v\n", res, n2)
      conn.Close()
   }
}

 

 

 

 

浏览器认识<h1>
    一级标题 标签  

图片标签<img src=’’>

       res := "HTTP/1.1 200 OK\r\n\r\n<h1>hello</h1><img src='https://www.baidu.com/img/flexible/logo/pc/result.png'>"
      conn.Write([]byte(res))
      //n2, _ := conn.Write([]byte(res))
      //fmt.Printf("---res:%v n2:%v\n", res, n2)
      conn.Close()
   }
}

从文件读取

新增ndex.html

index.html内存放标签格式的文本

D:\GoWork\src\gitee.com\zhutao2014\s9练习\day09\demo\server\index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="text">
    <h1>hello</h1>
    <img src='https://www.baidu.com/img/flexible/logo/pc/result.png'>
</body>
</html> 

注意修改working directory

  

修改main.go

D:\GoWork\src\gitee.com\zhutao2014\s9练习\day09\demo\server\main.go

package main

import (
   "fmt"
   "io/ioutil"
   "net"
)

func main() {
   listen, err := net.Listen("tcp", "127.0.0.1:8888")
   if err != nil {
      fmt.Println("listen err:", err)
      return
   }

   for true {
      conn, _ := listen.Accept()
      data := make([]byte, 1024)
      n, _ := conn.Read(data)
      if n == 0 {
         break
      }

      fmt.Println("---", string(data[:n]))

      file,_:=ioutil.ReadFile("index.html")
      res := "HTTP/1.1 200 OK\r\n\r\n"+string(file)
      conn.Write([]byte(res))
      //n2, _ := conn.Write([]byte(res))
      //fmt.Printf("---res:%v n2:%v\n", res, n2)
      conn.Close()
   }
}

效果展示

 

修改html内容

访问有1个还是3welcome

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="text">
    <h1>hello</h1>
    <h1>hello</h1>
    <img src='https://www.baidu.com/img/flexible/logo/pc/result.png'>
</body>
</html>

不重启,直接再发起请求

执行流程:每次都会重新读取 html文件内容

  

可通过ide自带的插件,直接打开

下午06 html的标准结构和语法

浏览器是个解释器

按照默认的结构 

F12 开发者模式

network网络请求日志
Response 响应体内容
elements 响应体的详细内容

<!DOCTYPE html>

声明当前浏览器用什么模式渲染元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="text">
    <h1>hello</h1>
    <h1>hello</h1>
</body>
</html>

 

<html> 根标签

<head> 功能标签

<body> 页面展示的内容

窗口的内容

head

meta

<meta charset="UTF-8">

title

<title>ZHUTAO2014</title> 

 

 

link标签 导入文件

<head>
    <meta charset="UTF-8">
    <title>ZHUTAO2014</title>
    <link rel="icon" href="//www.jd.com/favicon.ico" mce_href="//www.jd.com/favicon.ico" type="image/x-icon"/>
</head>

标签:

由尖括号包裹的特定关键字

闭合标签

有开头有结尾

<h1>一级标题</h1>

自闭和标签

<meta charset="UTF-8">
<img src='https://www.baidu.com/img/flexible/logo/pc/result.png'>

标签可以加属性

属性不一定必须有,src 属性

标签 <标签名 属性="属性值1" 属性2="属性值2">文本</标签名>
闭合标签 <h1>一级标题</h1>
自闭合标签 <img src="">

标签可以嵌套

<h1><p>aaa</p></h1>

不能交叉嵌套

<h1><p>aaa</h1></p>

html不区分大小写

<标签名 属性="属性值1" 属性2="属性值2">内容部分</标签名>
<标签名 属性="属性值1" 属性2="属性值2".../>

总结

1、HTML标签是由尖括号包围的特定关键词
2、标签分为闭合和自闭合两种标签
3、HTML不区分大小写
4、标签可以有若干个属性,也可以不带属性,比如就不带任何属性
5、标签可以嵌套,但是不可以交叉嵌套

下午07 基本标签

标题标签<h1>

<h1>一级标题</h1>
<h2>2级标题</h2>
<h3>3级标题</h3>
<h4>4级标题</h4>
<h5>5级标题</h5>
<h6>6级标题</h6>

注释 Ctrl+/

文本默认处理机制

浏览器渲染时,无论遇到多少个空格和换行符都会处理成一个空格

<body>
hello user1
hello user2
hello user3
</body>

换行标签<br>

<body>
自嘲诗<br>
本身后山人<br>
偶做前堂客<br>
醉舞经阁半卷书<br>
坐井说天阔<br>
</body> 

 

 

 

 

段落标签<p>

行间有间隔

 

<body>
自嘲诗<br>
本身后山人<br>
偶做前堂客<br>
醉舞经阁半卷书<br>
坐井说天阔<br>

<p>自嘲诗</p>
<p>本身后山人</p>
<p>偶做前堂客</p>
<p>醉舞经阁半卷书</p>
<p>坐井说天阔</p>
</body>

 

块级标签:

1独占1行
2可设置长宽

h1-h6标签
br标签
p标签

  

rain <p>rain</p>

看到什么效果?

  

 

内联标签

1 按内容占宽
2 不可以设置长宽

标签<b> </strong> 内联标签

变斜<em> <i>

user <b>user1</b> <strong>user1</strong>
<em>user2</em> <i>user2</i>

基本嵌套规则:

块级标签可以嵌套块级和内联标签

内联标签只能嵌套内联标签

user <b>user1</b> <strong>user1</strong>
<em>user2</em> <i>user2</i>
<b><i>user3</i></b>

 

html特殊符号

https://tool.chinaz.com/Tools/htmlchar.aspx 

空格

5个空格

user <b>user1</b> <strong>user1</strong>
<em>user2</em> <i>user2</i>     α
<b><i>user3</i></b>

课间练习

块级标签

<h1></h1>

<br>

<p> </p>

<body>
<h1>一级标题</h1>
<h2>2级标题</h2>
<h3>3级标题</h3>
<h4>4级标题</h4>
<h5>5级标题</h5>
<h6>6级标题</h6>
自嘲诗<br>
本是后山人<br>
偶作前堂客<br>
醉舞经阁半卷书<br>
坐井说天阔<br>

<p>自嘲诗</p>
<p>本是后山人</p>
偶<p>作前堂客</p>
</body>  

打印结果

  

内联标签

<b> </b>

<strong> </strong>

<em> </em>

<i> </i>

yuan yuan
<b>yuan</b>
<strong>yuan</strong>
<em>yuan</em>
<i>yuam</i>

下午08 divspan标签

<div>
<span>
<hr>

标签<div>块级标签

1 没有样式(配合css做布局使用的)

 

 

 

 

 

 

 

 

 

 

 

先有html,涉及到复杂样式用css 

会在原有基础上,再做样式

  

p标签 还有默认间隙需处理

标签<span> 内联标签

什么样式都没有

 

 

 

 

 

 

 

div整行都显示背景
span 只有文字背景

 

<head>
    <meta charset="UTF-8">
    <title>ZHUTAO2014</title>
    <style>
        #i1{
            font-size: 32px;
            font-weight: 900;
            font-style: italic;
            color: red;
            
        }
        #i2{
            background-color: red;
        }
    </style>
</head>

<body>
<div id="i1">div</div>
<span id="i2">span</span>
</body>

 

为什么用div多于span

div是块级的,可以嵌套块级的
span内联的只能嵌套内联的 所以用的相对少

下午09 超链接标签

超链接标签

  自带点击事件,会让浏览器向href对应的路径发送一个请求信息

  

<a href=""></a>
<a href="http://www.baidu.com">百度</a>
<a href="http://www.baidu.com" title="baidu">百度</a>

直接通过域名可以访问,记不住
点击搜索超链接,向服务器发起一个请求

<a target="_blank" class="cate_menu_lk" href="//shouji.jd.com/">手机</a>

<a>标签

默认发送http get请求

preview预览

  

title 悬浮属性

<a href="http://www.baidu.com" title="baidu">百度</a>

鼠标悬浮上去,可以看到baidu

 

target 覆盖或弹窗属性

  _self 拿回的请求结果,覆盖掉当前标签

<a href="http://www.baidu.com" title="baidu" target="_self">百度</a>

  _blank 弹出新窗口

<a href="http://www.baidu.com" title="baidu" target="_blank">百度</a>

放入图片

<a href="http://www.baidu.com" title="baidu" target="_blank">百度</a>
<a href="https://www.jd.com"><img src="https://misc.360buyimg.com/jdf/1.0.0/unit/global-header/5.0.0/i/jdlogo-201708-@1x.png">京东</a>
<a href=""><img src="" alt="加载失败时展示"></a>

为什么在一行?

1 img标签 内联标签
2 a标签   内联标签

本地跳转

<body>
<a href="index002.html">index002</a>
<a href="index003.html">index003</a>
</body>

默认点击覆盖

<a href="index002.html" target="_self">index002</a>

下午10 image标签

自闭合标签

src

alt 加载失败时展示

title

<img src="http://www.baidu.com/test.png" alt="加载失败" title="图片">

宽度和高度

(很少用,一般用css的)

<img width="100" height="35" src="https://www.baidu.com/img/flexible/logo/pc/result.png" alt="加载失败" title="图片">

点击图片跳转可以配合a标签使用

<a><img src="" alt="加载失败"></a>
<a href="http://www.baidu.com"><img width="100" height="35" src="https://www.baidu.com/img/flexible/logo/pc/result.png" alt="加载失败" title="百度1下">百度一下</a>

 

 

 

css
  1找标签
  2做渲染

id标签选择器

通过嵌套span标签,

text-decoration: none; 去掉下划线
<style>
    a {
        text-decoration: none;
    }
    #i1 span {
        color: gray;
    }
</style>
<a id="i1" href="http://www.baidu.com"><img width="100" height="35" src="https://www.baidu.com/img/flexible/logo/pc/result.png" alt="加载失败" title="百度1下"><span>百度一下</span></a>
<a id="i2" href="http://www.baidu.com"><img width="100" height="35" src="https://www.baidu.com/img/flexible/logo/pc/result.png" alt="加载失败" title="百度1下"><span>百度一下</span></a>

练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        a {
            text-decoration: none;
        }
        #i1 span{
            color:gray;
        }
    </style>
</head>
<body>
<a id="i1" href="http://www.jd.com"><img width="200" height="80" src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png">
<span>百度</span>
</a>
<a href="http://www.jd.com"><img width="200" height="100" src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"><span>百度</span></a>
</body>
</html>

下午11 列表标签-块级标签

ul 无序列表

type属性

<ul> 无序列表

<li></li> 块级标签使用

<ul type="square">
    <li>西游记</li>
    <li>三国演义</li>
    <li>水浒传</li>
    <li>红楼梦</li>
</ul>

panding内间距

 

<ol> 有序列表

<ol>
    <li>西游记</li>
    <li>三国演义</li>
    <li>水浒传</li>
    <li>红楼梦</li>
</ol>

下午12 table表格标签

  

示例1

tr table row 行
td 单元格

<table>
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>部门</td>
    </tr>
</table>

示例2

<table border="1">
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>部门</td>
    </tr>
</table>

tr 块级标签

<table border="1">
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>部门</td>
    </tr>
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>部门</td>
    </tr>
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>部门</td>
    </tr>
</table>

表格

<table border="1">
    <tr>
        <td>姓名</td>
        <td>年龄</td>
        <td>部门</td>
    </tr>
    <tr>
        <td>User01</td>
        <td>18</td>
        <td>开发</td>
    </tr>
    <tr>
        <td>User02</td>
        <td>20</td>
        <td>测试</td>
    </tr>
</table> 

th 第一行标题

<table border="1">
    <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>部门</th>
    </tr>
    <tr>
        <td>User01</td>
        <td>18</td>
        <td>开发</td>
    </tr>
    <tr>
        <td>User02</td>
        <td>20</td>
        <td>测试</td>
    </tr>
</table>

 

 

 

合并单元格 rowspan

<table border="1">
    <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>部门</th>
    </tr>
    <tr>
        <td>User01</td>
        <td>18</td>
        <td rowspan="2">开发部</td>
    </tr>
    <tr>
        <td>User02</td>
        <td>20</td>
    </tr>
</table>

合并行 colspan

<table border="1">
    <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>部门</th>
    </tr>
    <tr>
        <td>User01</td>
        <td>18</td>
        <td rowspan="2">开发部</td>
    </tr>
    <tr>
        <td colspan="2">User02</td>
    </tr>
</table>

可省略<thead>

可省略<tbody>

<table border="1">
    <thead>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>部门</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>User01</td>
            <td>18</td>
            <td rowspan="2">开发部</td>
        </tr>
        <tr>
            <td colspan="2">User02</td>
        </tr>
    </tbody>
</table>

下午 13 表单标签

最重要 最难理解

类似于a标签,向服务器发请求了

请求方式 get post
向服务器发送请求形式
    1 地址栏:输入url,         get请求
    2 超链接a标签 打包请求发送    get请求
    3 form表单 可以是get或post
        登录、注册
    4 ajax

form表单是一个整体标签
  两大标签

input 输入框 内联标签

text类型

password类型

<body>
<h3>注册页面</h3>
<form action="">
    <p>姓名 <input type="text"></p>
    <p>密码 <input type="password"></p>
</form>
</body>

input中重要的两个属性

submit类型

具有默认事件,会把输入的内容给服务器发送过去

<body>
<h3>注册页面</h3>
<form action="">
    <p>姓名 <input type="text"></p>
    <p>密码 <input type="password"></p>
    <p><input type="submit"></p>
</form>
</body>

 

 

怎么发的?发到哪儿了?

点击按钮,浏览器发起http请求

 

基于点击行为,组合符合http格式的请求

请求方式,

action 请求地址

method 请求方式,默认get

<body>
<h3>注册页面</h3>
<form action="http://127.0.0.1:8888" method="post">
    <p>姓名 <input type="text"></p>
    <p>密码 <input type="password"></p>
    <p><input type="submit"></p>
</form>
</body>

 

 

默认url-encoded格式,没有键?

点击会覆盖
POST / HTTP/1.1
Host: 127.0.0.1:8888
Connection: keep-alive
Content-Length: 0

构建数据时,没有name属性

添加name属性

  

修改默认值

<body>
<h3>注册页面</h3>
<form action="http://127.0.0.1:8888" method="post">
    <p>姓名 <input type="text" name="user" value="root"></p>
    <p>密码 <input type="password" name="pwd"></p>
    <p><input type="submit"></p>
</form>
</body>

 

核心点没有name属性,组不成键值对

下午14

input 日期型data

格式:月份和日期01020不能省

<body>
<h3>注册页面</h3>
<form action="http://127.0.0.1:8888" method="post">
    <p>姓名 <input type="text" name="user" value="root"></p>
    <p>密码 <input type="password" name="pwd"></p>
    <p>生日 <input type="date" name="brith" value="2006-01-02"></p>
    <p><input type="submit"></p>
</form>
</body>

 

复选框

    <p>爱好:
        蓝球<input type="checkbox">
        足球<input type="checkbox">
        双色球<input type="checkbox">
    </p>
    <p><input type="submit"></p>
</form>

 

 

浏览器:勾选 是发送;不勾选 不发送

<body>
<h3>注册页面</h3>
<form action="http://127.0.0.1:8888" method="post">
    <p>姓名 <input type="text" name="user" value="root"></p>
    <p>密码 <input type="password" name="pwd"></p>
    <p>生日 <input type="date" name="brith" value="2006-01-02"></p>
    <p>爱好:
        蓝球<input type="checkbox" name="hobby" value="lanqiu">
        足球<input type="checkbox" name="hobby" value="zuqiu">
        双色球<input type="checkbox" name="hobby" value="shuangseqiu">
    </p>
    <p><input type="submit"></p>
</form>
</body>

user=user&pwd=123&brith=2006-01-02&hobby=lanqiu&hobby=shuangseqiu

问题??

使用一样的键,说明有联系,不是必须使用一样的键。

hobby1=lanqiu&hobby3=shuangseqiu

单选框

添加关联,键一样

<p>性别
    男<input type="radio" name="gender" value="male">
    女<input type="radio" name="gender" value="female">
    其他<input type="radio" name="gender" value="qita">
</p>

user=root&pwd=&brith=2006-01-02&gender=male 

file 键值对

 

 

form表单不支持放json

 

文件格式改为multipart/form-data

 

urlencoded

浏览器打包格式默认urlencoded

select标签

<p>籍贯
    <select>
        <option value="">山东</option>
        <option value="">山西</option>
        <option value="">北京</option>
    </select>
</p>

 

name放在select的地方

option选项

<p>籍贯
    <select name="province">
        <option value="shandong">山东</option>
        <option value="shanxi">山西</option>
        <option value="beijing">北京</option>
    </select>
</p>
user=root&pwd=&brith=2006-01-02&province=shanxi

默认是山西设置

<p>籍贯
    <select name="province">
        <option value="shandong">山东</option>
        <option value="shanxi" selected>山西</option>
        <option value="beijing">北京</option>
    </select>
</p>

 

 

默认值

蓝球<input type="checkbox" name="hobby" value="lanqiu" checked="checked">

属性名和属性值是一样的,可以简写

蓝球<input type="checkbox" name="hobby" value="lanqiu" checked>

单选框默认值

男<input type="radio" name="gender" value="male" checked="checked">

多行文本框

<p>
    <textarea name="jianjie" id="" cols="50" rows="8"></textarea>
</p>

 

 

 

提交后,服务器显示内容

user=root&pwd=&brith=2006-01-02&hobby=lanqiu&gender=male&province=shanxi&jianjie=%E7%AE%80%E4%BB%8B

placeholder

提醒显示,不是值本身

<p>
    <textarea placeholder="个人简介" name="jianjie" id="" cols="50" rows="8"></textarea>
</p>

 

回顾

form
<input type=”text” name=”user”>
<input type=”password” name=”user”>
date name brith
checkbox
redio
submit
select 下拉标签
textarea

拥有事件的标签

<p><input type="submit"></p>

label标签

注意for=useruser对应的是id中的id=user

<p><label for="user">姓名</label>
    <input id="user" type="text" name="user"></p>
<p>密码 <input type="password" name="pwd"></p>
<p>生日 <input type="date" name="brith" value="2006-01-02"></p>

点击姓名,直接就选中input

 

 

 

作业,练习页面复盘

css初试

<style>
[type="text"]{
    width:200px;
    height: 30px;
}
</style>

 

 

css初试2

<style>
[type="text"]{
    width:200px;
    height: 30px;
}
[type="checkbox"],[type="redio"]{
    width: 40px;
    height: 40px;
}
</style>

 

posted @ 2022-03-13 22:58  澐湮  阅读(52)  评论(0编辑  收藏  举报