学习Bootstrap 5的第十七天

目录

表单

堆叠表单

内联表单

文本框

输入框大小

禁用/只读表单

纯文本输入

取色器


表单

Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单。

表单元素 <input>, <textarea>, 和 <select> elements 在使用 .form-control 类的情况下,宽度都是设置为 100%。

Bootstrap5 表单布局

  • 堆叠表单 (全屏宽度):垂直方向
  • 内联表单:水平方向

Bootstrap 提供了两种类型的表单布局:

堆叠表单

对于设置了.form-control类的<input>和<textarea>元素,它们将获得正确的表单样式。这样可以确保它们在堆叠表单中正确显示。

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Bootstrap 实例</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
	</head>
	<body>
		<div class="container mt-3">
			<form>
				<div class="mb-3 mt-3">
					<label for="email" class="form-label">电子邮件:</label>
					<input type="email" class="form-control" id="email" placeholder="请输入电子邮件地址" name="email">
				</div>
				<div class="mb-3">
					<label for="pwd" class="form-label">密码:</label>
					<input type="password" class="form-control" id="pwd" placeholder="请输入密码" name="pswd">
				</div>
				<div class="form-check mb-3">
					<label class="form-check-label">
						<input class="form-check-input" type="checkbox" name="remember"> 记住我
					</label>
				</div>
				<button type="submit" class="btn btn-primary">提交</button>
			</form>
		</div>
	</body>
</html>

此外,为了确保正确的填充,我们为每个label元素添加了.form-label类。

对于复选框和单选按钮,它们具有不同的标记样式。它们是通过.form-check类的容器元素包围的。相应的label元素使用.form-check-label类,而复选框和单选按钮则使用.form-check-input类。

通过使用这些样式类,可以确保堆叠表单中的各个元素具有正确的样式和布局。

内联表单

可以使用.row和.col类来创建内联表单,并使表单元素并排显示。

以下是一个示例代码,用于创建一个包含两个输入框的内联表单:

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Bootstrap 实例</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
	</head>
	<body>
		<div class="container mt-3">
			<form class="form-inline">
				<div class="form-group row">
					<label for="input1" class="col-sm-2 col-form-label">电子邮件:</label>
					<div class="col-sm-10">
						<input type="text" class="form-control" id="input1" placeholder="请输入电子邮件地址">
					</div>
				</div>
				<div class="form-group row">
					<label for="input2" class="col-sm-2 col-form-label">密码</label>
					<div class="col-sm-10">
						<input type="text" class="form-control" id="input2" placeholder="请输入密码">
					</div>
				</div>
			</form>
		</div>
	</body>
</html>

在这个例子中,我们将整个表单设置为内联表单,使用.form-inline类。然后,在每个表单组中,我们使用.form-group和.row类来创建一个行容器,并使用.col类来指定每个表单元素的列宽度。这样,两个输入框就可以并排显示了。

注意,我们在每个表单组的标签和输入框之间使用了一个<div>元素,以确保标签和输入框对齐。

文本框

可以使用<textarea>标签来创建文本框,并使用.form-control类来渲染文本框。

以下是一个示例代码,用于创建一个提交表单的文本框:

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Bootstrap 实例</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
	</head>
	<body>
		<div class="container mt-3">
			<form>
				<div class="form-group">
					<label for="exampleTextarea">请输入评论:</label>
					<textarea class="form-control" id="exampleTextarea" placeholder="请输入评论内容" rows="3"></textarea>
				</div>
				<button type="submit" class="btn btn-primary">提交</button>
			</form>
		</div>
	</body>
</html>

在这个例子中,我们首先创建一个<div>元素,并为其添加.form-group类。然后,在<div>元素内部,我们添加一个<label>元素,用于标识文本框的用途。接着,我们使用<textarea>标签创建文本框,并为其添加.form-control类以渲染样式。您可以根据需要调整<textarea>标签的属性,例如id、rows等,以满足特定的需求。

最后,我们还可以在表单中添加一个提交按钮,供用户提交文本框的内容。

输入框大小

可以通过在 .form-control 输入框中使用.form-control-lg和.form-control-sm类来设置输入框的大小。

以下是一个示例代码,用于创建不同大小的输入框:

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Bootstrap 实例</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
	</head>
	<body>
		<div class="container mt-3">
			<form>
				<input type="text" class="form-control form-control-lg" placeholder="大型输入控件">
				<br />
				<input type="text" class="form-control" placeholder="普通输入控件">
				<br />
				<input type="text" class="form-control form-control-sm" placeholder="小型输入控件">
			</form>
		</div>
	</body>
</html>

在这个例子中,我们创建了三个输入框。第一个输入框使用.form-control-lg类来设置为大尺寸,第二个输入框没有添加任何额外的类,因此保持默认尺寸,第三个输入框使用.form-control-sm类来设置为小尺寸。

禁用/只读表单

可以使用disabled和readonly属性来设置输入框的禁用和只读状态。

disabled属性用于禁用输入框,禁止用户对其进行任何操作。而readonly属性用于将输入框设置为只读状态,用户可以看到输入框的内容,但不能进行编辑。

以下是一个示例代码,演示如何使用disabled和readonly属性:

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Bootstrap 实例</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
	</head>
	<body>
		<div class="container mt-3">
			<form>
				<input type="text" class="form-control" placeholder="普通输入控件"><br />
				<input type="text" class="form-control" placeholder="被禁用的输入控件" disabled><br />
				<input type="text" class="form-control" placeholder="只读的输入控件" readonly>
			</form>
		</div>
	</body>
</html>

在这个例子中,第一个输入框是普通输入控件,第二个输入框使用disabled属性禁用了输入框,同时添加了.form-control类渲染样式。第三个输入框使用readonly属性将输入框设置为只读状态,并通过value属性设置了默认值。

注意,禁用和只读状态需要根据实际需求来选择。禁用状态通常用于表示用户无法与输入框进行交互,而只读状态通常用于展示信息或防止用户误操作。

纯文本输入

可以使用.form-control-plaintext类来创建一个纯文本输入框,从而删除输入框的边框和背景样式,但保留适当的外边距和内边距。

以下是一个示例代码,用于创建一个纯文本输入框:

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Bootstrap 实例</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
	</head>
	<body>
		<div class="container mt-3">
			<form>
				<input type="text" class="form-control-plaintext" placeholder="无边框的输入框">
				<input type="text" class="form-control" placeholder="正常输入框">
			</form>
		</div>
	</body>
</html>

在这个例子中,我们使用.form-control-plaintext类来设置输入框为纯文本样式,并通过value属性设置了默认值。

纯文本输入框通常用于展示静态文本内容,用户无法对其进行编辑。它们没有边框和背景样式,看起来更像是普通文本而不是输入框。

请注意,纯文本输入框不会接收用户的输入,如果需要用户可以输入内容,请使用其他类型的输入框,如文本输入框(<input type="text">)或文本区域(<textarea>)。

取色器

可以使用.form-control-color类来创建一个取色器输入框,用于选择颜色。

以下是一个示例代码,用于创建一个取色器输入框:

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Bootstrap 实例</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
	</head>
	<body>
		<div class="container mt-3">
			<form>
				<input type="color" class="form-control-color">
			</form>
		</div>
	</body>
</html>

在这个例子中,我们使用<input type="color">元素创建了一个取色器输入框,并添加了.form-control-color类来应用样式。

取色器输入框允许用户通过点击或拖动选择颜色。选定的颜色将以十六进制表示(如"#ff0000"表示红色)显示在输入框中。

请注意,取色器输入框的外观和交互方式可能因浏览器而异。在某些浏览器中,它可能显示为一个颜色选择器图标,而在其他浏览器中可能以不同的方式呈现。

相关推荐
还是大剑师兰特32 分钟前
D3的竞品有哪些,D3的优势,D3和echarts的对比
前端·javascript·echarts
王解33 分钟前
【深度解析】CSS工程化全攻略(1)
前端·css
一只小白菜~39 分钟前
web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
前端·javascript·pdf·windowopen预览pdf
方才coding44 分钟前
1小时构建Vue3知识体系之vue的生命周期函数
前端·javascript·vue.js
阿征学IT1 小时前
vue过滤器初步使用
前端·javascript·vue.js
王哲晓1 小时前
第四十五章 Vue之Vuex模块化创建(module)
前端·javascript·vue.js
丶21361 小时前
【WEB】深入理解 CORS(跨域资源共享):原理、配置与常见问题
前端·架构·web
发现你走远了1 小时前
『VUE』25. 组件事件与v-model(详细图文注释)
前端·javascript·vue.js
Mr.咕咕1 小时前
Django 搭建数据管理web——商品管理
前端·python·django
张张打怪兽1 小时前
css-50 Projects in 50 Days(3)
前端·css