1. 程式人生 > >HTML5 + CSS3 3 表單

HTML5 + CSS3 3 表單

一.表單

表單: 是蒐集使用者資料資訊的各種表單元素的集合區域

作用:實現網頁上的資料互動 蒐集客戶端輸入的資料資訊,提交到網站伺服器端進行處理

常見應用

  1. 註冊/登入
  2. 搜尋
  3. 留言/評論
  4. 檔案上傳/文章編輯

結構:表單區域 + 表單控制元件(表單元素)

表單標籤:<form></form>

  • 塊狀元素
  • 用來定義網頁中的互動輸入的區域(表單區)
  • 所有的表單控制元件必需包含在<form></form>元素中

<form>基本屬性

屬性 說明
action url路徑 必需。規定當提交表單時向何處傳送表單資料
method get/post 必需。規定用於傳送form-data的HTTP方法。(get  小資料  不加密)
name 自定義名稱 規定表單名稱(針對伺服器端或指令碼處理)

name屬性和id屬性的區別

  • id在頁面中具有唯一性,name可以重複
  • name主要對應伺服器端,用於對提交到伺服器後的表單資料進行標識。要實現資料互動功能,表單和表單控制元件都需要使用name屬性
  • name的另一個功能是對應JavaScript,來處理表單中的各種資料值。id主要對應css樣式應用

二.表單控制元件

表單控制元件型別

1.輸入型

  • 文字框(單行文字) <input>標籤建立文字框,type屬性指定其具體型別(text password hidden:使用者看不到,用於傳遞不需要顯示在客戶端的資料)
  1. 行間元素。 
  2. type屬性定義表單控制元件的型別 。
  3. html5新增輸入型控制元件。type值:url   email   number   range   date   color   search   tel
  4. value屬性定義表單控制元件預設的值
  • 文字域(多行文字) 無value屬性 。          <textarea>這裡是預設值</textarea>

2.選擇型

  • *單選(組)/複選(組)。 <input>標籤建立選擇框,type屬性指定其具體型別
  1. 單選按鈕 <input type="radio">
  • 單選按鈕具有互斥性,必須成組出現
  • name屬性:實現按鈕的編組。
  • checked屬性:設定按鈕的已選中狀態

      2.複選按鈕 <input type="checkbox">

  • 可以單個使用,也可以成組使用
  • 成組使用時,提供給使用者一組可選項中做多項選擇
  • value屬性:值傳送到資料庫
  • 下拉列表 <select></select>標籤建立下拉列表區,<option></option>建立列表中的子級選項
  • 應用技巧:
  1. 給<option></option>新增selected屬性,設定預設選中狀態
  2. 給<select></select>新增multiple屬性,可選擇多個選項
  3. <select></select>的size屬性可以規定下拉列表中可見選項的數目
  4. 使用<optgroup></optgroup>給列表中的選項進行分組,形成類似樹形的分級選擇控制元件。label屬性用於定義選項組的文字描述
  • html5新增選擇型控制元件
  1. 輸入提示控制元件:datalist(預先定義一個輸入框的潛在選項,為輸入框提供一個可選擇的提示列表。使用者輸入時,可直接選擇提示列表)
  2. datalist和input關係 :
  • datalist作為輸入提示,需要和input搭配使用
  • 使用input(輸入框)的list屬性來引用datalist的id值
<input list="browser">
<datalist id="browser">
     <option></option>
     <option></option>
     <option></option>
</datalist>
  • datalist缺陷:無法使用css進行UI設計或樣式設定

3.事件型

<input type="button" value="普通按鈕">

/* 普通按鈕 點選觸發事件,通過指令碼語言完成 */

<input type="submit">             /* 提交按鈕 點選按鈕會把表單資料傳送到伺服器 */

<input type="reset">           /* 重置按鈕 點選按鈕會重置表單中所有資料 */

<input type="image" src="" alt="替代文字">   /* 影象按鈕 用自定義影象來呈現提交按鈕 */

<input type="file" multiple>

/* 上傳按鈕 點選按鈕選擇本地檔案,上傳檔案 */

<button type=""></button>          /*按鈕控制元件。文字可用value設定*/

三.表單/表單控制元件常用的屬性總結

value屬性

  • 定義各種表單控制元件的值
  • 不同控制元件型別,value用法也不同
應用物件 說明
value 輸入型 定義初始值
選擇型 定義相關聯的值
事件型 定義按鈕呈現的值

readonly只讀屬性 :<input readonly>

  • 可以提交

disabled禁用屬性 :<input disabled>

  • 不可提交

placeholder佔位符屬性 :<input placeholder="text"> (h5新增屬性)

  • 規定可描述輸入欄位預期值的提示資訊,來提示使用者輸入
  • 文字內容在使用者輸入時自動消失
  • 針對輸入型表單控制元件。如input textarea
  • 不會被表單提交

required必填屬性 :<input required> (h5新增屬性)

autofocus自動獲得焦點屬性 :<input autofocus> (h5新增屬性)

  • 頁面載入時<input>元素自動獲得焦點

autocomplete自動完成屬性 :<input autocomplete="on">

  • 值:
  1. on適用於表單(預設,開啟) 當用戶在欄位開始鍵入時,瀏覽器根據之前鍵入的值,應顯示出在欄位中填寫的選項。
  2. off使用與特定的輸入欄位(關閉)

四.表單應用技巧

1.使用<label></label>提高使用者操作互動體驗

  • 行間元素
  • 為表單控制元件提供輔助標記。點選<label></label>中的標記內容,瀏覽器會自動將焦點轉到和label相關的表單控制元件上
  • 應用:
  1. 用 label 將標記內容和表單控制元件括在一起,增加控制元件的可操作性 <label> 標記內容 + 表單控制元件 </label>
  2. 使用 for 屬性將其和相關控制元件連在一起,for屬性的值為控制元件的id名
<label>
    hello
    <input type="checkbox" id="hello">
</label>
<p>world</p>
<p>world</p>
<p>world</p>
<label for="hello">選擇是否同意</label>

2.使用<fieldset></fieldset>協助表單控制元件或資料歸類分組        分組標籤

  • 塊狀元素,建立一個分組區域
  • 分組標題標籤:<legend></legend> 。塊狀元素。用來為fieldset分組定義一個標題,作為表單內容的說明或描述
<fieldset>
    <legend>表單描述</legend>
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
</fieldset>

五.css樣式及登入介面例項

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="css/bootstrap.css">
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            background: rgba(87, 167, 211, 0.51);
            color:#111;
        }
        #userlogin{
            width: 300px;
            background: #fff;
            margin: 30px auto;
            padding: 25px;
        }
        #userlogin h3{
            font-size: 16px;
            line-height: 32px;
            margin-bottom: 20px;
            font-weight: bold;
        }
        #userlogin p{
            margin-bottom: 25px;
        }
        .input-text{
            border: 1px solid #ccc;
            height: 38px;
            width: 248px;
            font-size: 14px;
            float: left;
            margin-top: -38px;
            padding-left: 50px;
        }
        .glyphicon-user,.glyphicon-lock{
            display: inline-block;
            width: 38px;
            height: 38px;
            color: grey;
            background-color: rgba(193, 193, 193, 0.7);
            text-align: center;
            line-height: 41px;
            font-size: 18px;
        }
        .input-btn{
            width: 248px;
            height: 40px;
            border: 0;
            background-color: #9A0002;
            color: #fff;
            font-size: 16px;
            font-weight: bold;
            letter-spacing: 5px;
            border-radius: 3px;
        }
        .input-btn:hover{
            background-color: #D10003;
            cursor: pointer;/*規定顯示的游標的型別*/
        }
        h6{
            text-align: right;
        }
        h6 a{
            color: #666;
            text-decoration: none;
            font-weight: normal;
            margin-right: 12px;
        }
        h6 a:hover{
            color: #C81D1F;
        }
    </style>
</head>
<body>
<form action="#" method="post" name="userlogin" id="userlogin">
    <h3>使用者登入</h3>
    <div>
        <p><div class="glyphicon glyphicon-user"></div><input class="input-text" type="text" placeholder="手機號/會員名/郵箱" autofocus required></p>
        <p><div class="glyphicon glyphicon-lock"></div><input class="input-text input-pwd" type="password" required placeholder="密碼"></p>
    </div>
    <p><input class="input-btn" type="submit" value="登入"></p>
    <h6>
        <a href="#">忘記密碼</a>
        <a href="#">免費註冊</a>
    </h6>
</form>
</body>
</html>

cursor屬性值

  • url   自定義游標
  • default  預設游標(箭頭)
  • auto 預設(瀏覽器設定的游標)
  • crosshair  十字線
  • pointer  手形
  • move  指示目標可移動
  • e-resize  指示矩形框邊緣可被向東移動  east
  • ne-resize  northeast
  • nw-resize  northwest
  • n-resize  north
  • se-resize  southeast
  • sw-resize  southwest
  • s-resize  south
  • w-resize  west
  • text  指示文字
  • wait  指示程式正忙
  • help  指示幫助