• 前端 html篇


    web开发本质:

    html是一个标准,规定了大家怎么写网页

    1.浏览器输入网址回车发生了什么事

    1. 浏览器 给服务端 发送了一个消息
    2. 服务端拿到消息
    3. 服务端返回消息
    4. 浏览器展示页面
    sever服务端
    import socket
    ​
    sk = socket.socket()
    ​
    sk.bind(("127.0.0.1", 8080))
    sk.listen(5)
    ​
    while True:
        conn, addr = sk.accept()
        data = conn.recv(8096)
        conn.send(b"HTTP/1.1 200 OK
    
    ")
        conn.send(b"<h1>Hello world!</h1>")
        conn.close()
     

     

    HTML

    浏览器读取有一个file协议

    <!DOCTYPE> 标签

    声明必须是 HTML 文档的第一行,位于 标签之前

    </!doctype>

    声明不是 HTML 标签;它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。

    html是超文本标记型语言,属于cs架构

    <!DOCTYPE html>                #标准规范
    <html lang="en">
    <head>                         #html头
      <meta charset="UTF-8">     #字符编码
      <title>Title</title>       #页面头部显示内容
    </head>
    <body>

    </body>
    </html>


    Doctype标准
      Doctype告诉浏览器使用什么样的html或xhtml规范来解析html文档
    有和无的区别
      BackCompat:标准兼容模式未开启(默认),浏览器按照自己的方式解析渲染界面
      CSS1Compat:标准兼容模式已经开启,浏览器按照W3C的标准解析渲染界面

     

    注意

    一般浏览器默认是utf-8

    对于中文网页需要使用* **<meta charset="utf-8">** *声明编码,否则会出现乱码。有些浏览器会设置 GBK 为默认编码,则你需要设置为* <meta charset="gbk">。

    3.服务端,浏览器,html文件

    1.<!DOCTYPE html>声明为HTML5文档。
    2.<html>、</html>是文档的开始标记和结束的标记。是HTML页面的根元素,在它们之间是文档的头部(head)和主体(body)。
    <html lang='zh-cn'>#中文显示
    3.<head>、</head>定义了HTML文档的开头部分。它们之间的内容不会在浏览器的文档窗口显示。包含了文档的元(meta)数据,配置信息等,是给浏览器看的,你看到的是在body标签里面写的。
    3.1<meta charset='utf-8'>#有中文需要制定编码集
    4.<title>、</title>定义了网页标题,在浏览器标题栏显示。
    5.<body>、</body>之间的文本是可见的网页主体内容。

    html标签

     几个很重要的属性:

     

    • id:定义标签的唯一ID,HTML文档树中唯一,将来页面上的标签有很多,例如:来几个a标签,然后怎么区分这些标签呢,可以铜鼓xxx,id不能重复,将来我们想找这个标签的时候,可以通过这个id的值来找到这个标签

    • class:为html元素定义一个或多个类名(classname)(CSS样式类名) #将css的是再说

    • style:规定元素的行内样式(CSS样式) #简单来个示例:<h1 >xx</h1>你会发现变成红色了,其他的讲css的时候再讲

    <h1><h1>标题1,2,3,4,5,6
    <img src=路径><!--放置图片-->
    <a href="路径">放内容</a>
    标签分类
    1.全闭(双标签)
    2.自闭合标签(单标签)

    常用标签

    head内常用标签

    任何标签都有title属性

    标签意义
    <title></title> 定义网页标题
    <style></style> 定义内部样式表
    <script></script> 定义JS代码或引入外部JS文件
    <link/> 引入外部样式表文件
    <meta/> 定义网页原信息
    <head>   <!-- 都写在head头里 -->
    <style>引用内部样式表</style>
    <title>定义网页标题</title>
    自闭合<link/>#引入外部样式表
    <meta charset='utf-8'>#定义网页原信息 对于浏览器
    </head>
    ----------------------------------
    1.界面编码
    <meta charset="utf-8">
    2.刷新和跳转
    <meta http-equiv="Refresh" content="3;Url=http://www.baidu.com">
    3.关键词
    <meta name="keywords" content="汽车,汽车之家,汽车网,汽车报价"/>
    4.描述
    <meta name="description" content="汽车之家为您提供最新汽车报价,汽车图片,汽车价格大全"/>
    5.link标签
    <!--css-->
    <link rel="stylesheet" type="text/css" href="1.css">
    <!--icon Title前小图标>
    <link rel="shortcut icon" href="1.ico">

    meta标签

     Meta标签介绍:

    • <meta>元素可提供有关页面的元信息(meta-information),针对搜索引擎和更新频度的描述和关键词。
    • <meta>标签位于文档的头部,不包含任何内容。
    • <meta>提供的信息是用户不可见的。
    1. http-equiv属性:

    <!--refersh更新,定时刷新-->
    <!-- 刷新网页两秒钟自动跳转 -->
    1.<meta http-equiv="refresh" content="刷新时间;url=http://www.baidu.com">
    <!-- 告诉IE以最高级模式渲染文档只针对ie -->
    2.<meta http-equiv='content-Type' charset='utf-8'>
     

    2.name属性:

    1. 用于描述网页,与之对应的属性是content,content的内容主要是便于搜索引擎

      <!--关键字-->
      1.<meta name="keyword" content="里面放置内容">

    浏览器内核:

    浏览器    --    内核
        IE           --    trident
           chrome  ---   blink
      火狐       ---   gecko
        Safari     ---   webkit

      PS:「浏览器内核」也就是浏览器所采用的「渲染引擎」,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。渲染引擎是兼容性问题出现的根本原因。


    body标签

    img标签

    <h1></h1>标题 (1-6)
    -----------------------------------------
    px像素
    <img id='22'#默认唯一  src="路径" alt="显示错误是显示描述信息" title='鼠标放置显示的信息' width='宽度px' height='高度px' >
    -------------------------------

    基本标签

    不加标签的纯文字也是可以在body中写的
    <b>加粗</b>
    <i>斜体</i>
    <u>下划线</u>
    <s>删除</s>

    <p>段落标签</p> #独占一个段落

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

    <!--换行-->
    <br>

    <!--水平线--><hr> #就是单独个一个水平线
    每次加上一些内容,别忘了刷新一下页面,才能看到新添加的效果或者内容,其实上面这些标签很少用

     

    div标签(单独一行)

    块级标签(元素)可以包含某些块级标签和内联标签

    div标签用来定义一个块级元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现。

    span标签(在一行)

    内联标签(元素)

    不能包含块级,只能包含内联

    span标签用来定义内联(行内)元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现。

    错误演示 p标签嵌套##注意 p标签不能嵌套
    <p>
        <p></p>
    </p>

    浏览器会误认为标签,有个错误捕获
    浏览器端
    <
    p></p> <p></p> <p></p
     

    a标签

    内联标签

    没有写href属性,百度  显示普通文本
    有属性,但是没有值:百度  #href="" ,写了href属性,但是里面没有值,

    效果:有特殊效果,文字有颜色,有下划线,点击会刷新当前页面
    有属性有值的:

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

    ,跳转到href属性指定的网址

    a超链接标签 ,文字有颜色,有下划线没有写href属性 可以刷新当前页面

    例如   百度

    <a name='top'>xxx</a>
    `````````````````````````
    <a href="#a2">al</a>
    <a href="" id="a2"></a>#id用于 css比较多
    <a href='' name='a2'></a>
        '#a2'跳转页面
    ``````````````````````````````````````
    _blank表示在新标签页中打开目标网页
    _self表示在当前标签页中打开目标网页
    ``````````````````````````````````````
     

    锚点

    锚URL - 指向页面中的锚(href="#top"),博客的目录经常用到,还可以跳转到 name属性为p1的a标签上,
    <a name='top'>xxx</a>
    `````````````````````````
    <a href="#a2">al</a>
    <a href="" id="a2"></a>#id用于 css比较多
    <a href='' name='a2'></a>
        '#a2'跳转页面
    ``````````````````````````````````````
    _blank表示在新标签页中打开目标网页
    _self表示在当前标签页中打开目标网页
    ``````````````````````````````````````

     


    body界面主体
    标签一般分为两种:

    内联标签和块级标签

    内联标签:a,span,select,img等(包含内联标签,不能块级标签)
    块级标签:div,h1,p,form(包含某些块级和内联)
    p标签不能嵌套块级标签 p标签不能包含p标签

    列表

    ul无序号

    <ul type="disc">
     <li>第一项</li>
     <li>第二项</li>
    </ul>

     type属性:

    • disc(实心圆点,默认值)

    • circle(空心圆圈)

    • square(实心方块)

    • none(无样式)

    ol有序号

    <ol type="1" start="2">#start='xx' 从xx开始
     <li>第一项</li>
     <li>第二项</li>
    </ol>

        type属性: start是从数字几开始

    • 1 数字列表,默认值

    • A 大写字母

    • a 小写字母

    • Ⅰ大写罗马

    • ⅰ小写罗马

    标题列表(菜单)

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

    table表格

    表格是一个二维数据空间,一个表格由若干行组成,一个行又有若干单元格组成,单元格里可以包含文字、列表、图案、表单、数字符号、预置文本和其它的表格等内容。
    表格最重要的目的是显示表格类数据。表格类数据是指最适合组织为表格格式(即按行和列组织)的数据。
    表格的基本结构:

     

    <table border='1' cellspacing='表格线的间距',cellpading='字体与表格的间距'>#表格内部格式
      <thead> #标题部分#表头
      <tr> #一行
        <th>序号</th> #一个单元格
        <th>姓名</th>
        <th>爱好</th>
      </tr>
      </thead>
      <tbody> #内容部分
      <tr> #一行
        <td>1</td> #一个单元格
        <td>Egon</td>
        <td>杠娘</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Yuan</td>
        <td>日天</td>
      </tr>
      </tbody>
    </table>

    属性:

    • border: 表格边框.

    • cellpadding: 内边距 (内边框和内容的距离)

    • cellspacing: 外边距.(内外边框的距离)

    • 像素 百分比.(最好通过css来设置长宽)

    • rowspan: 单元格竖跨多少行

    • colspan: 单元格横跨多少列(即合并单元格)

    效果

        

    上面这几个属性基本上用不到。

      其实标签又可以分为两类:1、展示给用户看的  2、获取用户输入内容的标签,刚才前面的这些标签都是展示内容用的,下面要学的标签是捕获用户输入的标签。基本上HTML中常用的就这些标签

    form表单、

    提交要放在form表单里面,不写进去没有失去提交功能

    注意:

    form表单提交数据的时候,必须有

    1.submit按钮       

    2.<button></button>

     

    <form action='127.0.0.1' method='post'><!--默认get,写post不是明文传输-->
        里面书写的内容
        <input type=submit>
    </form>

    功能:

    表单用于向服务器传输数据,从而实现用户与Web服务器的交互

    表单能够包含input系列标签,比如文本字段、复选框、单选框、提交按钮等等。

    表单还可以包含textarea、select、fieldset和 label标签。

    get用于获取关键字

    表单属性

    属性描述
    accept-charset 规定在被提交表单中使用的字符集(默认:页面字符集)。
    action 规定向何处提交表单的地址(URL)(提交页面)。
    autocomplete 规定浏览器应该自动完成表单(默认:开启)。
    enctype 规定被提交数据的编码(默认:url-encoded)。
    method 规定在提交表单时所用的 HTTP 方法(默认:GET)。
    name 规定识别表单的名称(对于 DOM 使用:document.forms.name)。
    novalidate 规定浏览器不验证表单。
    target 规定 action 属性中地址的目标(默认:_self)。

    补充

    multipart/form-data是用来制定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或是是mp3等等。
    text/plain是纯文本传输的意思,在发邮件的时候要设置这种编码类型,否则会出现接收时编码混乱的问题。网络上经常拿text/plain和 text/html做比较,其实这两个很好区分,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上。①和③都不能用于上传文件,只有multipart/form-data才能完整的传递文件数据
    View Code

    转载https://www.cnblogs.com/YOUCAN/archive/2012/12/02/2798227.html

      表单元素

        基本概念:
        HTML表单是HTML元素中较为复杂的部分,表单往往和脚本、动态页面、数据处理等功能相结合,因此它是制作动态网站很重要的内容。
        表单一般用来收集用户的输入信息
        表单工作原理:
        访问者在浏览有表单的网页时,可填写必需的信息,然后按某个按钮提交。这些信息通过Internet传送到服务器上。
        服务器上专门的程序对这些数据进行处理,如果有错误会返回错误信息,并要求纠正错误。当数据完整无误后,服务器反馈一个输入完成的信息。

        

     

        

        点击提交按钮,input中type=submit的那个按钮,然后就会将form表单中所有用户输入的内容或者选择的内容({name属性:值,})都发给服务端(以我们自己写的那个socket举例,打印一下接收的内容),但是所有的输入标签必须有一个叫做name的属性。

        

        发现跳到这个页面了:看url的内容,有了我们输入的内容,并且是给你组合起来的,name属性值和你输入的值组合到一起了,通过&符号分隔,并且在路径那里加了个问号

        

        打印一下socket接收的消息,你就发现已经接受到这些数据了

        

        

          

    让用户选择的,必须指定一个value值,要不然后端接收不到内容,用户自己填写的标签,不需要指定value值

          然后再点击提交,后端打印一下接收的数据:

          

          但是这样并不好,因为url中显示了你的信息,并且如果内容很多的话,你的地址栏不能够输入那么长的内容,为什么会默认拼接到url里面呢,因为form表单默认是get请求提交内容,我们可以改为post,来看看:post会把所有你提交的信息封装到一个消息体里面,在浏览器上就看不到了,对于小白来说,看着安全一些。

          

          

          点击提交就跳到这个网址了:

          

          在看后端打印的内容:

          

          你会发现一个post请求:

          把内容往后拉,就能看到咱们提交的数据了

          

    那么你看,你的浏览器再你点击提交的时候,获取了你所输入的内容,然后通过网络提交给你的服务端代码程序了。

    然后我们后端通过提交过来的数据,来做某些事情,该验证的验证,该保存的保存

    所以记住form表单里面有两个属性:action控制往哪里提交数据、method控制用什么方式提交。

    还有一个文件input:因为我们刚才说,数据是通过组成一个字典发给后端的,但是文件怎么做键值对啊,做不了,所以需要通过二进制流的形式一点一点的传送给后端,就是这个multipart搞的事情,有个了解就行了,别纠结,到了django我们在细说。

          

      下面这个django的示例:

    from django.conf.urls import url
    from django.shortcuts import HttpResponse


    def upload(request):
      print("request.GET:", request.GET)
      print("request.POST:", request.POST)

      if request.FILES:
          filename = request.FILES["file"].name
          with open(filename, 'wb') as f:
              for chunk in request.FILES['file'].chunks():
                  f.write(chunk)
              return HttpResponse('上传成功')
      return HttpResponse("收到了!")

    urlpatterns = [
      url(r'^upload/', upload),
    ]

    Django接收上传文件代码

    input(都试一下)

    文本输入框必须要写name属性

    文本选择框要写name和value属性

    <input type='里面放置属性'> 元素会根据不同的 type 属性,变化为多种形态。

    type属性值表现形式对应代码
    text 单行输入文本 <input type=text" />
    password 密码输入框(不显示明文) <input type="password"  />
    date 日期输入框 <input type="date" />
    checkbox 复选框 <input type="checkbox" checked="checked" name='x' />
    radio 单选框 <input type="radio" name='x' values='里面放置提交的值'/>
    submit 提交按钮 <input type="submit" value="提交" /> #发送浏览器上输入标签中的内容,配合form表单使用,页面会刷新
    reset 重置按钮 <input type="reset" value="重置"  />  #页面不会刷新,将所有输入的内容清空
    button 普通按钮 <input type="button" value="普通按钮"  />
    hidden 隐藏输入框 <input type="hidden"  />
    file 上传文件 <input type="file"  /> (等学了form表单之后再学这个)

    属性说明:

    • name:表单提交时的“键”(文本框的名字),注意和id的区别

    • value:表单提交时对应项的值

      • type="button", "reset", "submit"时,为按钮上显示的文本的内容

      • type="text","password","hidden"时,为输入框的初始值

      • type="checkbox", "radio", "file",为输入相关联的值

    • checked:radio和checkbox默认被选中的项

    • readonly:text和password设置只读

    • disabled把选项报废:所有input均适用

    • selected='selected'设置select标签下面的option标签默认选中,<option>selected>

    select标签

    <form action="" method="post">
      <select name="city" id="city">
          <optgroup label='北京'>
              <option value="">桑河</option>
        <option value="1">北京</option>
        <option selected="selected" value="2">上海</option> #默认选中,当属性和值相同时,可以简写一个selected就行了
        <option value="3">广州</option>
        <option value="4">深圳</option>
      </select>
    </form>

      属性说明:

    • multiple:布尔属性,设置后为多选下拉框,否则默认单选

    • disabled:禁用

    • selected:默认选中该项

    • value:定义提交时的选项值,提交数据的值

    • id:唯一值方便css查找

    • <optgroup label='北京'>进行分组

    label标签

       定义:<label> 标签为 input 元素定义标注(标记)。如果不用这个label给input标签一个标记,input会变黄,不影响使用,只是提示你,别忘了给用户一些提示,也就是这个label标签。
        说明:

    1. label 元素不会向用户呈现任何特殊效果。但是点击label标签里面的文本,那么和他关联的input标签就获得了光标,让你输入内容

    2.<label> 标签的 for 属性值应当与相关元素的 id 属性值相同。

    <form action="">
      <label for="username">用户名</label>  #for和input的id属性一样,就关联在一起了
      <input type="text" id="username" name="username">
    </form>

        

    textarea多行文本

    <textarea name="memo" id="memo" cols="30" rows="10">
    默认内容
    </textarea>

    属性说明:

    • name:名称

    • rows:行数  #相当于文本框高度设置

    • cols:列数   #相当于文本框长度设置

    • disabled:禁用

  • 相关阅读:
    spring_150807_hibernate_transaction_annotation
    快速排序算法
    组合数递推算法
    HDU 4832 Chess(DP+组合数)
    HDU 2602 Bone Collector (01背包)
    HDU 1597 find the nth digit (二分查找)
    HDU1163 Eddy's digital Roots(九余数定理)
    HDU1031 Design T-Shirt (二级排序)
    HDU1719 Friend (数学推导)
    HDU1720 A+B Coming (16进制加法)
  • 原文地址:https://www.cnblogs.com/strawberry-1/p/11518739.html
Copyright © 2020-2023  润新知