Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 精品女同一区二区三区在线观看,欧洲免费vps一级毛片,久草草在线观看永无域名

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          HTML5的表單設計

          用過Delphi的程序員,對Form這個詞應該比較熟悉。在Delphi中,Form被翻譯為“窗體、窗口”,作用是:為用戶提供界面,供用戶輸入信息,向用戶展示處理結果。

          HTML5中也有Form,功能與Delphi中的Form差不多,用于接收用戶輸入,和服務器進行交互。不過HTML5中的Form,中文一般譯為“表單”。

          1、Web前端與Web后端的交互

          Web前端,指瀏覽器上展示的HTML文件,以及HTML文件使用的CSS文件及JavaScript腳本。

          Web后端,指運行在服務器上的,為Web前端提供服務的軟件,Web后端也常常被稱為Web服務器。

          在HTML5中,Web前端與Web后端交互的流程一般如下:

          (1)Web前端向Web后端發起HTTP請求;

          (2)Web后端收到HTTP請求后,進行業務處理;

          (3)Web后端向Web前端返回HTTP響應。

          到目前為止,我們在HTML5中碰到的Web前端發起HTTP請求的方式有兩種:

          第1種:HTML頁面通過<a>元素向用戶提供超級鏈接,用戶點擊該鏈接時,會向服務器發起請求;

          第2種:HTML頁面通過表單為用戶提供輸入界面,用戶提交表單時,會向服務器發起請求。

          2、GET請求和POST請求

          HTTP請求有八種,對Web前端開發者來說,最常用的是GET請求和POST請求。

          GET請求:向Web后端請求指定的頁面;GET請求攜帶的數據,以URL參數的形式提供;

          POST請求:向Web后端提交數據,請求Web后端對數據進行處理;POST請求攜帶的數據,在請求消息體中提供。

          在HTML5中,用戶點擊鏈接地址,Web前端向后端發起GET請求;

          在HTML5中,用戶提交表單,Web前端可以向后端發起GET請求,也可以發起POST請求。

          說明:由于目前沒有和后端服務器對接,為了便于對表單設計進行展示,下面的例子HTML文檔,都是用GET請求來提交數據。

          3、表單的主要元素

          <form>元素:表示表單;

          <input>元素:表單中的輸入控件,輸入控件可以是文本框、單選框、復選框、按鈕等等;

          <label>元素:表單中的標簽控件;

          <button>元素:表單中的按鈕控件;

          <select>與<option>元素:用于實現列表框和下拉菜單;

          <textarea>元素:多行文本控件。

          4、表單提交文本框的輸入

          下面是一個可以提交文本框輸入的HTML文檔:

          <!DOCTYPE html>
          <html>
          <head>
          <title>form001</title>
          <meta charset="utf-8" />
          </head>
          <body>
          <form action="process.html" method="get">
          <label>請輸入您的姓名:</label>
          <input type="text" name="name" />
          <br/>
          <input type="submit"/>
          </form>
          </body>
          </html>

          在瀏覽器中打開該HTML文檔時,展示效果如下:

          我們可以在文本框中輸入信息,例如輸入tom:

          當我們點擊“提交”按鈕后,瀏覽器顯示信息如下;

          可以看到,數據被提交給process.html頁面,并且附帶了一個參數name,且值為我們輸入的tom。

          5、表單提交用戶對單選框的選擇

          下面是一個可以提交單選框被選信息的HTML文檔:

          <!DOCTYPE html>
          <html>
          <head>
          <title>form002</title>
          <meta charset="utf-8" />
          </head>
          <body>
          <form action="process.html" method="get">
          <label>性別:</label>
          <br/>
          男:<input type="radio" name="gender" value="male" />
          女:<input type="radio" name="gender" value="female" />
          <br/><br/>
          <label>國籍:</label>
          <br/>
          中國:<input type="radio" name="nationality" value="Chinese" /> <br/>
          美國:<input type="radio" name="nationality" value="American" /> <br/>
          日本:<input type="radio" name="nationality" value="Japanese" /> <br/>
          英國:<input type="radio" name="nationality" value="English" /> <br/>
          其它:<input type="radio" name="nationality" value="Other" /> <br/>
          <br/>
          <input type="submit"/>
          </form>
          </body>
          </html>

          在瀏覽器中打開該HTML文檔時,顯示效果如下:

          我們可以選擇性別和國籍,例如我們選擇“男”和“中國”:

          當我們點擊“提交”按鈕后,瀏覽器顯示信息如下:

          可以看到,我們選擇的信息被提交給process.html文件,并且附帶了gender參數的值為male,nationality參數的值為Chinese。

          6、表單提交用戶對復選框的選擇

          下面是一個可以提交復選框被選信息的HTML文檔;

          <!DOCTYPE html>
          <html>
          <head>
          <title>form003</title>
          <meta charset="utf-8" />
          </head>
          <body>
          <form action="process.html" method="get">
          <label>請選擇您的業余愛好:</label>
          <br/>
          美術:<input type="checkbox" name="hobby" value="Art" /> <br/>
          足球:<input type="checkbox" name="hobby" value="Football" /> <br/>
          唱歌:<input type="checkbox" name="hobby" value="Singing" /> <br/>
          廚藝:<input type="checkbox" name="hobby" value="Cook" /> <br/>
          其它:<input type="checkbox" name="hobby" value="Other" /> <br/>
          <br/>
          <input type="submit"/>
          </form>
          </body>
          </html>

          在瀏覽器中打開該HTML文檔時,顯示效果如下:

          我們可以選擇自己的業余愛好,例如我們選擇足球、唱歌、廚藝:

          當我們點擊“提交”按鈕后,瀏覽器顯示信息如下:

          可以看到,我們選擇的信息被提交給process.html文件,并且附帶了三個hobby參數,其值分別為Football,Singing和Cook。

          7、表單提交用戶對下拉菜單的選擇

          下面是一個可以提交下拉菜單被選信息的HTML文檔;

          <!DOCTYPE html>
          <html>
          <head>
          <title>form004</title>
          <meta charset="utf-8" />
          </head>
          <body>
          <form action="process.html" method="get">
          <label>請選擇您的學歷:</label>
          <br/>
          <select name="education">
          <option value="primary_school">小學</option>
          <option value="junior_high_school">初中</option>
          <option value="senior_high_school">高中</option>
          <option value="college">大學</option>
          </select>
          <br/><br/>
          <label>請選擇您的興趣愛好:</label>
          <br/>
          <select name="hobby" multiple="true">
          <option value="Art">美術</option>
          <option value="Football">足球</option>
          <option value="Singing">唱歌</option>
          <option value="Cook">廚藝</option>
          <option value="Other">其它</option>
          </select>
          <br/><br/>
          <input type="submit"/>
          </form>
          </body>
          </html>

          在瀏覽器中打開該HTML文檔時,顯示效果如下:

          我們可以單選我們的學歷,也可以通過按下Shift+鼠標鍵多選我們的興趣。例如我們選擇“初中”學歷,選擇“美術”和“廚藝”兩項愛好:

          當我們點擊“提交”按鈕后,瀏覽器顯示信息如下:

          可以看到,我們選擇的信息被提交給process.html文件,并且附帶了education參數和兩個hobby參數,education的值為junior_high_school,hobby的值為Art和Cook。

          上面列舉了幾種控件的HTML5表單設計方法,其它的控件也大概差不多,把多個控件組合在同一個<form>元素中的方法也是相同的,這里就不再贅述了。

          .表格的制作

          1、表格元素–<table>

          表格中的行–<tr>

          表格中的列–<td>

          表格中的表頭–【居中/加粗】

          table標記的邊框–border

          table標記的寬度–width

          table標記的高度–height

          table標記的水平對齊方式–align

          table標記的表格背景色–bgcolor

          table標記的表格邊框色–bordercolor

          table標記的表格中的內容與邊框之間的距離–cellpadding

          table標記的表格中的邊框與邊框之間的距離–cellspacing【默認是1px】

          tr標記的align屬性–設置當前行的水平對齊方式

          tr標記的bgcolor屬性–設置當前行的背景色

          tr標記的valign屬性–設置當前行的垂直對齊方式【top/middle/bottom】

          td標記的align屬性–設置當前列的水平對齊方式

          td標記的bgcolor屬性–設置當前列的背景色

          td標記的valign屬性–設置當前列的垂直對齊方式【top/middle/bottom】

          合并單元格

          水平方向合并單元格–跨列—colspan

          • 垂直方向合并單元格–跨行—rowspan
          • 刪除多余的單元格*

          以下是計算器的控制面板代碼

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>計算器的控制面板</title>

          </head>

          <body>

          <table border="1" cellspacing="10px" cellpadding="20px"

          align="center" bgcolor="aliceblue">

          <tr><td colspan="5" height="40px" align="right"><font size="7"><b>0</b></font></td></tr>

          <tr align="center">

          <td>MC</td>

          <td>MR</td>

          <td>MS</td>

          <td>M+</td>

          <td>M-</td>

          </tr>

          <tr align="center">

          <td>&lt;-</td>

          <td>CE</td>

          <td>C</td>

          <td>+/-</td>

          <td>√</td>

          </tr>

          <tr align="center">

          <td>7</td>

          <td>8</td>

          <td>9</td>

          <td>/</td>

          <td>%</td>

          </tr>

          <tr align="center">

          <td>4</td>

          <td>5</td>

          <td>6</td>

          <td>*</td>

          <td>1/x</td>

          </tr>

          <tr align="center">

          <td>1</td>

          <td>2</td>

          <td>3</td>

          <td>-</td>

          <td rowspan="2" bgcolor="yellow">=

          </td>

          </tr>

          <tr align="center">

          <td colspan="2">0</td>

          <td>.</td>

          <td>+</td>

          </tr>

          </table>

          </body>

          </html>

          看成品:

          2. 列表元素

          2.1 有序列表

          ol—有序列表

          li—列表中的每一項【條目】

          默認的標志是有順序的數字

          我們可以通過ol的type屬性來修改標志

          1–有順序的數字

          a–有順序的小寫字母

          A–有順序的大寫字母

          i–有順序的小寫羅馬數字

          I–有順序的大寫羅馬數字

          start屬性設置書順序的開始值

          2.2 無序列表

          ul—無序列表

          li—列表中的每一項【條目】

          默認的標志是實心點

          我們可以通過ul的type屬性來修改標志

          circle–圓形【?!?/p>

          disc----實心點[默認]

          square–正方形

          none–沒有標志

          2.3 自定義列表

          dl—自定義列表

          dt—自定義列表的頭

          dd—子項目

          以下是有序,無序,和自定義列表

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>列表</title>

          </head>

          <body>

          <ul type="none">

          <li>無序列表</li>

          <li>無序列表</li>

          <li>無序列表</li>

          </ul>

          <ol type="A">

          <li>有序列表</li>

          <li>有序列表</li>

          <li>有序列表</li>

          </ol>

          <dl>

          <dt>自定義列表</dt>

          <dt>自定義列表</dt>

          <dt>自定義列表</dt>

          </dl>

          </body>

          </html>

          3. 表單<form>

          主要負責采集信息的,可以將采集的信息提交。

          form的屬性

          action—指定表單數據的后端處理程序

          method----指定表單數據的提交方式【get[默認]/post】

          get提交數據會將被處理的數據跟隨在請求地址之后

          被提交的數據255個字符

          https://www.baidu.com/s?&wd=html

          post提交數據會將被處理的數據封裝到http協議的頭

          https://www.baidu.com/s

          被提交的數據沒有限制

          通常情況下提交文件只能用post

          enctype屬性規定在將表單數據發送到服務器之前如何對其進行編碼。

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="utf-8">

          <title></title>

          </head>

          <body>

          <table border="1" align="center" cellpadding="20px" cellspacing="0">

          <tr>

          <td>application/x-www-form-urlencoded</td>

          <td>在發送前對所有字符進行編碼(默認)。</td>

          </tr>

          <tr>

          <td>multipart/form-data</td>

          <td>不對字符編碼。當使用有文件上傳控件的表單時,該值是必需的。

          </td>

          </tr>

          <tr>

          <td>text/plain</td>

          <td>將空格轉換為 "+" 符號,但不編碼特殊字符。</td>

          </tr>

          </table>

          </body>

          </html>

          表單元素

          input 文本框/密碼框/單選按鈕/復選框…

          seletc 下拉列表

          textarea 文本域—富文本編輯器


          家好,今天我將和大家一起動手做個練習,使用 Flexbox 布局創建一個響應式的表單,本篇文章不會和大家生硬的去介紹 Flexbox 知識點,而是通過實踐的形式去理解 Flexbox 布局。剛學前端時,大家會不會覺得CSS太容易了,沒有過多實踐,就開始上手實踐JS和相關的前端框架了,一遇到一些樣式的問題,就開始慌了,無從下手。CSS學好用好,也是需要花功夫的,不要因為CSS簡單了,就輕視了,畢竟作為一個專業的前端,要給大家呈現產品美感,更多考驗的是 CSS 的功底。

          表單項目長啥樣?

          好了,給大家嘮叨多了,讓我們回到本節的案例,雖然例子簡單,但是要做漂亮了,是需要花功夫的,這里我們不使用媒介查詢屬性,完全使用 Flexbox 布局就能創建一個完美的響應式表單,在動手之前,我們來看看,我們例子長什么樣?

          創建表單 HTML 結構

          好了,基于上面的長相,我們開始動手創建表單的 HTML 結構:

          • 創建 .flex-outer 無序列表包裹整個表單元素。
          • 接著在內部創建 .flex-inner 無序列包裹復選表單元素。
          • 幾乎所有的表單都有其對應的 label 元素,方便擴大表單元素的點擊區域。

          僅此而已,我們通過定義了兩個無序列表創建了一個簡單表單結構,示例代碼如下:

          <div class="container">
           <form>
            <ul class="flex-outer">
              <li>
                <label for="first-name">First Name</label>
                <input type="text" id="first-name" placeholder="Enter your first name here">
              </li>
              <li>
                <label for="last-name">Last Name</label>
                <input type="text" id="last-name" placeholder="Enter your last name here">
              </li>
              <li>
                <label for="email">Email</label>
                <input type="email" id="email" placeholder="Enter your email here">
              </li>
              <li>
                <label for="phone">Phone</label>
                <input type="tel" id="phone" placeholder="Enter your phone here">
              </li>
              <li>
                <label for="message">Message</label>
                <textarea rows="6" id="message" placeholder="Enter your message here"></textarea>
              </li>
              <li>
                <p>Age</p>
                <ul class="flex-inner">
                  <!-- list items here -->
                </ul>
              </li>
              <li>
                <button type="submit">Submit</button>
              </li>
            </ul>
           </form>
          </div>
          

          接下來我們創建 .flex-inner 元素及年齡選擇部分,示例代碼如下:

          <ul class="flex-inner">
            <li>
              <input type="checkbox" id="twenty-to-twentynine">
              <label for="twenty-to-twentynine">20-29</label>
            </li>
            <li>
              <input type="checkbox" id="thirty-to-thirtynine">
              <label for="thirty-to-thirtynine">30-39</label>
            </li>
            <!-- more list items here -->
          </ul>
          

          完成以上結構后,我們的頁面長這樣:


          基本的模樣有了,我們需要借助CSS進行美化,長這樣,我們怎么好意思拿的出手。

          定義表單樣式

          1、接下來,我們來定義 flex 容器,在這個例子中,我們在以下元素進行應用:

          • .flex-outer 列表中的元素
          • 在 .flex-inner 的 checkboxes 元素

          此外,我們需要讓這些彈性元素在 cross-axis 軸方向垂直居中,并支持溢出換行:

          .flex-outer li,
          .flex-inner {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
          }
          

          2、接下來我們來定義彈性盒子的寬度,我們先從定義 .flex-outer 列表的元素開始 。

          我們的需求是這樣的:

          • 每個 labels 的寬度至少為120px, 最多為220px。
          • 每個表單元素的寬度至少為220px

          通過這個需求,我們應該明確表單寬度至少為340px, lable 與對應的表單元素水平并排顯示。

          上述的值,你可以根據自己的需求自行修改

          最終我們完成后的代碼如下所示:

          .flex-outer > li > label,
          .flex-outer li p {
            flex: 1 0 120px;
            max-width: 220px;
          }
           
          .flex-outer > li > label + *,
          .flex-inner {
            flex: 1 0 220px;
          }
          

          完成后的效果如下圖所示:


          定義提交按鈕樣式

          我們繼續來定義提交按鈕的樣式,其也是彈性元素,基本的樣式代碼如下:

          .flex-outer li button {
            margin-left: auto;
            padding: 8px 16px;
            border: none;
            background: #333;
            color: #f2f2f2;
            text-transform: uppercase;
            letter-spacing: .09em;
            border-radius: 2px;
          }
          

          處理 Checkboxes 的樣式

          接著我們繼續處理復選框 Checkboxes 的樣式,在定義基礎表單樣式時,我們設置了.flex-inner 容器的最小寬度為220px。

          1、首先我們來處理下每個 Checkbox 的寬度,設置其父元素 li 標簽的寬度為100px:

          .flex-inner li {
            width: 100px;
          }
          

          2、接著我們來使用 justify-content 屬性來定義元素在 main-axis 的顯示方式,這里我使用了 space-between 對齊方式。

          .flex-inner {
            justify-content: space-between;
          }
          

          使用這個屬性,能讓我們很好的均勻的對齊元素,唯一不足時,每行項目不相等時,最后一行的對齊方式也許不是你期望看到的。

          如上圖所示,也許你希望最后兩個元素相鄰顯示,不是分的這么開,我么該如何做呢?

          • 首先移除 justify-content 的對齊屬性
          • 修正每個彈性盒子的寬度,比如寬度為50%
          • 使用媒介查詢器,當屏幕寬度大于 992px 時,我們添加彈性盒子的寬度,讓其寬度為25%。

          通過以上學習,我們有兩點需要明確的是:

          • flex 布局為我們提供了極大的靈活性,讓我們可以快速的構建漂亮表格。
          • 上述CSS具體的值只是適用本示例,你可以根據自己的需求進行調整。例如,我們這里的年齡復選框定義的寬度很小,才100px, 如果他們的寬度不同的話,你可以使用 flex: 1 100px 來定義寬度,彈性盒子能足夠智能化的處理對齊問題。

          最終完成的樣式

          完成上述基本的架子后,我們需要讓表單更加漂亮些,比如添加樣式,定義文字大小、盒子的內間距、寬度等,由于文章篇幅有限,這里就不過多介紹了,最終完成的 CSS 代碼如下所示:

          body {
            font: normal 18px/1.5 "Fira Sans", "Helvetica Neue", sans-serif;
            background: #3AAFAB;
            color: #fff;
            padding: 50px 0;
          }
          
          .container {
            width: 80%;
            max-width: 1200px;
            margin: 0 auto;
          }
          
          .container * {
            box-sizing: border-box;
          }
          
          .flex-outer,
          .flex-inner {
            list-style-type: none;
            padding: 0;
          }
          
          .flex-outer {
            max-width: 800px;
            margin: 0 auto;
          }
          
          .flex-outer li,
          .flex-inner {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
          }
          
          .flex-inner {
            padding: 0 8px;
            justify-content: space-between;  
          }
          
          .flex-outer > li:not(:last-child) {
            margin-bottom: 20px;
          }
          
          .flex-outer li label,
          .flex-outer li p {
            padding: 8px;
            font-weight: 300;
            letter-spacing: .09em;
            text-transform: uppercase;
          }
          
          .flex-outer > li > label,
          .flex-outer li p {
            flex: 1 0 120px;
            max-width: 220px;
          }
          
          .flex-outer > li > label + *,
          .flex-inner {
            flex: 1 0 220px;
          }
          
          .flex-outer li p {
            margin: 0;
          }
          
          .flex-outer li input:not([type='checkbox']),
          .flex-outer li textarea {
            padding: 15px;
            border: none;
          }
          
          .flex-outer li button {
            margin-left: auto;
            padding: 8px 16px;
            border: none;
            background: #333;
            color: #f2f2f2;
            text-transform: uppercase;
            letter-spacing: .09em;
            border-radius: 2px;
          }
          
          .flex-inner li {
            width: 100px;
          }
          

          小節

          到這里,本示例就完成了,我們用最少最簡單的方式使用 flexbox 布局完成了響應式表單的創建,大家可以訪問以下網址,在線體驗效果:

          https://www.qianduandaren.com/demo/flexform/

          最后分享給大家一張圖,方便大家記憶和學習彈性盒子布局。


          主站蜘蛛池模板: 亚洲av乱码中文一区二区三区| 黑巨人与欧美精品一区| 国产视频一区二区| 99久久人妻精品免费一区| 国产乱码精品一区二区三区麻豆| 国产婷婷色一区二区三区| 国产在线观看一区二区三区四区| 久久er99热精品一区二区| 老鸭窝毛片一区二区三区| 亚洲国产情侣一区二区三区| 国产色情一区二区三区在线播放 | 国产精品无圣光一区二区| 国产伦精品一区二区三区免.费| 亚洲香蕉久久一区二区三区四区 | 日本在线一区二区| 久久精品国产一区二区| 天码av无码一区二区三区四区| 成人无号精品一区二区三区| 亚洲乱码一区二区三区国产精品| 秋霞无码一区二区| 91视频一区二区三区| 日韩毛片基地一区二区三区| 免费播放一区二区三区| 国产福利一区二区三区| 老熟妇仑乱一区二区视頻| 亚洲一区免费视频| 日韩一区二区三区四区不卡| 精品欧美一区二区在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲一区二区三区不卡在线播放| 国产精品亚洲一区二区三区久久| 精品国产一区二区三区免费看| 天天视频一区二区三区| 国产麻豆剧果冻传媒一区| 国产麻豆剧果冻传媒一区| 精品国产不卡一区二区三区| 国产在线aaa片一区二区99| 人妻无码一区二区三区AV| 亚洲国产精品一区二区三区在线观看| 学生妹亚洲一区二区| 日韩精品一区二区三区中文版|