zoukankan      html  css  js  c++  java
  • 前端篇之html认识

    一、html标签概述


     1.1 引入

      url:协议+域名+路径,是一个请求发给服务器

            服务器
                #__author:  Administrator
                #date:  2016/10/28
    
    
    
                import socket
    
                def main():
                    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    sock.bind(('localhost',8089))
                    sock.listen(5)
    
                    while True:
                        connection, address = sock.accept()
                        buf = connection.recv(1024)
                        print(buf.decode('utf8'))
    
                        #connection.sendall(bytes("HTTP/1.1 201 OK
    
    ","utf8"))
                        #connection.sendall(byte(<h1>Hello</h1>))---写到文件里如下hello.html
                        with open('hello.html','rb') as f:
                            data=f.read()
                        connection.sendall(data)
    
    
                        connection.close()
    
                if __name__ == '__main__':
    
                    main()
                 用浏览器访问能看服发的内容

    1.2 html语言,标签语言

    1.html css js区别:html标签元素,css会布局与色彩  js是动态展示

    2.html元素,只有浏览器认识这些标签,浏览器会解析它

    <!DOCTYPE html>---固定格式
    <html lang="en">
    <head>
        <meta charset="UTF-8">//编码格式
        <!--<meta http-equiv="Refresh" content="2;URL=https://www.baidu.com">-->
        <!--<meta http-equiv="Refresh" content="2">-->
        <title>Yuan</title>
        <link rel="icon" href="girl.ico">
    
    </head>----与body是平行的
    <body>
            <!--hello yuan-->
    
            <!--<h1>yuan</h1>-->
            <!--<h2>yuan</h2>-->
            <!--<h3>yuan</h3>-->
            <!--<h4>yuan</h4>-->
            <!--<h5>yuan</h5>-->
            <!--<h6>yuan</h6>-->
    
    窗前明月光<br/>
    我叫郭勇昌
    
    
    <p>窗前明月光</p><p>我叫郭勇昌</p>
    </body>
    </html>
    元素分层
                           根元素html
                head元素               body元素
            meta    title               div   p  等   

    3.html之head及body标签

    (1)概述:

            head:头标签,浏览器看不到,一些解析相关的内容

            body:是展示出来的内容

                     非自闭合标签

                      自闭合标签

             标签属性:加在标签<>里

                      <h1 id="xiaohu">yuan</h1>-----id是标签身份证,区分多个h1

    (2)标签介绍

      

        嵌套规则:块级的能嵌套内联标签,但内联标签不能嵌套块级的
                  某些特殊块级的不能嵌套如p h
                  
        <!DOCTYPE html>--用什么规则展示标签内容,是一个标准,浏览器默认是怪异模式,加上它后变为标准模式
        <html>
      1.<head>内标签
          <meta>---自闭合标签,只有一个,属性只有二个name,http-equiv
            <meta name="keywords" content="开发者,程序员">---搜索引擎搜的内容命中就会展示他的内容            
            <meta name="description" content="是一个面向开发者">---是搜索出来展示的描述信息
            <meta http-equiv="Refresh" content="2;URL=https://www.baidu.com">
                                     ---与请求有关,2s后跳转到后面的URL上,若不加URL就2s刷新
            <meta http-equiv="content-Type" charset=UTF8">
            <meta http-equiv='X-UA-Compatible' content="IE-EmulateIE7"/>----兼容IE7的渲染规则,想支持几改为几
         <titil>---非自闭合 
             <titil></titil>
         <link>---自闭合标签
             <link rel='icon' href="//www.id.com/favicon.ico">---打开网页的显示的图片,图片是URL地址
         <script>---引入css内容,<link>可引入js
         </head>
      2.<body>
            所有标签分为块级标签与内联标签
            (1)<h1>yuan</h1>--块级标签 
               <h2>yuan</h2>----一直到h6,会一级级减小
            (2)<p></p>--块级标签,换行与隔行过程,默认不加标签时不认换行,
                       不在一行会连一起中间空个格,<p>有二个作用,换行及隔行
            (3)<br>    :换行内联标签
            (4)<hr>:加个水平线内联标签                    
            (5)**<div></div> ---块级的,没有功能,没有特殊格式化,这个什么没做主要用与css渲染
               <div style="color:rebeccapurple">hello world</div>--内嵌入css代码
                css嵌入有四种方法:
                    1.标签内嵌  
                    2.<head>里的<script>
                    3.<body>里单独的标签<style></style>
                        <div>hello world</div>
                        <style>
                             div{---是块级标签,它定义的表示一整行都是它的,
                                    对他的处理表示对一整行的处理,而非文本本身大小的处理
                                color:#cc3399;
                                background-color:yellow;---整行背景变色
                             }
                        </style>
           
            (6)<span></span>---同div,没任何格式化,与div区别,它内联标签
                <span>hello span</span>
                <style>
                     span{
                        color:#cc3399;
                        background-color:yellow;---标签里的文本背景变
                     }
                </style>                         
         
            (7)<b></b>--给字体加粗--内联标签
            (8)<em>变成斜体</en>--内联标签
            (9)<strike>去除</strike>----内联标签,现在不使用改为<del></del>
            (10)2<sup>3</sup>--2的3次方,上角标
               <sub></sub>--下角标
            (11)&nbsp;--特殊符号表一个空格
            (12)<img src="路径" width="200px" heigh="200px" alt="失败" title=""></img>
                 //图片,内联标签
                   alt属性表加载图片失败后返回的值
                   title表鼠标入图片显示的文本
                   当有img时,会专开一个线程加载图片,其它线程可继续向下执行代码
            (13)<a href="http://www.baidu.com">百度</a>---超链接,有二个功能,一个是链接,一个是锚(索引查找)
                <a href="http://www.baidu.com" target="_blank">百度</a>
                   href放其它标签里不会跳只有a才行
                   当href为#是不跑但会刷新 
                锚作用:
                    <a href="#div1">第一章</a>---追踪哪个标签,身份证号前加#
                    <a href="#div2">第二章</a>---直接跳到下面的二章内容
                    <div id="div2">第一章</div>
                    <div id="div2">第二章</div>
                    <style>
                        #div1{----按身份证找到div,前加#后跟身份证号
                             color:#cc3399;
                        }f
                        #div2{
                            heigt=200px--css代码
                        }                                        
                    </style>
                    
            (14)列表标签
               <div>
               <ul>--不排序列表,都是块级标签
                   <li><img></img></li>---固定用这个li引入内容,用于左边目录结构 
                   <li>1</li>
                   <li>1</li>//想它们只重叠放一个位置上,
                      整体放在div里,把div居中
                          margin: 0 auth; 
                          position:relative对li里的图片做处理,三个都以div做相对位置处理,
                          position:absolute; 
                          top:0 
                          left:0
               </ul>---结果就是前加点有二行1    
    
               
               <ol>---排序列表
                   <li>1</li>
                   <li>1</li>
                   <li>1</li>                           
               </ol>---结果前有序号,有序号的二行    
    
               
               <dl>
                  <dt>第一章</dt>---标题
                  <dd>内容<dd>---内容 
                  <dt>第二章</dt>
                  <dd>内容<dd>
               </dl>
               
            (15)table表
                 <table border="1" cellspacing cellpadding>:<tr>:<td><th>  合并单元格rowspan colspan
                     <thead>--显示字段框
                        <tr>--表行数据
                        <th>--表字段值(属性:colspan="#"行合并几格)
                     <tbody>--显示行数据格
                         <tr>--表行数据
                         <td>--表行数据 (属性:rowspan="#"列合并几格)
            (16)form表单,与服务交互使用的,表单用于向服务器传输数据内联标签
                表单能够包含input,比如文本字段、单选程,提交按钮等,还可以包含textored select fieldset label元素                        
                <form action="127.0.0.1:8090/index" method="get/post" enctype="multipart/form-data">
                         input里的内容以method的方式提交active里url里,enctype发送文件可一段段发送
                         要提交文件必须加enctype,obj = request.FILES.get('fafafa'),
                         后台要一段段取obj.chunks()再放入文件里,obj是文件对象
                    <p>姓名:<input type="text" name="username"></p>
                                 input自闭合标签,结果是一个输入框,
                                 这时发给服务器的内容是一个字典username:输入到框的内容
                    <p>密码:<input type="password" name="username"></p>
                                 结果到这只能输入信息无法提交到服务器?
                                 这时输密码会看不到明文,见下:                                
                    <p><input type="submit" value="press"></p>
                       页面上会有个提交按钮,能把写的值提交,加上value时提交按钮名变为这个值,
                       如何提交到服务器?见form属性,提交到form的active里
                    <p><input type="button" value="press"></p>
                       也是按钮,但点击后不提交,只有配合js使用才有意义,一般用于绑定函数
                    <p>篮球<input type="checkbox" name="hobby" value="1"></p>
                           复选框,有个小方框,可以点中选择,可多选
                    <p><input type="checkbox" name="hobby" value="2"></p>
                           为什么是复选,因name虽然一样但发的value不同                                 
                    <p><input type="radio" name="sex" value="1"></p>
                           单选框,如男女只能选一个,是一个圆圈,radio是互次的
                    <p><input type="radio" name="sex" value="2"></p>
                           只有当name一样里只能选一个,name属性是给服务器看的,
                           只能给一个值,所以name是定义键值的
                    <p><input type="file" name="alex"></p>    
                        结果出现一个上传文件的按钮,点击可以上传文件
                    <p><input type="reset" value="重置"></p>
                         重置按钮,把输的内容都清空
                    <p>出生地
                        <select name="city" multiple size="2">
                              multiple加它表可选多个值,size最多展示几个
                             <optgroup lable="河北省">
                             <option value="beijing">廊坊2</option>
                             <option value="beijing">廊坊2</option>
                             </optgroup>----可看到分组,河北下有多个地方
                             
                             <option value="beijing">北京</option>
                             <option value="tianjing">天津</option>--发给服务端的是city:beijing这样的情况
                             
                        </select></p>---会出现一个框下拉选择北京或天津也会上传给服务端交互
                         注:checkbox与radio需要定name与value做字典传服务,其它的定义name就行
                    <textarea rows="10" cols="10">自我简介</textarea>----10行10列
                </form>                            
                实例:服务器如何与前端交互,web框架
                前端:
                index.html
                   ....
                   <form action="ip+port/xiao/" method="get">
                    ...
                   </form>    
                后端:               
                urls.py
                  from django.conf.urls import url
                  form django.contrib import admin
                  form app01 import views                                
                    urlpatterns = {
                            url(r'^admin/',admin.site.urls),
                            url(r'^xiao',views.xiao)--IP+port+xiao在浏览器上访问就可以访问到index.html的内容
                    }
                views.py
                  form django.shortcuts import render
                    def xiao(req):--rep是前端提交的数据
                        print(req.GET)
                            用get提交的数据,get发数据,点提交时url变为
                            ip+port+xiao&username=dan&password=123&hobby=football
                            把url与参数一起传到后端,用url把数据发过来
                        print(req.POST)
                            用post提交的数据,会把参数放请求体里发送后端,
                            F12的network里的form Data里把字典数据发到服务端
                        print(req.FIIES)
                            提交的文件等封装在这个对象里,req.FLIES={"alex":"文件"}
                        for item in req.FILES:---item是键alex
                            obj=req.FILES.get(item)----会取到文件,若没有也不会报错
                            filename=obj.name-----取文件名字
                            f=open(filename,'w')
                            for line in obj.chucks:---把文件一段段上传
                                f.write(line)
                            
                        return render(req,"index.html")
                               服务端运行后在浏览器上访问出现表单,里面的表单发给后端要如何处理?
                               这里发的内容会发给ip+port+xiao给它后把字典数会交给views.xiao函数去处理,
                               每一个url都有对应的函数去处理                                    
         </body>

    1.3 http协议

          1.http之请求协议
            无状态协议,请求一次后页面返回后就断开了,不是长链接,
            每点一次请求一次,每次请求就是新的,服务不会记住上次连接信息,
            但当有用户登录时有记忆不是通过http来记的而用的是authkey sesion来记住登录信息及购物记录信息
            
          请求协议F12:---浏览器封装一定格式发给服务器
            eg:浏览器会把url:https://www.baidu.com封装成一定格式发给服务器
                headers(包括请求头及响应头)
                        Generl
                        Response Headers:响应头
                        Request Headers:请求头    
                        Request payload:请求体(post)                                            
                preview:请求返回的内容
                response
                cookies
                timing
          请求协议:
                请求首行:// 请求方式  请求路径  协议与版本   
                    GET /index.html HTTP/1.1
                请求头信息:// 请求头名称:请求头内容,
                    key:value    eg:host:localhost
                空行; // 用来与请求体分隔开
                请求体。// GET没有请求体,只有POST有请求体。
                        发给服务器真正的数据,get是通过url发过去的,值通过请求头给的    
                    GET /index.html HTTP/1.1
                    Host:localhost
                    注:什么时候用到get:
                        1.一般输入一个URL就是get提交 
                        2.超链接用GET 
                        3.form默认是get请求
                GET请求特性:请求头里的键值对
                    Accept
                    accept-encoding:压缩
                    accept-language
                    cache-coatrol:是否有缓存
                    user-agent:告诉服务器浏览器系统版本等
                    Aaccept-charset:utf-8,告诉服务器用什么编码
                    connection:连接成功后不会马上断,默认3s再断有个延时
                    cookile:第一次登录后退出,想再次登录服务器就不认识了还要再登录,
                             就出现了cookile,这个cookile是浏览器第一次登录时服务器发给浏览器
                             的一个字符串存在浏览器的cookile里,再次去访问这个服务器时把
                             这个cookile发给服务器验证,每个用户的cookile是不同的,
                             这就是上次服务器返回带给服的
                POST请求特性:
                    1.数据不会出现在地址栏中
                    2.数据的大小没有上限
                    3.有请求体(在Request Payload里传)
                    4.请求体中如果存在中文会使用URL编码!
                      username=%E5%BC%E2%EB&password=123
                Referer:超链接的上一个网址
                keyword=hello:请求体长度
                Content-Type:opplication/x-www-form-urlencoded:放在请求体里的,
                            表单的数据类型,会使用Url格式编码数据,
                            url编码数据都是以%为前缀,后跟二位16进制    
                    <meta http-equiv="content-Type" charset=UTF8">--meta就是改请求头里的内容                        
         2.http之响应协议,服务器给浏览器发的内容
            响应首行
            响应头信息
            空行
            响应体
    
    
            HTTP/1.1 200OK
            Server:服务器版本信息
            content-type:响应体使用的编码UTF8
            content-length:响应体长度
            set-cookie:响应给客户端的cookie
            状态码:
                200
                404:资源找不到
                500:服务器内部出错
                302:重定向
                304:第一次浏请求服,服务会响应200并发一个index.html页面的最后修改时间,
                     浏览器就会缓存这个页面,当浏再次请求服,比对一个这个页面的修改时间
                     当一样里服就返回304,浏就在自己的缓存里找    

      

  • 相关阅读:
    忘了SA密码的SQL SERVER
    关于VC中的错误处理
    编译filezilla
    001.第一天|第二天
    JVM学习之类加载
    JAVA学习之HashCode
    JAVA学习之泛型
    JAVA学习之动态代理
    solr学习之域的管理与中文分析器配置
    solr 学习之简介及安装
  • 原文地址:https://www.cnblogs.com/Dana-xiong/p/14318108.html
Copyright © 2011-2022 走看看