HTML 表单
HTML 表单用于收集用户的输入信息,是一个包含表单元素的区域
HTML 表单表示文档中的一个区域,此区域包含交互控件,将用户收集到的信息发送到 Web 服务器。
HTML 表单通常包含各种输入字段、复选框、单选按钮、下拉列表等元素。
常用属性:
<form>
元素用于创建表单,action
属性定义了表单数据提交的目标 URL,method
属性定义了提交数据的 HTTP 方法(这里使用的是 "post")。
<label>
元素用于为表单元素添加标签,提高可访问性。
<input>
元素是最常用的表单元素之一,它可以创建文本输入框、密码框、单选按钮、复选框等。type
属性定义了输入框的类型,id
属性用于关联 <label>
元素,name
属性用于标识表单字段。
<select>
元素用于创建下拉列表,而 <option>
元素用于定义下拉列表中的选项。
接下来让我们来看看具体的例子,看看这些标签该如何使用:
以下实例创建了一个表单,包含两个输入框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="">
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
</body>
</html>
运行结果:
以下实例创建了一个表单,包含一个普通输入框和一个密码输入框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="">
Username: <input type="text" name="user"><br>
Password: <input type="password" name="password">
</form>
</body>
</html>
运行结果:
接下来是一个比较完整的表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/" method="post">
<!-- 文本输入框 -->
<label for="name">用户名:</label>
<input type="text" id="name" name="name" required>
<br>
<!-- 密码输入框 -->
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
<br>
<!-- 单选按钮 -->
<label>性别:</label>
<input type="radio" id="male" name="gender" value="male" checked>
<label for="male">男</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">女</label>
<br>
<!-- 复选框 -->
<input type="checkbox" id="subscribe" name="subscribe" checked>
<label for="subscribe">订阅推送信息</label>
<br>
<!-- 下拉列表 -->
<label for="country">国家:</label>
<select id="country" name="country">
<option value="cn">CN</option>
<option value="usa">USA</option>
<option value="uk">UK</option>
</select>
<br>
<!-- 提交按钮 -->
<input type="submit" value="提交">
</form>
</body>
</html>
运行结果:
HTML 表单元素
表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表(select)、单选框(radio-buttons)、复选框(checkbox) 等等。
我们可以使用 <form> 标签来创建表单
HTML 表单 - 输入元素
多数情况下被用到的表单标签是输入标签 <input>。
输入类型是由 type 属性定义。
文本域(Text Fields)
文本域通过 <input type="text"> 标签来设定,当用户要在表单中键入字母、数字等内容时,就会用到文本域。
<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>
密码字段
密码字段通过标签 <input type="password"> 来定义
<form>
Password: <input type="password" name="pwd">
</form>
单选按钮(Radio Buttons)
<input type="radio"> 标签定义了表单的单选框选项
<form action="">
<input type="radio" name="sex" value="male">男<br>
<input type="radio" name="sex" value="female">女
</form>
复选框(Checkboxes)
<input type="checkbox"> 定义了复选框。
复选框可以选取一个或多个选项:
<form>
<input type="checkbox" name="vehicle[]" value="Bike">我喜欢自行车<br>
<input type="checkbox" name="vehicle[]" value="Car">我喜欢小汽车
</form>
提交按钮(Submit)
<input type="submit"> 定义了提交按钮。
当用户单击确认按钮时,表单的内容会被传送到服务器。表单的动作属性 action 定义了服务端的文件名。
action 属性会对接收到的用户输入数据进行相关的处理
<form name="input" action="html_form_action.php" method="get">
Username: <input type="text" name="user">
<input type="submit" value="Submit">
</form>
运行效果:
假如您在上面的文本框内键入几个字母,然后点击确认按钮,那么输入数据会传送到 html_form_action.php 文件,该页面将显示出输入的结果。
我这里提交之后出错了,我这样是直接通过本地文件系统的路径来执行一个PHP文件。浏览器默认是不允许直接从本地文件系统加载并运行PHP文件的,因为PHP是一种服务器端脚本语言,它需要被服务器(如Apache, Nginx等)解析后才能执行。
以上实例中有一个 method 属性,它用于定义表单数据的提交方式,可以是以下值:
post:指的是 HTTP POST 方法,表单数据会包含在表单体内然后发送给服务器,用于提交敏感数据,如用户名与密码等。
get:默认值,指的是 HTTP GET 方法,表单数据会附加在 action 属性的 URL 中,并以 ?作为分隔符,一般用于不敏感信息,如分页等。例如:https://www.runoob.com/?page=1,这里的 page=1 就是 get 方法提交的数据。
既然说到了get,post那就再简单举个例子说一下用法吧
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 以下表单使用 GET 请求发送数据到当前的 URL,method 默认位 GET。 -->
<form>
<label>Name:
<input name="submitted-name" autocomplete="name">
</label>
<button>Save</button>
</form>
<!-- 以下表单使用 POST 请求发送数据到当前的 URL。 -->
<form method="post">
<label>Name:
<input name="submitted-name" autocomplete="name">
</label>
<button>Save</button>
</form>
<!-- 表单使用 fieldset, legend, 和 label 标签 -->
<form method="post">
<fieldset>
<legend>Title</legend>
<label><input type="radio" name="radio"> Select me</label>
</fieldset>
</form>
</body>
</html>
运行结果:
感觉最后这个fieldest很有意思,这个会随浏览器页面的伸缩而伸缩,我觉得是可以作为一个测布局的工具哈哈哈
关于表单其实还有很多特别细节以及我们意想不到的用法,比如预选下拉列表,创建自定义大小的文本框,从表单发送电子邮件等等
HTML 框架
通过使用框架,可以在同一个浏览器窗口中显示不止一个页面。
iframe标签定义一个内联的iframe
iframe语法:
<iframe src="URL"></iframe>
URL指向不同的网页
iframe - 设置高度与宽度
height 和 width 属性用来定义iframe标签的高度与宽度。
属性默认以像素为单位, 但是你可以指定其按比例显示 (如:"80%")
<iframe src="demo_iframe.htm" width="200" height="200"></iframe>
iframe - 移除边框
frameborder 属性用于定义iframe表示是否显示边框。
设置属性值为 "0" 移除iframe的边框
<iframe src="demo_iframe.htm" frameborder="0"></iframe>
使用 iframe 来显示目标链接页面
iframe 可以显示一个目标链接的页面
目标链接的属性必须使用 iframe 的属性
<iframe src="demo_iframe.htm" name="iframe_a"></iframe>
<p><a href="https://www.runoob.com" target="iframe_a" rel="noopener">RUNOOB.COM</a></p>
使用 <iframe>
元素来显示一个链接的页面内容,并通过设置链接的 target
为 <iframe>
的 name
属性值,使得链接点击后的内容在 <iframe>
中加载,而不是在新的浏览器标签页或窗口中打开。
<iframe>
的 src
属性:这个属性指定了 <iframe>
初始加载的页面
el="noopener"
属性:在 <a>
标签中添加 rel="noopener"
是一个安全实践,特别是当链接指向外部网站时。这个属性可以防止新窗口(虽然在这个例子中是 <iframe>
)访问 window.opener
属性,从而减少潜在的安全风险,如跨站脚本(XSS)攻击。
同源策略:需要注意的是,由于浏览器的同源策略(Same-Origin Policy),<iframe>
中的页面可能无法与父页面(包含 <iframe>
的页面)自由通信,除非这两个页面来自同一个源(即协议、域名和端口都相同)。
响应式设计:在使用 <iframe>
时,还需要考虑其对响应式设计的影响。<iframe>
可能会破坏父页面的布局,特别是当 <iframe>
的内容大小不固定时。您可以通过 CSS 控制 <iframe>
的大小,或者使用 JavaScript 动态调整其大小以适应内容。
这是一个非常实用的技术,可以用于嵌入外部内容(如社交媒体帖子、地图、视频播放器等)到您的网页中,同时保持用户留在您的网站上。然而,使用时应注意安全性和用户体验的考量。