HTML

HTML简介

超文本标记语言

HTML就是书写网页的一套标准,我们浏览器看到的所有网站页面,内部其实都是HTML代码。

注释: 注释是代码之母
<!-- 单行注释-->

<!-- 
多行注释1
多行注释2
多行注释3
-->

由于HTML代码非常的杂乱无章并且很多,所以我们我们习惯于用注释来划定区域方便后续的查找
eg:
<!-- 导航条开始-->
导航条所有的html代码
<!-- 导航条结束-->

ps:文件的后缀名其实给用户看的,只不过对应不同的文件后缀名有不同的软件来处理并添加很多功能

注意:
1. HTML代码是没有格式的,可以全部写在一行都没有问题,只不过我们习惯后了缩进来表示代码

2. 两种打开HTML文件的方式:
    1.找到文件所在的位置右键选择浏览器打开;
    2.在pycharm内部,集成了自动调用浏览器的功能,直接点击即可(前提是你的电脑上安装了对应的浏览器) 直接全部使用谷歌浏览器

3. 在pycharm中 书写HTML代码的时候,你只需要写标签名,然后tab就能自动补全

HTML文档结构

<!DOCTYPE html> 标签
<html>
    <head> </head> :head标签不是给用户看的,而是定义一些配置主要给浏览器看的
    <body> </body> :body标签 写什么浏览器就渲染什么,用户就能看到什么
</html>

ps: <!DOCTYPE html> 标签
    <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前。
    <!DOCTYPE> 声明不是 HTML 标签;它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。

标签具有的两个重要属性

1.id值
    定义标签的唯一ID,HTML文档树中唯一
2.class
    为html元素定义一个或多个类名(classname)(CSS样式类名) (该值有点类似于面向对象里面的继承,一个标签可以继承多个class值)
3.style
    规定元素的行内样式(CSS样式)

ps: 标签既可以有默认的属性,也可以自定义属性

<p id="d1" class="c1" usename="jason" password="123"></p>

标签的分类1

1. 双标签 (有开始和结尾的双标签)
    eg:<div>和</div>  第一个标签是开始,第二个标签是结束。结束标签会有斜线
2. 单标签(自闭和 标签)
    eg:<br/>

head内的常用标签

1. <title>Title </title>  :网页标题

2. <style> h1 {color: greenyellow;} </style>  :内部用来书写css代码

3.<link rel="stylesheet" href="mycss.css">    :引入外部的css文件或网站图标

4.<script>  alert(123) </script>    : 内部用来书写js代码 
  <script src="myjs.js"> </script>  : 或引用外部的js代码文件

5.<Meta> 标签介绍:(了解)
    元素可提供有关页面的元信息(mata-information),针对搜索引擎和更新频度的描述和关键词。
    标签位于文档的头部,不包含任何内容。
    提供的信息是用户不可见的。
    
meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name 属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。 

1.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">
                                                        
2.name属性: 主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。
    就是给你html加上各种关键词信息,方便搜索引擎(百度等)搜索到 (这叫SEO搜索引擎优化)
    <meta name="keywords" content="meta总结,html meta,meta属性,meta跳转">
    网页的描述信息,会在搜索页面的右下角简介中展示                                     
    <meta name="description" content="老男孩教育Python学院"> 
                                                    
<!--例:淘宝的页面中-->
<meta name="keyword" content="淘宝,掏宝,网上购物,C2C,在线交易,交易市场,网上交易,交易市场,网上买,网上卖,购物网站,团购,网上贸易,安全购物,电子商务,放心买,供应,买卖信息,网店,一口价,拍卖,网上开店,网络购物,打折,免费开店,网购,频道,店铺">
<meta name="description" content="淘宝网 - 亚洲较大的网上交易平台,提供各类服饰、美容、家居、数码、话费/点卡充值… 数亿优质商品,同时提供担保交易(先收货后付款)等安全交易保障服务,并由商家提供退货承诺、破损补寄等消费者保障服务,让你安心享受网上购物乐趣!">          

body内的常用标签

1.基本标签

<h1>标题标签 </h1>  1-6级标题

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

<p>段落标签</p>
<hr>	水平分割线
<br>	换行标签

2.标签的分类2

# 1.块级标签:独占一行
    eg: h1~h6 p div
    a.块级标签可以修改长度
    b.块级标签内部可以嵌套任意的块级标签和行内标签
       但p标签 虽然是块级标签,但是只能嵌套行内标签,不能嵌套块级标签  (HTML书写规范)
       	 如果你套了,问题也不大 因为浏览器会自动帮你解开(浏览器是直接面向用户的,不会轻易的报错,哪有有报错用户也基本感觉不出来)
            
# 2.行内标签(内联标签):自身文本多大就占多大
    eg:i u s b span
    a.行内标签不可以修改长度 修改了也不会变化
    b.行内标签不能嵌套块级标签,可以嵌套行内标签(但没什么意义)

3.特殊符号

&nbsp;   >>> 空格
&gt;	>>> 大于号 '>'
&lt;	>>> 小于号 '<'
&amp;	>>> 连接符 '&'
&yen;	>>> 人民币符 '¥'
&copy;	>>> 版权'©'   (英文Copyright(版权)的简写,代表作者版权所有声明)
&reg;	>>> 注册商标'®'

4.常用标签

div  属于块级标签

span 属于行内标签

上述的两个标签是在构造页面初期最常使用的,页面的布局一般先用div 和span 占位之后再去调整样式,尤其是div使用非常的频繁

div 你可以把它理解成 一块区域,也就意味着用div来提前规定所有的区域,之后往该区域内部填写内容即可
span 给普通的文本占位

3.img 标签

# 图片标签
<img src="" alt="" title='新垣结衣'>

属性:
src=''
    1.图片的路径,可以是本地的也可以是网上的
    2.URL   自动朝该url发送get请求获取数据    
    
alt='这是我的前女友'  : 当图片加载不出来的时候,给图片的描述信息
    
title='新垣结衣'     : 当鼠标悬浮到图片上之后,自动展示的提示信息

height='800px'	    : 修改图片的高度 px像素单位
width=''	    : 修改图片的宽度
   若只修改高度或者宽度,另一个会根据原图等比例调整;若都修改了,没有考虑比例性的问题,图片就会失真

4.a标签

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

<a href=""></a>

"""
当a标签制定的网址从来没有被点击过,那么a标签的字体颜色是蓝色,若点击过后 变成紫色 (浏览器给你记忆了)
"""

属性:
href
    1. 放URL,用户点击就会跳转到该URL页面
    2. 放其他标签的id值,点击即可跳转到对应的标签位置  格式:href='# id值'
target=
    1. 默认a标签是在当前页面完成跳转  》》》 '_self'
    2. 修改为新建窗口页面跳转        》》》 '_blank'
    
# a标签的锚点功能
""" eg: 点击一个文本标题,页面自动跳转到标题对应的内容区域(目录到正文内容) """
<a href="" id="d1">顶部</a>
<h1 id="d3">hello word!</h1>
<div style="height: 1000px; background-color: red"></div>
<a href="" id="d2">中间</a>
<div style="height: 1000px; background-color: greenyellow"></div>
<a href="#d3">回到h1</a>
<a href="#d2">回到中间</a>

5.列表标签

1.无序列表(较多)

<ul>
    <li>第一项</li>
    <li>第二项</li>
    <li>第三项</li>
    <li>第四项</li>
</ul>

# 虽然ul标签很丑,但是在页面布局的时候 只要是排版一致的几行数据基本上用都是 ul标签

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

2.有序列表(了解)

<ol>
    <li>111</li>
    <li>222</li>
    <li>333</li>
</ol>

type属性:
    1 数字列表,默认值
    A 大写字母
    a 小写字母
    Ⅰ大写罗马
    ⅰ小写罗马
    
start="":  定义起始位    

3.标题列表(了解)

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

6.表格标签

jason 123 read
egon	123 dbj
tank  123 hecha
...
<table> </table> 标签

<table>
    <thead>
        <tr>  一个tr就表示一行
            <th>username</th>  加粗文本
            <td>username</td>  正常文本
        </tr>
    </thead>  表头(字段信息)
    <tbody>
        <tr>
            <td>jason</td>
            <td>123</td>
            <td>read</td>
        </tr>
    </tbody>	 表单(数据信息)
</table>


<table border="1">  加 表格外边框
<td colspan="2">egon</td>  水平方向占多行  列合并
<td rowspan="2">DBJ</td>   垂直方向占多行  行合并

# 表格标签不一定都要讲thead 和 tbody 都写出来,可以只有表单 tbody
# 原生的表格标签很丑 但是后续我们一般都是使用框架封装好的 很好看
属性:

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

7.表单标签(重要)

"""
能够获取前端用户数据(用户输入的、用户选择、用户上传...)基于网络发送给后端服务器
"""
# 写一个注册功能
<form action=""></form>  在该form标签内部书写的获取用户的数据都会被form标签提交到后端
    action属性:控制数据提交的后端路径(给哪个服务端提交数据)
        1.什么都不写  默认就是朝当前页面所在的url提交数据
        2.写全路径:https://www.baidu.com  朝百度服务端提交   
        3.只写路径后缀action='/index/' 自动识别出当前服务端的ip和port拼接到前面
          eg:host:port/index/
        
# 1.label标签
    <label> 标签为 input 元素定义标注(标记)。
    <label> 标签不会向用户呈现任何特殊效果。
    <label> 标签的 for 属性值应当与相关元素的 id 属性值相同。

    
# 2.input标签 就类似于前端的变形金刚  通过type属性变形
    type属性
        text:普通文本
        password:密文
        date:日期	
        submit:用来触发form表单提交数据的动作按钮
        button:就是一个普普通通的按钮 本身没有任何的功能 但是它是最有用的,学完js之后可以给它自定义各种功能
        reset:重置内容的按钮
        radio:单选框
            默认选中,要加checked='checked'
             <input type="radio" name="gender" checked='checked'>男
            当标签的属性名和属性值一样的时候可以简写
            <input type="radio" name="gender" checked>女
        checkbox:多选       # check的意思是 打钩
            <input type="checkbox" checked>DBJ
        file:获取文件  也可以一次性获取多个
            <input type="file" multiple>
        hidden:隐藏当前input框
            钓鱼网站  设置一些输入框的默认值(nama/vaule),再把输入框隐藏,则提交数据时,就篡改了你的数据
        
    其他属性:
        name:表单提交时的“键”,注意和id的区别
        value:表单提交时对应项的值
            type="button", "reset", "submit"时,为按钮上显示的文本内容
            type="text","password","hidden"时,为输入框的初始值
            type="checkbox", "radio", "file",为输入相关联的值
        checked:radio和checkbox中为默认被选中的项
        readonly:只读 (该输入框既不能输入,但向后端提交显示的数据  text和password设置只读)
        disabled:禁用 (该输入框既不能输入,也不会向后端提交数据   所有input均适用)
        placeholder:背景占位提示符  (在输入框中,背景显示的提示信息)
        
#input标签常与label标签联合使用
# 第一种 直接讲input框写在label内部  (建议这种,结果清晰)
<label for="d1">  
    username:<input type="text" id="d1">
</label>					

#第二种 通过id链接即可 无需嵌套
<label for="d2">password:</label>
<input type="text" id="d2">
ps:input不跟label关联也没有问题
  
"""
label 和 input都是行内标签
"""
        
    
# 3.select标签 默认是单选 可以加mutiple参数变多选 默认选中selected   # select的意思是 选择
    <select name="" id="" multiple>
        <option value="" selected>新垣结衣</option>   # option:选项
        <option value="" selected>斯佳丽</option>
        <option value="">明老师</option>
    </select>

            
# 4.textarea标签  获取大段文本
    <textarea name="" id="" cols="30" rows="10"></textarea>

# 能够触发form表单提交数据的按钮有哪些(一定要记住)
    1、<input type="submit" value="注册">
    2、<button>点我</button>
    
# 所有获取用户输入的标签 都应该有name属性
    name就类似于字典的key
  用户的数据就类似于字典的value
    # 需要用户选择的标签 你需要自己加上value值
        radio
        checkbox	
        option
        ps:如果你给获取用户输入的标签加了value值 那么就类似于默认值

8.验证form表单提交数据

# 接下来的flask框架代码无需掌握  看一下效果即可
pip3 install FLASK

# 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">
  
# 针对用户选择的标签(radio/checkbox/select) 用户不需要输入内容 但是你需要提前给这些标签添加内容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类似于数据提交的编码格式
                默认是form-urlencoded 只能够提交普通的文本数据
                form-data 就可以支持提交文件数据
"""
<form action="http://127.0.0.1:5000/index/" method="post" enctype="multipart/form-data">


"""下面的代码无需掌握 你只需要关心form表单即可"""
from flask import Flask, request

app = Flask(__name__)

# 当前url既可以支持get请求也可以支持post请求  如果不写默认只能支持get请求
@app.route('/index/',methods=['GET','POST'])   
    # route:路线的意思,第一个参数就是ip+端口,之后的路径。一般是视图名,特别注意 前后都有'/'
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只读
posted @ 2021-12-21 17:23  Edmond辉仔  阅读(31)  评论(0编辑  收藏  举报