Form 表单详解:案例、CSS 美化

本文详细介绍了HTML表单的各种元素,包括input类型如text、password、radio、checkbox等,以及如何使用CSS进行美化,如设置宽高、边框、背景色等。此外,还探讨了如何利用radio实现Tab选项卡效果,通过改变:checked伪类和布局实现选项卡切换。文章强调了在现代前端开发中,通常使用JavaScript库或API提交数据而非直接使用form元素。
摘要由CSDN通过智能技术生成

本文要点:

  • 常见表单
  • 表单的性质
  • 表单CSS美化
  • 使用 radio 实现 Tab 选项卡

什么是表单

用户通过表单填写信息,然后通过计算机网络传送给服务器。表单标签不是一个标签,而是一组标签,因为不同格式的数据的交互界面有区别,如果是文字就是一个输入框,传送文件就会打开文件选择窗口,如果是时间或日期就会弹出一个日历供用户选择。大家熟悉的登录页面包含了若干输入框:

请添加图片描述

一组输入框一般由 form 元素组织,其中还包括了用于提交数据的按钮:

<form action="/api/to/handle/form" method="get/post">
  <!-- 单标签  type 决定显示效果 行内块级元素 -->
  <!-- text输入框  --- 单行输入 -->
  <input type="text">
  <!-- password 密码框 -->
  <input type="password">

  <br>
  请选择性别
  <!-- radio 单选框   必须在标签上添加属性 name  值必须是一样的 -->
  <input type="radio" name="1"><input type="radio" name="1"><br>

  请选择爱好
  <!-- checkbox 复选框  多选 -->
  <input type="checkbox"> 干饭
  <input type="checkbox"> 睡觉
  <input type="checkbox"> 撸代码

  <br>

  <!-- file 文件上传 默认只能传一个文件  multiple可以实现多文件上传 -->
  <input type="file" multiple>

  <br>

  <!-- 文本域   多行输入   -->
  <!-- cols列数  rows行数  不建议使用    一般使用css确定宽高 -->
  <textarea name="" id="" cols="10" rows="5"></textarea>

  <br>

  <!-- 按钮   button / submit / reset -->

  <!-- button 普通按钮 -->
  <input type="button" value="确定">

  <!-- submit 提交的 -->
  <input type="submit" value="提交">

  <!-- reset 重置 --- 清空 -->
  <input type="reset" value="清空">
</form>

【解读】form 元素有两个重要的属性:

  • action: 处理数据的路由,需要后端支持
  • method:提交数据的HTTP方法,一般是 POST。

【提示】目前大多使用 JavaScript ajax 或 fetch API 提交数据,而不直接使用 form 元素提交数据,此时这俩属性可以省略,甚至form元素都可以不要,只留下输入框。

【提示】更多案例请参考1

input 性质

上述例子演示了不同 type 的 输入框,本小节主要讲解 input 标签的性质:

  • input 元素是 inline-block ,它可以与其他非块级元素处在同一行,并且能设置高宽与上下内外边距。input 标签也叫置换元素(标签和属性共同决定页面的显示效果)。
<style>
  .big {
    width: 500px;
    height: 40px;
    font-size: 1.5rem;
  }
</style>

<input type="text" class="big">
  • input 元素必须设置 type 属性,如果不设置默认为 text,如果不使用 JavaScript 提交数据,还必须设置 name 属性,因为服务器会根据 name 获取相应字段的值。input 元素的 value 属性表示输入框的值,可以通过 JavaScript 获取或设置。除此之外,给 input 添加 id 属性能够方便 JavaScript 获取输入框,然后读取或设置输入框的数据。
<input type="text" name="username" id="username" value="默认值" placeholder="提示信息" >

input 样式

默认的表单是一个黑框框,点击会出现一个更粗的黑框框,检查元素表单自带 2 像素的边框和 2像素左右内边距和1像素上下内边距(Chrome浏览器):
在这里插入图片描述

接下来,通过模仿百度 的输入框来说明输入框的样式调整。

1)用 HTML 搭好结构:

<style>

</style>

<div class="form">
  <input class="text" type="text">
  <input class="btn" type="submit" value="百度一下">
</div>

在这里插入图片描述

2)设置好宽高:

<style>
  .form {
    width: 600px;
    height: 44px;
  }

  .text {
    width: 500px;
    height: 44px;
  }

  .btn {
    width: 100px;
    height: 44px;
  }
</style>

<div class="form">
  <input class="text" type="text">
  <input class="btn" type="submit" value="百度一下">
</div>

在这里插入图片描述

此时你会发现按钮掉到下面了,这是因为 input 是行内块级元素,两个 input 之间存在空白字符就会到这一个小空隙。采用浮动消除间隙:

  .text {
    width: 500px;
    float: left;
  }

  .btn {
    width: 100px;
    float: left;
  }

此时依然问题还没有解决,这是因为 input 为 text 的输入框才在内边距与边框,它的实际宽度是:500+2+2+2+2,取消边框与内边距:

  .text {
    width: 500px;
    float: left;
    border: none;
    padding: 0;
  }

在这里插入图片描述

【重点】input[type=submit] 表现为按钮,它的边框与内外边距不会撑大盒子宽与高,原因在于它默认属于怪异盒子模型 (border-box),并且其中的文字自动居中。

3)设置外边框与背景颜色。为了简单,外边框设置到外面的容器上

.form {
	...
    border: 2px solid #4569ff;
    border-radius: 10px;
    overflow: hidden; /*必要的,不然圆角会溢出*/
  }

.btn {
    ...
    border: none;
    background-color: #4e6ef2;
    color: #fff;
  }

在这里插入图片描述

4)设置点击时的样式,点击时表单处于 focus 状态,会触发伪类 :focus:

  .text:focus {
    outline: none;
  }

5)点击时,光标是顶格的,看起来很不舒服,重新调整内边距:

  .text {
    width: 468px;
    ...
    padding: 0 16px;
  }

6)最后给 btn 加点样式:

  .btn {
   	...
    cursor: pointer;
  }
  .btn:hover {
    background-color: #4662d9;
  }

最终结果:

在这里插入图片描述

完整代码:

<style>
  .form {
    width: 600px;
    height: 44px;
    border: 2px solid #4569ff;
    border-radius: 10px;
    overflow: hidden;
  }

  .text {
    width: 468px;
    height: 44px;
    float: left;
    border: none;
    padding: 0 16px;
  }

  .text:focus {
    outline: none;
  }

  .btn {
    width: 100px;
    height: 44px;
    float: left;
    border: none;
    background-color: #4e6ef2;
    color: #fff;
    cursor: pointer;
  }

  .btn:hover {
    background-color: #4662d9;
  }
</style>

<div class="form">
  <input class="text" type="text">
  <input class="btn" type="submit" value="百度一下">
</div>

是不是很简单呢?只需要设置几个简单的样式,就实现了一个完美的输入框。

radio表单

input[type=radio] 表示单选输入,说白了就是单选题,一组按钮只能选择一个。因为老式的收音机上有一种开关,多个按键排在一起,但每次只能按下一个,换句话说,按下任意一个键,其他按键全部弹起,所以 GUI 的单选按键也就被形象地称作收音机按键。

【知识点1】一组 radio 表单需要设置同样的 name 才能体现单选效果:

<input type="radio" value="a" name="1">
<input type="radio" value="b" name="1">
<input type="radio" value="c" name="1">
<input type="radio" value="d" name="1">

【知识点2】可以通过 label 添加提示信息,并让 label 的 for 属性指向 radio 的 id 属性。

<input type="radio" name="1" id="a"><label for="a">A</label>
<input type="radio" name="1" id="b"><label for="b">B</label>
<input type="radio" name="1" id="c"><label for="c">B</label>
<input type="radio" name="1" id="d"><label for="d">B</label>

当 label 的 for 属性 指向相应的 id 之后,它们就绑定在一起了,点击 label 也能选中。

【知识点3】当 radio 被选中时会处于 checked 状态,可以通过 :checked 添加样式:

<style>
  input[type=radio]:checked+label {
    color: green;
    font-size: 2rem;
  }
</style>

<div><input type="radio" name="1" id="a"><label for="a">A</label></div>
<div><input type="radio" name="1" id="b"><label for="b">B</label></div>
<div><input type="radio" name="1" id="c"><label for="c">C</label></div>
<div><input type="radio" name="1" id="d"><label for="d">D</label></div>

【知识点4】输入框有一类开关属性,这类属性只考虑存在性,而不考虑它的属性值:

<input type="text" disabled>

disabled 表示禁用元素,当该属性出现时,该输入框不起作用。

【思考】尝试给 disable 属性添加一些值,看看输入框的禁用效果是否会改变,例如 disabled="false", disabled="disabled"

开关属性还有 hidden, required,有些类型的输入框拥有某些特殊属性,例如 radio 与 checkbox 有 checked,下拉菜单有 selected

radio 实现选项卡[视频]

Tab 选项卡是一种UI组件,在同一个时间只能展示一个卡片,而其他卡片会隐藏起来。当点击另一个卡片的头部时,相应的卡片会展开,其他卡片会隐藏。Tab 选项卡与 radio 都存在单选这一性质,因此可以使用 radio 实现 Tab选项卡:

<style>
  .tabs {
    position: relative;
  }

  .tab-hd {
    background-color: tan;
    display: inline-block;
    padding: 8px 12px;
    float: left;
  }

  .tab-bd {
    width: 350px;
    height: 200px;
    background-color: wheat;
    position: absolute;
    top: 110%;
    left: 0;
    visibility: hidden;
  }

  .clearfix::after {
    content: "";
    display: block;
    clear: both;
  }

  input[name=tabs]:checked+.tab-hd {
    background-color: orange;
  }

  input[name=tabs]:checked~.tab-bd {
    visibility: visible;
  }
</style>

<div class="tabs clearfix">
  <div class="tab">
    <input type="radio" name="tabs" id="tab1" hidden checked>
    <label for="tab1" class="tab-hd">选项卡1</label>
    <div class="tab-bd">选项卡1的内容</div>
  </div>
  <div class="tab">
    <input type="radio" name="tabs" id="tab2" hidden>
    <label for="tab2" class="tab-hd">选项卡2</label>
    <div class="tab-bd">选项卡2的内容</div>
  </div>
  <div class="tab">
    <input type="radio" name="tabs" id="tab3" hidden>
    <label for="tab3" class="tab-hd">选项卡3</label>
    <div class="tab-bd">选项卡3的内容</div>
  </div>
  <div class="tab">
    <input type="radio" name="tabs" id="tab4" hidden>
    <label for="tab4" class="tab-hd">选项卡4</label>
    <div class="tab-bd">选项卡4的内容</div>
  </div>
</div>

实现效果:

在这里插入图片描述

【视频讲解】

使用表单元素实现 Tab 选项卡效果

【要点】

  • 利用 radio 实现单选效果
  • 利用 :checked 设置选中样式
  • 利用绝对定位与元素隐藏实现 Tab 内容的展示与隐藏。
  • 利用浮动去除空格。

参考文章

♥ 我是前端工程师:你的甜心森。非常感谢大家的点赞与关注,欢迎大家参与讨论或协作。

★ 本文开源,采用 CC BY-SA 4.0 协议,转载请注明出处:前端工程师的自我修养. GitHub.com@xiayulu.

★ 创作合作或招聘信息请发私信或邮件:zuiaiqiansen@163.com,注明主题:创作合作或招聘前端工程师


  1. MDN. input. ↩︎

  • 22
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: el-form 是饿了么团队开发的一款基于 Vue.js 的表单组件库,用于快速创建表单页面。它提供了丰富的表单元素和验证规则,但在默认情况下,其外观可能不够美观。 要美化 el-form 表单,我们可以使用以下方法: 1. 使用自定义样式:使用 CSS 或者 SCSS 来为 el-form 添加自定义样式,包括改变元素的颜色、背景、边框等属性,以及调整元素的尺寸和间距。 2. 使用内置样式:el-form 提供了一些内置的 class 和样式,可以直接在 HTML 中使用它们,例如:el-form--medium、el-form--small,el-button--primary 等。通过使用这些内置样式,我们可以快速改变表单的外观。 3. 使用插槽(slot):el-form 提供了多个插槽,我们可以自定义表单的布局和外观,以满足项目的需求。比如可以使用 label-width 插槽来设置标签的宽度,使用 label-class-name 插槽来添加自定义的类名,以及使用 error 插槽来自定义错误信息提示的样式。 4. 使用第三方组件库:如果 el-form 的默认样式无法满足需求,我们还可以选择使用第三方组件库,比如 Element Plus、Ant Design Vue 等,它们提供了更多的表单样式和组件,可以更好地满足美化需求。 总之,美化 el-form 表单有多种方法,可以通过自定义样式、使用内置样式、使用插槽、或者使用第三方组件库来实现。根据具体需求和项目情况,选择合适的方法,能够帮助我们更好地美化 el-form 表单。 ### 回答2: el-form是Element UI库中提供的一种表单组件,用于快速构建Web应用程序中的表单功能。为了美化el-form表单,可以采取以下几个步骤: 1.样式调整:可以通过修改el-form组件的class或者使用CSS样式来修改表单的外观。可以更改字体、颜色、边框等属性,以达到更好的美化效果。 2.布局调整:根据实际需求,可以通过设置el-form组件的属性来调整表单的布局。例如,可以设置表单的列数、间距、对齐方式等,使得表单在页面中更加整齐和美观。 3.组件定制:Element UI库提供了丰富的表单组件,如输入框、选择框、日期选择器等。可以根据实际需求,选择合适的组件并进行定制,以满足特定的美化要求。可以修改字体、颜色、边框等属性,使得组件与整体表单风格统一。 4.交互效果:为了使表单更加动态和有趣,可以添加一些交互效果。可以通过Vue.js的动画效果或者Element UI库中提供的过渡效果来为表单添加动态效果,如淡入淡出、滑动等,从而提升用户体验。 总之,美化el-form表单的关键在于调整样式、布局和组件定制。通过合理的设计和布置,可以使表单在视觉上更加美观、易用,提升用户体验。同时,还可以加入一些动态效果,增加表单的交互性,进一步提高用户对表单的关注度和使用度。 ### 回答3: el-form 是饿了么团队开发的一款基于 Vue.js 的表单组件,它提供了丰富的表单输入控件和验证功能。el-form 本身已经具有一定的美观性,但如果想要进一步美化 el-form,可以通过以下几种方式实现: 1. 自定义样式:可以通过在 el-form 上添加自定义的 CSS 类或内联样式,来修改表单的外观。可以修改表单的背景色、字体颜色、边框样式等,以符合设计要求。 2. 使用 slot 插槽:el-form 组件提供了多个 slot 插槽,可以在这些插槽中自定义表单的布局和样式。例如,可以使用 label slot 自定义表单项的标签样式,使用 error slot 来展示验证错误信息的样式。 3. 配置主题:el-form 支持配置主题颜色,可以通过修改主题颜色来改变整个表单的色调。可以在 el-form 上添加 theme 属性,指定想要的主题颜色,例如 "light" 或 "dark"。 4. 使用第三方样式库:除了自定义样式,也可以引入第三方 CSS 样式库来美化 el-form。例如,可以使用 Bootstrap 或 Element-UI 提供的样式库,来增加更多的样式选择和美观效果。 总结来说,el-form 表单组件已经具有一定的美观性,但如果需求更多样式上的定制,可以通过自定义样式、使用插槽、配置主题或引入第三方样式库来进行美化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值