python笔记-14 html

一、简要描述html

1、 html、css、js为前端开发需要用到的三块内容,html可以理解为人的骨架,css理解为人的衣服、js使让人动起来

2、html的本质就是个文本Hyper Text Mark-up Language(超文本标记语言),本质就是一个文本文件

3、网页的各种格式,实质是一个文本文件,在文本中添加相应的标记,浏览器相当于是将这个文件下载下来,并按照规矩翻译这些标记,使得这个文件被浏览器显示出一个漂亮的格式出来。

4、浏览器访问网页的时,通过socket和服务器建立相应的会话,之后翻译服务器传过来的内容,和一般的socket通信不同的是,一个页面请求完毕后,这个浏览器和服务器之间的socket就会自动断开,当再次点击界面后,会重新建立新的socket会话。

一则代码演示网页访问的原理

import socket
#step 1
server1
=socket.socket(socket.AF_INET,socket.SOCK_STREAM) server1.bind(('0.0.0.0',12345)) server1.listen()
#step 2
while True: conn1, addr1 = server1.accept() print(2) data=conn1.recv(1024) #step 3
conn1.send(b
'HTTP/1.1 200 OK\r\n\r\n') #step 4
conn1.send(b
'hello world') #step 5
conn1.close()
print('ok')

说明:step1 本地建立socket 监听12345端口,step 2 进入循环,带阻塞的等待有会话接入,step 3 当有client和这个端口建立会话,并发送响应的请求后,服务器先回复给client HTTP/1.1 200 OK\r\n\r\nr这个内容,作为和client浏览器确认

step 4 server发送给client浏览器页面的正文,此处可以通过open指令直接读取文件并以byte类型发送给client,step 5 client 接收到到内容后,按照html的规则翻译这段文本,并最终显示在界面。

此处可以做一个拓展,将浏览器发送过来的data保存到文件中,可以用来分析。此处不做深入

 二、熟悉html基本结构

我们来新建一个html的文档

1、html的结构,三个标签及其属性的认识---> doctype/body /head 

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

</body>
</html>

我们将其进行折叠

折叠为两行

标签的理解:在html中每个使用<>符号包裹起来的内容都称之为标签

标签名:在上图中,有两个标签,一个是<!doctype html>的doctype标签,一个是<html lang='en'> <html />的html标签。

标签的属性:每个标签,有标签的名字如html标签,doctype标签,每个标签,有自己的属性写在标签内部,如doctype标签的html,如html标签的lang。

doctype标签的作用:doctype标签其作用为告诉浏览器使用什么样的规则来解析这个html文件。

这个规则有很多,目前最常用的规则标准为html。

html包含一个head和一个body:html标签:一个html文件有且只有一个html标签,我们将html表述为一个人的主干,躯体,那么html标签,就相当于告诉外界,我是一个‘人’。

html标签中的lang属性,告诉浏览器,我这个页面,文件所使用的语言是什么语言。在我们使用一些浏览器时,如谷歌浏览器,我们会看到界面提示,是否翻译此页面,浏览器就是通过这个lang属性来知道页面的语言种类的。

html标签和doctype标签对比,doctype标签前方有一个!此处先不考虑!,最明显的区别为,在使用html标签时,一般的编辑器,如pycharm、notepad,在输入<html>后都会附带出<html />。这里就要说到标签的分类了,

2、标签的分类:

  自闭合标签 :只需要写一个<>就能正常使用的标签

  主动闭合标签:写了一个<标签名>后,还需要写一个< /标签名>,才能正常使用的标签

  此处我们先不考虑有哪些标签时自闭合,有哪些是主动闭合,下文会做归纳。

  现在我们将html标签展开来看看html标签内部有哪些内容。

 我们将html标签展开,可以看到内部嵌套了两个标签,分别是head标签和body标签(此处我们可以认识到多种不同的标签之间还可以互相嵌套的,当然嵌套也要满足规律,如html标签有且只有一个,你不能在其它地方乱嵌套)

一个html文件是一个人 那么这个人有一个头一个身体,即一个html文件中有且仅有一个html标签,这个标签展开有且仅有一个head标签和一个body标签,这个head标签和body标签都是主动闭合的标签。

3、注释的写法

和python不同的是,html文件中注释的写法不使用#号,而是使用<!-- -->的形式

如:

<!--注释的写法-->

以上就是html文件的基本格式,所有的html文件都必须按照这个规律来写。

三、head标签内的标签

head标签 大脑,除了title标签外其他所有的标签都是内在的标签,即title标签能直接从浏览器外观看出来,其他的标签不能直接看出来

现在我们展开head标签来学习head标签内部可以使用的标签

1、meta标签 

                meta可以描述页面编码、刷新、重定向、关键字、描述、ie6兼容性问题。其中编码较为常用,重定向和刷新可以使用location完成,这个location下文会提到。关键字和描述以及ie6使用的比较少,了解即可

<head>
    <meta charset="UTF-8">

 1.1 页面编码

<meta charset=‘utf-8’>  告诉浏览器使用什么编码

1.2 刷新和跳转

<meta http-equiv="Refresh" content="3">
<meta http-equiv="Refresh" content="3;URL=http://www.360.cn">

这种跳转的实现方式比较少使用,在日常工作中又倒计时的跳转通常是使用js来实现。

1.3 关键字与描述

关键字keywords 与描述description 一般提供给搜索引擎用来快速获取网页内容

 

<meta name="keywords" content="刷新,跳转,关键字">
<meta name="description" content="just for learning">

1.4 IE6的兼容性问题

简单说早起IE6有一套自己的规则,导致很多网页在其他的浏览器显示正常,在IE6上显示不正常。随着发展业内有了新的统一标准。

新标准后,还有一部分网站是使用了旧的IE6的规则进行编写,IE8为了解决IE6的情况,推出了兼容模式,如果使用兼容模式,则网页还按照IE6的规则进行打开

目前,IE6已经退出江湖很多年了,现在的网站开发人员都不需要再考虑使用IE6规则的情况。

在那个时期,一些网页回去告知浏览器使用新规则打开网页,则出现了这个指令,现在仅作为了解。

<meta http-equiv="X-UA-Compatible" content="IE=IE9;IE=IE8;" />

 2、title标签

title标签用来表示网页标签页显示的内容

<title>页面刷新与跳转</title>

 3、head标签内的其他标签

3.1 link标签的图标添加

<title>页面刷新与跳转</title>
<link rel="shortcut icon" href="360.ico">

3.2 一些后面会补充的head内的标签的内容

<link /> ->添加css

<style /> ->写css

<script></script> ->写js或jQuery

四、body内的标签

1、各种符号->空格&nbsp;、大于&gt;、小于&lt;、特殊符号

在网页中,我们要显示各种符号或空格的时候,有专门的标记来显示,格式是&+字母+;的形式显示。

为什么要使用这些标志来显示特殊符号呢,做个比方,我要再界面显示一个<html>这样一个内容,如果我在html文件中直接输入<html>那么会被识别为html标签。

so...

这些特殊符号有很多,我们需要记忆的是空格号,大于号,小于号,其他的在使用时查询即可。空格&nbsp;、大于&gt;、小于&lt;

2、<p></p>段落与<br />换行 

p标签,主动闭合标签,用来进行分段操作。可以观察到,行与行之间是有行间距的。

br标签,自闭和标签,用来段落内换行,可以从图上注意到行与行的间距与段落的间距之间的差别。

还需要注意的是,手工输入的回车,并不能在浏览器中被显示。

html中,直接敲击回车可以将代码换行,但是在html被显示的时候,不能讲显示结果换行需要使用<br>也可以写成<br />

<p>
     paragraph 1 this is <br />the paragraph 1.
</p>
<p>
     paragraph 2 this is
     the paragraph 2.
</p>

3、H 标签 

h标签用来加大加粗表示标题。

标题之间也是有间隙的

h标签使用的较少,因为在后面,我们可以使用div或者span来实现这些效果

4、span标签

span标签 主动闭合标签

没有固定的格式,是一个白板,在后面的内容中,我们可以将白板的内容加工成各种我们想要达到的显示效果。(通俗的说就是为所欲为)

5、div标签

与span相同div标签也是白板,在后面的内容中,我们可以对白板为所欲为

6、span与div的对比,标签的两种分类

所有标签分为:
  块级标签(霸占一整行): div(白板),H系列(加大加粗),p标签(段落和段落之间有间距)
  行内标签: span(白板)

->span标签和div标签是可以互相转换的通过display(css内容)。此处先不考虑

span行内标签的展示:

h标签快标签的展示: 

 

 7、input标签与form标签

7.1 常规操作,input与4种type

text、password、button、submit

button和submit按钮上的文字使用value属性来实现

        <span>登录名:</span><br/>
        <input type="text" name="user"><br/>
        <div>email:</div>
        <input type="text" name="email"><br/>
        <span>密码:</span><br/>
        <input type="password" name="pwd"><br/><br />
        <input type="button" value="按钮">&nbsp;&nbsp;
        <input type="submit" value="提交">

实现的效果:

7.2 input内容的提交:form两种提交方式

需要使用form结合input来提交内容

提交有两种方式

方式一:GET 默认也是GET

方式二:POST 

get与post的区别为

get会将需要提交的内容拼接在url中传输

post会将需要提交的内容包含在数据包中传输,不在url中体现。

post和get都是明文,并没有哪个方式安全这个说法。

 

提交内容需要做的三个步骤

步骤一:form标签 form中需要定义action 即将内容提交到的位置。method不填为get,也可以写成method=‘’get‘’ ,post方式则method=‘post’ 

步骤二:输入内容的标签:此处为input标签(上文的p标签,div标签,span标签的内容都不会被提交,上文的所有标签只有input能被提交)

步骤三:按钮,从图片看 button和submit的外观一致,但此处我们只能使用submit来提交我们input的内容。button按钮,目前已有的知识点无法完成提交。

<p>
    <div>默认GET</div>
    <form action="http://localhost:8888/index" >
        <span>登录名:</span><br/>
        <input type="text" name="user" value="alex"><br/>
        <div>email:</div>
        <input type="text" name="email" value="[email protected]"><br/>
        <span>密码:</span><br/>
        <input type="password" name="pwd" value="123"><br/><br />
        <input type="button" value="按钮">&nbsp;&nbsp;
        <input type="submit" value="提交">
    </form>
</p>
<p>
    METHOD='POST'
    <form action="http://localhost:8888/index" method="post">
        <span>登录名:</span><br/>
        <input type="text" name="user"><br/>
        <div>email:</div>
        <input type="text" name="email"><br/>
        <span>密码:</span><br/>
        <input type="password" name="pwd"><br/><br />
        <input type="button" value="按钮">&nbsp;&nbsp;
        <input type="submit" value="提交">
    </form>
</p>

先验证get的效果

提交发现,get动作时

input标签的name属性则为变量名,input框内容为变量值,然后?为分隔符每个变量依次拼接到url中发起请求。

验证post请求

post请求不会将input框内的内容拼接到url中。

type=‘text'或type='password'时,输入框中默认值的输入方法。

value属性

   <input type="text" name="user" value="alex"><br/>
   <input type="password" name="pwd" value="123456"><

 调用百度搜索的方法

我们在使用百度的时候发现,百度的url是通过get的方式拼接搜索关键字进行搜索的

所以我们可以调用这个搜索功能

<p>
    <div>调用百度搜索</div>
    <form action="http://www.baidu.com/s">
        <span>搜索的内容:</span><br/>
        <input type="text" name="wd"><br/>
        <input type="button" value="按钮">&nbsp;&nbsp;
        <input type="submit" value="搜索">
    </form>
</p>

成功完成搜索

8、单选框与多选框

type='radio'、type='checkbox'

    <div>
        <p>请选择性别:</p>
        男:<input type='radio' value='1' name='sexradio'>
        女:<input type='radio' value='2' name='sexradio' checked="checked">
        <!--name相同 互斥 -->
    </div>
        <input type='submit' value='注册'>
        <br />
        <br />
        <br />
        <div>爱好:</div>
        篮球:<input type="checkbox" name="favorite" value="1"/>
        足球:<input type="checkbox" name="favorite" value="2"/>
        乒乓球:<input type="checkbox" name="favorite" value="3" checked="checked"/>
        羽毛球:<input type="checkbox" name="favorite" value="4" checked="checked"/>
        <br />
        <br />
        <br />
        <div>技能:</div>
        做饭:<input type="checkbox" name="skills" value="1"/>
        洗碗:<input type="checkbox" name="skills" value="2"/>
        拖地:<input type="checkbox" name="skills" value="3" checked="checked"/>
        <br />
        <br />

 

说明:

当名字相同时:radioz还能有一个被勾选,作为单选使用

当名字相同时:checkbox可以有多个被勾选,同时name作为变量名,可以有多个变量值被提交。

需要默认值是,添加checked=‘checked’属性即可。

9、文件的上传

type='fiie' 与form 属性 enctype="multipart/form-data"的结合

注意enctype的位置

<form enctype="multipart/form-data">
        <br />
        <div>上传照片 :<input type="file" name="fname"></div>
        <br />
</form>    

效果如下:

10、textarea与select标签

textarea标签

没啥难度 name为变量名 默认值写中间

 <textarea name='t1'>默认值写中间</textarea>

url的情况

select标签 

普通下拉 select option

调整窗口 size

多选  multiple=‘multiple’

分组标签 optgroup lable 

默认选项 selected='selected'

                 <select name="city">
                     <option value="1">北京</option>
                     <option value="2">上海</option>
                     <option value="3">广州</option>
                     <option value="4" selected="selected">深圳</option>
                 </select>
                 <select name="company" size="2">
                     <option value="1">腾讯</option>
                     <option value="2">阿里</option>
                     <option value="3">百度</option>
                     <option value="4" selected="selected">京东</option>
                 </select>
                 <select name="want" size="5" multiple="multiple">
                     <option value="1">北大</option>
                     <option value="2">清华</option>
                     <option value="3">交大</option>
                     <option value="4" selected="selected">复旦</option>
                 </select>
                 <select name="test" >
                     <optgroup label="985大学">
                         <option value="1">北大</option>
                         <option value="2">清华</option>
                         <option value="3">交大</option>
                     </optgroup>
                     <optgroup label="二本大学">
                         <option value="4"></option>
                         <option value="5"></option>
                         <option value="6"></option>
                     </optgroup>
                     <optgroup label="三本大学">
                         <option value="7"></option>
                         <option value="8"></option>
                         <option value="9"></option>
                     </optgroup>
                 </select>

11、a 标签 跳转(2种)与锚点

直接跳转打开 

新页面跳转打开 target=‘_blank’

锚点的使用 href=‘#key’  ->#+id

     <p>
         <a href="http://www.baidu.com" target="_blank">新会话框,打开百度</a>
         <br>
         <a href="http://www.360.cn">直接转到360</a>
     </p>
     <p>
         <a href="#i1">第1章</a> <a href="#i2">第2章</a> <a href="#i3">第3章</a> <a href="#i4">第4章</a>
         <div id='i1' style="height:600px">第一章节</div>
         <div id='i2' style="height:600px">第二章节</div>
         <div id='i3' style="height:600px">第三章节</div>
         <div id='i4' style="height:600px">第四章节</div>
     </p>

效果展示

12、img标签

src、title、alt的使用

结合a标签跳转的使用

    <a href="http://www.baidu.com">
        <img src="tuzi.jpg" style="height:300px;width:300px" title="小兔子" alt="小兔兔">
    </a>

alt在没有加载出图片时,显示名称

13、三种列表(不常用)

ul与li

    <ul>
        <li>A</li>
        <li>B</li>
        <li>C</li>
        <li>D</li>
    </ul>

样式

ol与li

    <ol>
        <li>A</li>
        <li>B</li>
        <li>C</li>
        <li>D</li>
    </ol>

ol样式

dl与dt/dd

    <dl>
        <dt>A</dt>
        <dd>a</dd>
        <dd>b</dd>
        <dt>B</dt>
        <dd>a</dd>
    </dl>

dt为标题 dd为内容

14、table标签 单元格合并

表格

不正规的写法

table内直接写 tr 表示行 td表示列 border='1'显示边框

    <table border="1">
        <tr>
            <td>1-1</td>
            <td>1-2</td>
            <td><a href="http://www.baidu.com">1-3</a></td>
        </tr>
        <tr>
            <td>2-1</td>
            <td>2-2</td>
            <td><a href="http://www.baidu.com">2-3</a></td>
        </tr>
        <tr>
            <td>3-1</td>
            <td>3-2</td>
            <td><a href="http://www.baidu.com">3-3</a></td>
        </tr>
    </table>

正规的写法与合并单元格

table标签内分为thead与tbody ,thead内表示标题,有tr与th、tbody内表示内容有tr与td 合并单元格为tr处 使用rowspan(列),与colspan控制(行)

   <table border="1">
       <thead>
       <tr>
           <th colspan="4">信息统计表</th>
       </tr>
       <tr>
           <th>学年</th>
           <th>学校</th>
           <th>班级</th>
           <th>姓名</th>
       </tr>
       </thead>
       <tbody>
       <tr>
           <td rowspan="6">2018年</td>
           <td>北大</td>
           <td>1班</td>
           <td>tom</td>
       </tr>
       <tr>
           <td>清华</td>
           <td>2班</td>
           <td>李东</td>
       </tr>
       <tr>
           <td>复旦</td>
           <td>1班</td>
           <td>小明</td>
       </tr>
       <tr>
           <td>交大</td>
           <td>2班</td>
           <th>李猛</th> <!-- th加粗-->
       </tr>
       </tbody>
   </table>

 

注意李猛,使用th可以突出显示,一般用在thead内

15、label标签

for中写id号用于和input中的id相关联,点击lable标签即可跳转到输入框

lable与a标签跳转的区别 一个使用for 一个使用href 同时一个为直接的id号,一个为#id

         <label for="i1">用户名:</label>
         <input id='i1' type="test">

16、fieldset(较少使用) 与legend标签的结合(legend中嵌套了一个lable)

     <fieldset>
         <legend><label for="i1">登录框</label></legend>
         <label for="i1">用户名:</label>
         <input id='i1' type="test">
         <br>
         <br>
         <label for="i2">密码:</label>
         <input type="password" id="i2">
     </fieldset>

猜你喜欢

转载自www.cnblogs.com/yomi/p/9221624.html