前端之html

一、什么是前端
前端与后端:
  后端是在服务器上运行的。
  前端广义上理解可以是在客户端上运行的,狭义的理解可以是浏览器上运行的。
二、前端开发的技术栈
 
HTML
  • 超文本标记语言 Hyper Text Markup Language
  • ‘超文本’就是指页面内可以包含图片、链接、甚至音乐、程序等非文本元素
  • 负责完成页面的结构
CSS
  • 级联样式表 Cascading Style Sheet
  • 负责页面的风格设计,样式、美观
JavaScript
  • 浏览器脚本语言,可以编写运行在浏览器上的程序
  • 编程语言
  • 负责编写页面特效、调用浏览器的API(BOM)、操作改变页面内容(DOM),从后端获取数据(Ajax)渲染页面等
  • jQuery是JavaScript的一个库
  • Vue、Angular、React等是JavaScript框架
 
一个网页有动态的图,红色的按钮,输入框,可点击的东西,这些东西是什么呢?
html 就是整个网页的骨骼架构。
css 就是有个骨骼之后穿写衣服,上些肤色之类的渲染这个人。
js 让这个人扭动起来,页面动态效果。
jQuery 是对js的一种封装,算是js的一种框架。
bootstrap 是对上面所有内容的封装。
 
 
 
三、HTML
 
1.1 什么是HTML
  • HTML是用来制作网页的标记语言。
  • HTML是Hyper Text Markup Language的英文缩写,即超文本语言。
  • HTML语言是一种标记语言,不需要编译,直接由浏览器执行。
  • HTML文件是一个文本文件,包含了一些HTML元素,标签等。
  • HTML文件必须使用.html或.html文件名后缀。
  • HTML是大小写不敏感的,HTML与htm是一样的。
  • HTML是由W3C维护的。
  • HTML是通向WEB技术世界的钥匙。
1.2 发展历史
  • HTML是从2.0版本开始的,实际上没有1.0的官方规范,在1993年6月作为互联网工程小组(IEIF)工作草案发布(并非标准)HTML2.0——1995年11月作为RFC 1866发布,在RFC 2854于2000年6月发布之后被宣布已经过时。
  • HTML3.2——1997年1月14日,W3C推荐标准
  • HTML4.0——1997年12月18日,W3C推荐标准
  • HTML4.0(微小改进)——1999年12月24日,W3C推荐标准
  • HTML5——2014年10月28日,W3C推荐标准
1.3 HTML5的由来
 
1.4 HTML5的优点
 
1.5 HTML5的兼容性
  • Internet Explorer 9以及以上版本
  • Chrome、Safari、Opera。Firefox和各种以wekkit为内核的国产浏览器
 
 
 
 
 
 
 
https://www.jd.com  是什么?是一个域名!
域名对应一个ip地址(IP地址锁定在一台电脑,IP地址比较难记,192.168.1.10 )域名就把对应的IP地址转成为一个好记的比如字符串。
浏览器是一个socket客户端,访问京东需要输入 IP地址(找到京东的服务器,服务器也是电脑):端口号(找到对应的应用程序)   192.168.1.10:8001  像这样有很多网站不好记这些IP地址
所以就出现了域名,比如京东,就把京东的IP地址变成---->www.jd.com
 
域名将来要干什么呢?DNS解析
 
http协议默认端口号是80端口。
 
请求和响应:
浏览器socket客服端向socket服务端发信息在web项目里称之为请求。
socket服务端给客户端回信息叫响应。

http协议加工的完整的请求消息格式:

GET / HTTP/1.1
Host: 127.0.0.1:8001
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36
Sec-Fetch-Dest: document
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,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
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
http协议加工的完整的请求信息

响应格式:

  http协议版本  状态码 状态码的描述符 

  数据

2 HTML基本语法 

html文件:以下这些除了<!DOCTYPE html>其他是html文件必须要有的几个标签!

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

  </body>
</html>

<!DOCTYPE html>   文档申明,申明一个HTML5文档,作用是告诉所有的浏览器使用标准的模式去解析。

  然后在这个文档里面写标签,标签就是服务端给客户端回的,把要回的内容放到标签里面。浏览器一读到标签,就知道吧里面的内容干什么干什么加工成什么效果。

html标签:包裹里面所有的标签

<html lang="en">     lang是language的缩写,语言。"en"是english的缩写,代表在整个文档里面写的数据都偏英文为主。如果偏中文为主则是<html lang="zh-CN">


</html>
 
2.1 HTML标签
  • 单标签
  • <标签名 属性1='属性值' 属性2='属性值' ...> 
    <img src="" alt="">
  • 双标签
    <标签名 属性1='属性值' 属性2='属性值' ...> 内容部分 </标签名>
    <form action=""></form>
2.2 HTML标签属性 
  属性属于标签
  
2.3 HTML代码格式:语法规范
  • 标签嵌套 做缩进
  • 标签名 不区分大小写 建议小写
  • 属性名 不区分大小写 建议小写

2.4 HTML注释

<!--注释:标题 -- >  单行多行都可以

2.5 HTML实体(特殊符号)

常用实体:

  • &nbsp; 空格(HTML中默认是不显示空格的)

  • &lt; <

  • &gt; >

  • &amp; &

  • &copy; 版权标识(写公司网站的时候会用)

  • &yen; 人民币

3 HTML常用标签

3.1 文档申明

<!DOCTYPE html>

3.2 HTML主体结构标签

<html lang="en"></html>
此元素(标签)告知浏览器其自身是一个HTML文档
<head></head>
用于定义文档的头部,它是所有头部元素的容器。
<head>中的元素可以引用脚本、指示浏览器在哪里找到样式表、提供元信息等。
<body></body>
定义文档的主体

3.3 head头部标签:里面写一些网页描述。

  • <title></title> 网站标题

  • <title>学员管理系统</title>
  • <meta> 指定网页的元信息 指定关键字 指定描述 指定字符集 属性: charset、name、content

  •     <meta charset="UTF-8">     编码字符集为utf8
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="keywords" content="student,school,course,teacher">  关键字
    <meta name="description" content="全国最大的学员管理系统平台"> 网页描述
  • <style></style> 为HTML文档定义样式信息

  • <link>  定义文档与外部资源的关系,比如导入css文件或者指定网页图标 属性 href、 type 、 rel

  • <link type="text/css" rel="stylesheet" href="">
    <link rel="shortcut icon" href="" type="image/x-icon">
  • <script></script> 定义标签客户端脚本,比如JavaScript。script元素既可以包含脚本语句,也可以通过src属性值指向外部脚本文件。

3.4 meta元信息 :标签里面有两个属性

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

<head>
    <meta charset="UTF-8">
    <title>张仁国的主页</title>
    <!--2秒后跳转到对应的页面-->
    <meta http-equiv="refresh" content="2;URL=https://www.baidu.com">   <!--如果把URL和后面的内容去掉,就是2秒钟刷新一次页面-->
</head>

  2、name属性:主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器查找信息和分类信息用的。

3.5 格式排版标签:

  • <hn></hn>` 1~6 标题    标签的语义是写在h标签里的文字是网页的标题

  • <p></p> 段落            

  • <pre></pre> 原样输出

  • <br> 换行

  • <hr> 分隔

  • <div></div> 分块,布局用的。

3.6 文本标签:

  • <em></em> 强调 表现为斜体

  • <strong></strong> 强调 表现为粗体

  • <mark></mark> H5新增 表示被选中

  • <sup></sup> 上标

  • <sub></sub> 下标

  • <ins></ins> 添加的内容

  • <del></del> 删除的内容

  • <ruby></ruby> / <rt></rt> 加拼音 H5新增

body标签:就是整个网页页面要显示的内容

body标签里:

  • 不加标签的纯文字也是可以在body中写的
  • <b>加粗</b>
  • <i>斜体</i>  
  • <u>下划线</u>
  • <s>删除:中横线</s>  
  • <button>按钮标签</button>
  • <p>段落标签,独占一行段落</p>
  • <h1>标题标签</h1>  
  • <h2>标题标签</h2>
  • <h3>标题标签</h3>
  • 换行标签:<br>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>body标签里</title>
</head>
<body>
    <b>加粗</b>

    <i>斜体</i>
    <!--换行-->
    <br>
    <u>下划线</u>
    <!--水平线-->
    <hr>
    <s>删除(中横线)</s>

    <button>按钮标签</button>

    <p>段落标签,独占一行段落</p>
    <p><b>加粗</b></p>

    <h1>标题标签</h1>
    <h2>标题标签</h2>
    <h3>标题标签</h3>


</body>
</html>

显示效果如下:

div标签用来定义一个块级元素

<div></div>

span标签用来定义内联(行内)元素

<span></span>

img图片标签

<img src="图片路径" alt="图片加载不出来的时候显示的内容">

绝对路径:

相对路径:

img过程:

1、浏览器输入一个网址向服务端发请求

2、服务端返回一个页面给浏览器

3、浏览器拿到页面(html文件)从上往下开始渲染,发现一个img标签,img标签下的src属性会自动再去请求一下这个路径下的图片文件(这个图片肯定是放在某一台电脑上的,那台电脑会专门的socket服务端把图片的数据读出来,发到src的这个路径里来)

在浏览器上展示某些内容,大小都是按宽度高度算,单位是像数-->px,是字符串,img默认是px,可以直接数字。width和height我们平时基本不用!高度宽度一般用css来控制。

<img src="图片路径" alt="图片加载不出来的时候显示的内容" title="当鼠标放到图片上时显示的内容" width="宽度200" height="高度200">

a标签:超链接标签

<a href="https://www.cnblogs.com/zhangrenguo/p/12561993.html">模块的使用</a>

如果自己的页面还想保留在窗口 

<a href="超链接的地址" target="是否新建窗口">对超链接的描述</a>

<a href="https://www.cnblogs.com/zhangrenguo/p/12561993.html" target="_blank">模块的使用</a>

列表标签:

无序列表:

    <ul type="none">
        <li>杨静</li>
        <li>张仁国</li>
        <li>小baby</li>
    </ul>

type属性如果不写默认是disc--->实心原点,写none就没有样式。

disc--->实心原点

circle--->空心方块

square--->实心方块

有序列表:

type控制前面显示样式,start控制从那开始

  <ol type="I" start="2">
        <li>面包</li>
        <li>咖啡</li>
        <li>牛奶</li>
        <li>巧克力</li>
    </ol>

标题列表标签:

    <dl>
        <dt>骨科(标题1)</dt>
        <dd>治骨头(内容1)</dd>
        <dt>眼科</dt>
        <dd>治眼睛</dd>
        <dt>儿科</dt>
        <dd>治小孩生病</dd>
    </dl>

表格标签:

   <table>
        <thead>
        <tr>
            <th>我的任务</th>
            <th>开始日期</th>
            <th>截止日期</th>
            <th>完成百分比</th>
            <th>备注</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>前端</td>
            <td>2020-3-25</td>
            <td>2020-3-28</td>
            <td>百分之十</td>
            <td>加油</td>
        </tr>
        <tr>
            <td>django</td>
            <td>2020-3-29</td>
            <td>2020-4-5</td>
            <td>0</td>
            <td>好好学习django</td>
        </tr>
        <tr>
            <td>模块</td>
            <td>2020-4-6</td>
            <td>2020-4-8</td>
            <td>0</td>
            <td>这个简单</td>
        </tr>
        <tr>
            <td>MySQL数据库</td>
            <td>2020-4-9</td>
            <td>2020-4-17</td>
            <td>0</td>
            <td>加油</td>
        </tr>
        <tr>
            <td>linux</td>
            <td>2020-4-18</td>
            <td>2020-4-22</td>
            <td>0</td>
            <td>了解就好</td>
        </tr>
        </tbody>
    </table>

展示的效果:

 

如何把HTML文件推送给浏览器,浏览器拿到文件渲染?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>这是我的测试</h1>

</body>
</html>
HTML文件
import socket

server = socket.socket()
server.bind(('127.0.0.1',8001))
server.listen(2)
while True:
    coon, addr = server.accept()

    from_browser_msg = coon.recv(1024).decode('utf-8')
    print(from_browser_msg)

    coon.send(b'HTTP/1.1  200  ok

')
    
    #socket进行通信的时候,接收和发送都是bytes数据类型,需要把文件读成bytes字符串返回
    with open('test1.html','rb')as f:
        data = f.read()
        
    coon.send(data)
    coon.close()
服务端代码

浏览器结果显示:

 
 过程是:
  1. 浏览器向服务端发请求。
  2. 服务端回给浏览器一个html文件。
  3. 浏览器拿到文件的时候会逐行(从上往下)的度读html文件进行渲染(把标签样式渲染出来比如加黑加粗倾斜等等这类的效果)。
https://item.jd.com/52096283081.html
url统一资源定位器
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>body标签里</title>
</head>
<body>
    <table border="1" cellpadding="10">
        <thead>
        <tr>
            <th>我的任务</th>
            <th>开始日期</th>
            <th>截止日期</th>
            <th>完成百分比</th>
            <th>备注</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>前端</td>
            <td>2020-3-25</td>
            <td>2020-3-28</td>
            <td>10%</td>
            <td>加油</td>
        </tr>
        <tr>
            <td>django</td>
            <td>2020-3-29</td>
            <td>2020-4-5</td>
            <td>0%</td>
            <td>好好学习django</td>
        </tr>
        <tr>
            <td>模块</td>
            <td>2020-4-6</td>
            <td>2020-4-8</td>
            <td>0%</td>
            <td>这个简单</td>
        </tr>
        <tr>
            <td>MySQL数据库</td>
            <td>2020-4-9</td>
            <td>2020-4-17</td>
            <td>0%</td>
            <td>加油</td>
        </tr>
        <tr>
            <td>linux</td>
            <td>2020-4-18</td>
            <td>2020-4-22</td>
            <td>0%</td>
            <td>了解就好</td>
        </tr>
        </tbody>
    </table>

</body>
</html>
表格标签

input标签 :用户输入或者选择使用的标签

     用户名:<input type="text" name="uname">                  uname:用户输入的内容
        密码:<input type="password" name="pwd">          pwd:用户输入的内容
        <input type="radio" name="sex" value="1">男      sex:1
        <input type="radio" name="sex" value="2">女      sex:2
        <input type="checkbox" name="programming language" value="a">python        programming language:a
    <input type="checkbox" name="programming language" value="b">c 

    <input type="checkbox" name="programming language" value="c">php

    <input type="checkbox" name="programming language" value="d">java

    <input type="submit">

type属性:控制输入框的样式

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

name属性:输入框用来做数据的键,选择框用来分组

value属性:选择框需要value来指定一个值,输入框的value用来做默认值

当type属性为submit时就是一个提交按钮,如果value属性写别的就可以成为别的按钮,比如注册按钮。

<input type="submit" value="注册">
<button>提交按钮</button>    在form表单里button按钮和submit一样都可以提交数据,写在外面就是普通按钮。

checked属性:让某个选择框默认选中,当某个属性名和属性值一样的时候可以简写如下:

<input type="radio" name="sex" value="1" checked>

readonly属性:限制输入框,text和password设置只读,不让输内容,数据依然可以提交到后台。

disabled属性:限制输入框和选择框,不允许有任何操作,数据提交不到后台。

<input type="text" name="uname" value="zrg" readonly>
<input type="password" name="pwd" value="1234" disabled>
<input type="checkbox" name="programming language" value="a" disabled>python

form表单:提交数据到后台

<form action="http://127.0.0.1:8001">
</form>

action属性:指定数据提交路径(url)(提交页面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>body标签里</title>
</head>
<body>

    <form action="http://127.0.0.1:8001">
        用户名:<input type="text" name="uname">
        <br>
        密码:<input type="password" name="pwd">
        <br>
        <input type="radio" name="sex" value="1"><input type="radio" name="sex" value="2"><br>
        <input type="checkbox" name="programming language" value="a">python
        <input type="checkbox" name="programming language" value="b">c
        <input type="checkbox" name="programming language" value="c">php
        <input type="checkbox" name="programming language" value="d">java
        <br>
        <input type="submit">
    </form>

</body>
</html>
form表单+input标签

select标签可以写到form表单里,是下拉式的选择框,对应有选项用option来包裹。

<form action="http://127.0.0.1:8001">
    <select name="city" id="" multiple> name属性还是要把数据传到后台的 加multiple属性表示是多选(需要按住Ctrl键),不加表示单选
   <option value="1">北京</option> value属性如果没写值会把文本提交过去,如果写就是city:1
   <option value="2">上海</option>
<option value="3">深圳</option>
</select>
</form>
multiple属性:多选
disabled属性:禁用
selected属性:默认被选中
value属性:定义提交时的选项值

label标签:标识标签的功能。点击label标签中的文字,就能让标识的标签获得光标。

for后面写id属性的值,表示这个label标签指向了这个input标签,他的解释就是要输入用户名

<label for="username">为input标签说明作用</label>    通过for属性对应的值来找到id对应的这个值来找到input标签,然后给这个标签来个说明,就是说他是一个输入用户名的input标签
<input id="username" type="text" name="username">    id属性标识input标签,将来通过id值来找到这个属性

也可以不写fou属性:

        <label>
            密码:<input type="password" name="pwd" value="1234">
        </label> 

textarea多行文本:让用户在这里可以输入当行内容。

<textarea name="" id="" cols="30" rows="10"></textarea>

name:name指定数据的key

id:

cols:控制多少列,相当于文本框的高度设置。

rows:控制多少行,相当于文本框的宽度设置。

disabled:禁用

 HTML里的一些特殊符号:

内容 对应代码
空格(HTML中默认是不显示空格的) &nbsp;
> &gt;
< &lt;
& &amp;
   
版权标识(写公司网站的时候会用) &copy;
注册(一个圆圈里有个R) &reg;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
   
   
   
   
   
   
   
   
 222
原文地址:https://www.cnblogs.com/zhangrenguo/p/10068907.html