HTML简介
昨日内容回顾
-
web的本质
""" 浏览器 服务端 文件(html文件) """ 课程web方向 前端 django bbs 路飞 -
HTTP协议
""" HTTP协议的由来(与sql语句一样) 一个浏览器如何兼容多个服务端 """ # 四大特性 1、基于请求响应 2、基于TCP/IP作用域应用层之上的协议 3、无状态 无论来多少次 都跟第一次一样,不会做记录 如何做到保存用户状态 cookie、session、token 4、无/短链接 请求来了,就响应,之后就没有联系 长链接:websocket(群聊功能、服务端主动给客户发送数据) # 请求数据格式 请求首行(HTTP协议的版本,当前请求方式) 请求头(一大堆的k、v键值对) \r\n 请求体(并不是所有的请求方式都有请求体、get没有、post有) # 响应数据格式 响应首行(HTTP协议的版本,响应状态码) 响应头(一大堆k、v键值对) 响应体(浏览器展示给用户看的内容) # URL 统一资源定位符 类似于坐标 # 请求方式 1、get请求 向别人要数据(也可以携带参数,只不过参数不是放在请求体里面,而时直接放在url后面) url?username=jason&password=123 2、post请求 向别人提交数据 # 响应状态码 """用简短的数据来表示一大串的提示信息""" 1xx:服务端已经成功接收到了你的数据 正在处理你可以继续提交 2xx:请求成功(200,ok) 3xx:重定向(你想访问a页面,但是由于条件不符合,跳转到了b页面) 4xx:请求错误(404请求资源不存在,403请求不符合条件) 5xx:服务端内部错误(500) ps:上述的状态码是HTTP协议规定的到了公司都是用公司设顶的状态码和提示信息 -
HTML简介
"""
超文本标记语言(在学习的时候只需要记忆每个标签表是的什么意思,没有什么逻辑可言,死记)
书写网页的一条标准
除了HTML可以书写前端页面之外
还有xml也可以书写前端页面
"""
# 注释 <!--注释-->
# 文档结构
<html>
<hesd></head>:不是给用户看的,主要是给浏览器看的一些配置信息
<body></body>书写的内容都是给用户看的
</html>
-
head常用的标签
""" title:定义网页标题 style:内部支持书写css格式代码 link:引入外部css代码 script:内部可以书写js代码并未也可以引入外部js文件 meta: 定义网页源信息 keywords description """ -
body内的标签
""" h1-h6 标题标签 p 段落标签 u 加粗 i 斜体 b s hr 分割线 br 换行 """ # 特殊符号 空格 大于 > 小于 < & ® © ¥ -
常用的标签
""" div:块儿及标签 网页储器划定范围的 sapn:行及标签 划定文本的 """ # a标签 链接标签 <a href='' target=''></a> href 1、可以放一个url点击自动跳转 2、还可以放一个其他id值 锚点功能 target 控制是否在当前页面跳转 _self _blank # img标签 图片标签 <img src='' alt='' title='' height='' width=''/> src 1、可以存放图片的路径 本地路径或者线上路径 2、还可以放一个url 会自动向一个url提交get请求获取图片的数据展示 alt 图片加载不出来的时候 展示的提示信息 title 鼠标悬浮在图片上之后显示出来的提示信息 height、width 单独调整某一个 另一个会自动等比例调节 # 标签一般情况下都要有两个重要的属性 id值 唯一标识 同一个页面不嫩有重复的 class值 类似于类的继承 可以有多个 -
标签的分类
""" 分类1 双标签:<h1></h1> 单标签:<img/> 分类2: 块儿及标签:独占一行 可以设置长宽 div p 注意;块儿及标签内部可以嵌套任意的行内标签和块儿及标签 但是p标签只能嵌套行内标签 行标签:本身文本多大就占多大 不能设置长宽 span a img ps;上述的规定知识HTML书写规范 如果不遵寻 不会报错 浏览器会自动帮你解除嵌套关系 """ -
列表标签
ul li 页面上只要是带有规则的排序文字 一般用的都是无序列表 ol li 有序列表 dl dt dd 标题列表
今日内容概要
- 表格标签(只要展示一些数据 一般都可能用到表格标签)
- 表单标签(重要:获取前端用户数据发送给后端)
- 后端框架的基本使用(flask)
- css层贴央视表(选择器)
表格标签
一些数据按照表格的形式展示<table border="20"> <thead> 表头(字段信息) <tr> 一个tr就表示一行 <th>username</th> th 加粗文本 <th>password</th> td 正常文本 <th>hobby</th> </tr> </thead> <tbody> 表单(数据信息) <tr> <td>jason</td> 正常文本 <td>123 </td> <td>read</td> </tr> <tr> <td>egon</td> <td colspan="2">qwe</td> <td rowspan="2">dbj</td> </tr> <tr> <td>tank</td> <td>123</td> <td>DBJ</td> </tr> </tbody></table><table border="1"> 加外边宽<td colspan="2">qwe</td> 水平方向站多行<td rowspan="2">dbj</td> 垂直方向占多行# 原生的表格标签很丑 但是后续我们一般使用的都是框架封装好的 很好看
表单标签
"""能够获取到前端用户输入的数据(用户输入的、用户选择的、用户上传的...)基于网络发送给后端服务器"""# 一个注册功能<form action=""></form> 在该form标签颞部书写的获取用户的数据都会被form 标签提交到后端action:控制数据提交的后端路径(给哪个服务器提交数据) 1、什么都不写 默认就是像当前页面所在的url提交交数据 2、只写路径;https://www.baidu.com 像百度服务端提交 3、只写路径后缀action='/index/' 自动识别出党亲服务端的ip和port拼接到前面 host:port/index/ <label for='d1'>第一种直接将input框西写在label内username:<input type='text' id='d1'> 第二种 通过链接id即可 无需嵌套<label for="d2">password:</label><input type="text" id="d2">ps:input 不跟label关联也没问题 """label 和 input都是行内标签"""input标签 就类似于前端的变形金刚 通过type变形 text:普通文本 password;密文 date :日期 sumbit:用来触发form表单的提交数据的动作 button:就是一个普普通的按钮,没有任何功能 但是他是最后用的 学完js之后就可以给他自定义任何功能 reset:重置表单 默认选中要加checked='checked' <input type="radio" name="gender" checked='checked'>男 name 要指定同一名字变成三选一 当标签的属性名和属性值一样的时候可以简写 <input type="radio" name="gender" checked>女 checkbox:多选 <p>hobby <input type="checkbox" name="hobby" checked>篮球 <input type="checkbox" name="hobby" checked>足球 <input type="checkbox" name="hobby">橄榄球 </p> file:获取文件 也可以一次性获取多个 <input type='file' multiple> hidden:隐藏当前input框 钓鱼网站 select 标签 默认是单选可以加multiple参数变多选 默认选中 selected <p>province: <select name="province" id="" multiple> <option value="">上海</option> <option>北京</option> <option selected>深圳</option> </select> </p> textarea标签 获取大段文本 <textarea name="" id="" cols="30" rows="10"></textarea> # 能够触发form表单提交数据的按钮有哪些(****重点) 1、<input type="submit" value="注册"> 2、<button>点你</button> <p> <input type="submit" value="注册"> 能 <input type="button" value="按钮"> 不能 <input type="reset" value="重置"> 不能 <button>点你</button> 也能刷新网页 </p># 所有获取用户输入的标签 都应该有name属性 name就相当于字典的key 用户的数据就相当于是字典的value <p>gender: <input type="radio" name="gender">男 <input type="radio" name="gender">女 <input type="radio" name="gender">其他 </p>
验证form表单提交数据
# 验证代码无需掌握。看一下效果form表单默认提交表单数据的方式是get请求 数据是直接放再url后面的 http://127.0.0.1:5000/index/?username=sdadasdsda&gender=on你可以指定method指定提交的方式 <form action="http://127.0.0.1:5000/index/" method="post"> # 针对用户选择的标签 用户不需要输入内容 但是你需要提前给这标签添加内容value值<p>gender: <input type="radio" name="gender" value="male">男 <input type="radio" name="gender" checked value="female">女 <input type="radio" name="gender" value="others">其他</p><p>hobby: <input type="checkbox" name="hobby" value="basketball">篮球 <input type="checkbox" checked name="hobby" value="football">足球 <input type="checkbox" checked name="hobby" value="doublecolorball">双色球</p><p>province: <select name="province" id=""> <option value="sh">上海</option> <option value="bj" selected>北京</option> <option value="sz">深圳</option> </select></p>"""form 表单提交文件需要注意 1、method必须是post 2、enctype="multipart/form-data" enctype类似于数据提交的编码格式 默认是urlencoded 只能提交普通的数据文本 formdata 就可以支持提交文件数据"""<form action="http://127.0.0.1:5000/index/" method="post" enctype="multipart/form-data">"""后端flask框架实现"""from flask import Flask, requestapp = Flask(__name__)# 当前url既可以支持get请求也可以支持post请求 如果不写默认只能支持get请求@app.route('/index/',methods=['GET','POST'])def index(): print(request.form) # 获取form表单提交过来的非文件数据 # ImmutableMultiDict([('username', 'jason'), ('password', '123132131231233'), ('gender', 'on')]) print(request.files) # 获取文件数据 file_obj = request.files.get('myfile.png') file_obj.save(file_obj.name) return 'OK'app.run()# 针对用户输入的标签 如果你加了value 那么就是默认值<label for="d1">username:<input type="text" id="d1" name="username" value="默认值"></label>disable 禁用readonly只读
css
层贴杨样式表:就是给HTML标签添加样式的 让他更加的好看
# 注释/*单行注释*//*多行注释1多行注释2多行注释3*/通常在写css样式代码的时候会用注释来划分样式区域(因为HTML代码多的所以对css代码也会很多)/*这是博客园首页的css样式文件*//*顶部导航条样式*/.../*左侧菜单栏样式*/.../*右侧菜单栏样式*/...# css语法结构选择器 { 属性1:值1; 属性2:值2; 属性3:值3; 属性4:值4;}# css引入的三种方式 1、style标签直接书写 <style> h1 { color: rosybrown; </style> 2、link标签引入外部css文件(最正规的方法 解耦合) <link rel="stylesheet" href="mycss.css"> 3、行内式(一般不用) <h1 style="color: blue">你好</h1>
"""css学习流程 1、先学习如何查找标签 css查找标签的方式要学学会 后面的框架封装的查找语句都是基于css来的 css选择器很简单 2、子后再学习如何添加样式"""
css选择器
基本选择器
# id选择器# 类选择器# 元素/标签选择器# 通用选择器<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> /*id选择器*/ # 找到id是d1的标签 /*#d1 {*/ /* color: rosybrown;*/ /*}*/ /*类选择器*/ # 找到class值李包含c2的标签 /*.c2 {*/ /* color: yellow;*/ /*}*/ /* 元素选择器*/ # 找到所有span的标签 /* span {*/ /* color: blue;*/ /* }*/ /* 通用选择器*/ # 将html的所有标签找到 /* * {*/ /* color: blue;*/ /* }*/ </style></head><body> <h1 id="d1" class="c1 c2">你好啊</h1> <h1 class="c2">hello world</h1> <span> 111 </span></body></html>
组合选择器
"""在前端 将用标签的欠条用亲戚关系表述层级 <div>div <p>div p</p> <p>div p <span>div p span</span> </p> <span>span</span> <span>span</span> </div> div里面的p span都是div的后代 p是div的儿子 p里面的span是p的儿子,是div的孙子 div是p的爹"""# 后代选择器# 儿子选择器# 毗邻选择器# 弟弟选择器<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> /*后代选择器*/ # 要用空格隔开 /*div span {*/ /* color: blue;*/ /*}*/ /*儿子选择器*/ # 用>表示 /*div>p {*/ /* color: red;*/ /*}*/ /*毗邻选择器*/ # 用加号表示 同级别紧挨下边的第一个 /*div+span { */ /* color: red;*/ /*}*/ /*弟弟选择器*/ # 同级别下面的所有的span /*div~p {*/ /* color: red;*/ /*}*/ </style></head><body> <div>div <p>div p</p> <p>div p <span>div p span</span> </p> <span>span</span> <span>span</span> </div> <span>11</span> <span>22</span> <p>qq</p></body></html>
属性选择器
"""1、含有某个属性2、含有某个属性并且含有某个值3、含有某个属性并且含有某个值的某个标签"""# 属性选择器是以[]为标志的<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> /*[username] {*/ # 将所有含有属性名username的标签的背景色改为蓝色 /* background-color: blue;*/ /*}*/ /*[username='tank'] {*/ # 将找到所有的属性名是username并且属性值是jason的标签 /* background-color: red;*/ /*}*/ /*input[username='jason'] {*/ # 找到所有的属性名是username 并且属性值是jason的input标签 /* background-color: yellow;*/ /*}*/ </style></head><body> <input type="text" username="tank"> <input type="text" username="jason"> <input type="text" username="kevin"> <p username="tank">水箱老师</p> <div username="egon">矮子老师</div> <span username="jason">jason老师 </span></body></html>

浙公网安备 33010602011771号