H5 Mosh教程笔记 - 表单简介

H5 Mosh教程笔记

先列出教程中会用到的网站

网站H5规范验证网站
CSS格式规范验证网站
转义字符查询
免费图片下载网站
免费图片视频下载网站
浏览器HTML标签,CSS属性支持情况查询网站
CSS一致化工具安装
渐变色代码生成网站
CSS形状代码生成网站
字体网站fontsquirrel
字体网站fonts
字体网站myfonts
rem字体大小预览网站
css雪碧图工具网站,或者谷歌一下css sprites
DataURI生成网站,或者谷歌一下Data URI Generator
CSS滤镜展示
图片裁切工具网站,或者谷歌一下CSS Clip Generator
不同分辨率图片生成网站
图片格式转换网站
矢量图背景网站
图标字体网站
表单提交测试网站

教程开始

· 表单

· 创建基本表单
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
            line-height: 1.5;
        }

        label {
            display: block;
        }

        /* 选择input标签里type为text和email的 */
        input[type="text"],
        input[type="email"] {
            border: 1px solid #ccc;
            border-radius: 5px;
            padding: 0.5rem 0.7rem;
        }

        /* 设置input标签属性为text和email的,在获得焦点时的样式 */
        input[type="text"]:focus,
        input[type="email"]:focus {
            color: #7db0fb;
            outline: 0;
            box-shadow: 0 0 0 4px rgba(24, 117, 255, 0.25);
            /* 设置过渡效果,边框颜色过渡时间0.15s,阴影过度时间0.15s,避免边框出现的太突然 */
            transition: border-color 0.15s, box-shadow 0.15s;
        }

        button {
            background: #0d6efd;
            color: #fff;
            border: 0;
            padding: 0.5rem 0.7rem;
            border-radius: 5px;
        }

        .form-group {
            margin-bottom: 1rem;
        }
    </style>
</head>
<body>
    <form action="">

        <div class="form-group">
            <label for="name">Name</label>
            <input id='name' type="text">
        </div>

        <div class="form-group">
            <label for="email">Email</label>
            <input id='email' type="email">
        </div>

        <button type="submit">Register</button>
        <button type="reset">Reset</button>
    </form>
</body>
</html>
· CSS框架

CSS框架是已经写好的CSS样式,我们只需要使用就好,常见的如bootstrap,Milligram等,使用前只需要引入对应的样式文件,学习或者记住相关的CSS类,就可以很快的搭建出一个好看的网站,例子中使用的是Milligram,不需要写或绑定任何CSS类,就已经有一个不错的效果了

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <!-- CSS only -->
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
    <style></style>
  </head>
  <body>
    <form class="" action="">
      <div class="">
        <label class="" for="name">Name</label>
        <input class="" id="name" type="text" />
      </div>

      <div class="mb-3">
        <label class="" for="email">Email</label>
        <input class="" id="email" type="email" />
      </div>

      <button class="" type="submit">Register</button>
      <button class="" type="reset">Reset</button>
    </form>
  </body>
</html>

· 文字输入区域
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
    <style>
        form {
            width: 50%;

        }

        textarea {
            resize: none;
        }
    </style>
</head>
<body>
    <form action="">
        <!-- input的类型可以是text,email,password,number等 -->
        <input type="text">
        <textarea name="" id="" cols="30" rows="10"></textarea>

        <!-- input的类型可以是text,email,password,number等 -->
        <!-- input和textarea标签的还有其他参数,如placeholder,占位文字 -->
        <!-- readonly values="",只读,并显示value内容 -->
        <!-- disabled values"",禁用标签,并显示value内容,提交表单时,也不会提交该内容" -->
        <!-- maxlength,最大长度,超过最大长度便不能在输入 -->
        <!-- autofocus,页面加载完成后自动获取焦点 -->
        <input type="text" placeholder="Email">
        <textarea name="" id="" cols="30" rows="10"></textarea>
    </form>
</body>
</html>
· 数据列表(输入建议列表)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <form action="">
        <!-- 通过ID可以让两个标签关联起来,这里的datalist就是关联了list为countries的input标签 -->
        <!-- 所以点击input标签时,展示出数据列表 -->
        <!-- options里的value是提交表单时,需要传给服务器的值 -->
        <!-- 但options里的value会显示在列表里,需要重新命名一个属性,这里命名为data-value -->
        <!-- 再用JS来读取这个属性 -->
        <!-- autocomplete,自动补全输入内容,浏览器会记住上次的输入并提示补全,可以关闭或开启 -->
        <input list="countries" type="text" autocomplete="off">
        <datalist id="countries">
            <option data-value="1">China</option>
            <option data-value="2">USA</option>
            <option data-value="3">England</option>
            <option data-value="4">Koera</option>
        </datalist>
    </form>
</body>
</html>
· Drop-down List,下拉菜单
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <form action="">
        <!-- selected为默认选项 -->
        <!-- select标签还可以添加multiple,表示可以多选 -->
        <select name="" id="">
            <option value="">Select a cource</option>
            <option value="1" selected>HTML</option>
            <option value="2">CSS</option>
            <option value="3">JavaScript</option>
        </select>
    </form>

    <form action="">
        <!-- selected为默认选项 -->
        <!-- select标签还可以添加multiple,表示可以多选 -->
        <select name="" id="">
            <optgroup label="Courses">
                <option value="1" selected>HTML</option>
                <option value="2">CSS</option>
                <option value="3">JavaScript</option>
            </optgroup>
            <optgroup label="Languages">
                <option value="4">Java</option>
                <option value="5">Go</option>
                <option value="7">C++</option>
            </optgroup>
        </select>
    </form>
</body>
</html>
· 复选框
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="">
        <div>
            <!-- checked 是默认选项 -->
            <!-- 也有disabled,禁用选项,禁止选择某些checkbox -->
            <input type="checkbox" name="" id="front-end" checked>
            <!-- label-inline 是CSS框架的类,具体参考CSS框架文档 -->
            <label class="label-inline" for="front-end">Front-end</label>
        </div>
        <div>
            <input type="checkbox" name="" id="back-end">
            <!-- label-inline 是CSS框架的类,具体参考CSS框架文档 -->
            <label class="label-inline" for="back-end">Back-end</label>
        </div>
    </form>
</body>
</html>
· 单选框
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <form action="">
        <div>
            <!-- 同样有checked和disabled参数 -->
            <input type="radio" name="membership" id="silver">
            <lablel for="silver" class="label-inline">Silver</lablel>
        </div>
        <div>
            <input type="radio" name="membership" id="gold">
            <lablel for="gold" class="label-inline">Gold</lablel>
        </div>
    </form>
</body>
</html>
· 滑动条

因为涉及到JavaScript,Mosh交给我们自己去学习-_-#

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <form action="">
        <input type="range" name="" id="" min="0" max="100" value="90">
    </form>
</body>
</html>
· 文件域(就是选择文件上传)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <form action="">
        <!-- mutiple 参数为是否可以多选 -->
        <!-- accept 限制可选文件类型具体类型可以搜一搜 -->
        <input type="file" name="" id="" accept=".jpg, .png">
    </form>
</body>
</html>
· 将关联输入域分组
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
  </head>
  <body>
    <form action="">
      <!-- 一个fieldset就是一个分组 -->
      <!-- legend 就是分组标题,也可以用 section和h标签组合来表示分组及分组的标题 -->
      <fieldset>
        <legend>Billing Address</legend>
        <input type="text" />
        <input type="text" />
        <input type="text" />
      </fieldset>
      <fieldset>
        <legend>Payments</legend>
        <input type="text" />
        <input type="text" />
        <input type="text" />
      </fieldset>
    </form>
  </body>
</html>

· 隐藏域
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <form action="">
        <!-- 这一个input并不会显示出来,但在提交表单的时候,会把这个input标签的内容一并提交 -->
        <!-- 切记别放敏感信息,用户虽然看不到,但查看页面源码的时候,可以看到 -->
        <input type="hidden" name="course-id" value="121">
    </form>
</body>
</html>
· 数据校验

表单必备选项

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <form action="">
        <!-- required表示该项必填 数据验证必须要有-->
        <input type="text" required minlength="3" maxlength="10">
        <input type="email" required minlength="3" maxlength="10">
        <input type="date" required minlength="3" maxlength="10">
        <input type="number" required min="0" max="20">
        <button type="submit">SUBMIT</button>

    </form>
</body>
</html>
· 提交表单

可以使用表单提交测试网站创建自己的表单提交地址(action)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
    />
</head>
<body>
    <!-- action是提交表单时的URL,method是使用哪种http提交方式 -->
    <form action="" method="post">
        <!-- input标签中的name就是提交表单内容的key,对应这个input标签的内容 -->
        <!-- 查看一下formspree中你创建的表单提交内容就能明白了 -->
        <input type="text" placeholder="Name" name="Name">
        <input type="email" name="Email" id="" placeholder="email">
        <button type="submit">SUBMIT</button>
    </form>
</body>
</html>

下一篇
H5 Mosh教程笔记 - 过渡和动画简介
上一篇
H5 Mosh教程笔记 - 图片简介

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容