📌  相关文章
📜  如何在 HTML 输入文本字段中放置响应式清除按钮?(1)

📅  最后修改于: 2023-12-03 15:24:11.929000             🧑  作者: Mango

在 HTML 输入文本字段中放置响应式清除按钮

在HTML表单中,我们常常需要为文本字段添加清除按钮,以方便用户在需要时快速清除输入框中的内容。在本文中,我们将介绍如何使用 HTML 和 CSS 来实现一个响应式的清除按钮,使其在不同设备上都能够得到良好的显示效果。

代码实现

HTML 输入文本字段中的清除按钮可以通过在输入框中使用伪类 ::after 来实现,同时使用 JavaScript 来触发清除事件。下面是一个示例代码,可以直接复制到你的 HTML 文件中进行测试:

<!DOCTYPE html>
<html>
<head>
	<title>输入框清除按钮</title>
	<style>
		/* 设置输入框样式 */
		input {
			padding: 10px;
			border: 2px solid #ccc;
			border-radius: 20px;
			font-size: 16px;
			transition: border .3s ease;
		}
		/* 设置输入框聚焦状态样式 */
		input:focus {
			border-color: dodgerblue;
			box-shadow: 0 0 5px rgba(30, 144, 255, .5);
		}
		/* 设置清除按钮样式 */
		input::after {
			content: "\00d7"; /* 用实体编码表示 X 字符 */
			position: absolute;
			top: 50%;
			right: 10px;
			transform: translateY(-50%);
			color: #aaa;
			font-size: 14px;
			cursor: pointer;
			opacity: 0;
			transition: opacity .3s ease;
		}
		/* 设置鼠标悬停时清除按钮的颜色 */
		input:hover::after {
			color: #888;
		}
		/* 设置输入框有内容时清除按钮的透明度和显示 */
		input:not(:placeholder-shown)::after {
			opacity: 1;
		}
	</style>
</head>
<body>
	<!-- 在 input 输入框中添加 type="text",并设置 placeholder 占位符 -->
	<input type="text" placeholder="请输入内容">
	<!-- 使用 JavaScript 来触发清除事件 -->
	<script>
		// 找到所有 input 输入框
		var inputs = document.getElementsByTagName('input');
		// 遍历每个 input 输入框
		for (var i = 0; i < inputs.length; i++) {
			// 如果该输入框的类型是文本框
			if (inputs[i].type == 'text') {
				// 给输入框中的清除按钮添加单击事件
				inputs[i].addEventListener('click', function() {
					// 清空输入框的内容
					this.value = '';
				});
			}
		}
	</script>
</body>
</html>
代码说明

上述代码中,我们首先定义了一个 input 标签,设置其样式,并添加了一个伪类 ::after 来实现清除按钮。按钮样式的具体设置如下:

input::after {
	content: "\00d7"; /* 用实体编码表示 X 字符 */
	position: absolute; /* 将按钮定位 */
	top: 50%; /* 将按钮垂直居中 */
	right: 10px; /* 将按钮定位到输入框的右边 */
	transform: translateY(-50%); /* 使按钮垂直居中 */
	color: #aaa; /* 按钮的默认颜色 */
	font-size: 14px; /* 按钮的字体大小 */
	cursor: pointer; /* 鼠标移动到按钮时显示手形光标 */
	opacity: 0; /* 初始时按钮不可见 */
	transition: opacity .3s ease; /* 使用渐变效果过渡按钮的透明度 */
}

上述代码中使用了 opacity 属性来控制清除按钮是否显示,同时使用了 CSS 过渡效果来实现透明度的渐变过渡效果。

接下来,我们使用 JavaScript 来实现清除按钮的单击事件。首先,我们需要找到所有的 input 输入框,并遍历每个输入框。如果当前输入框的类型为文本框,则为其中的清除按钮添加单击事件。在单击事件中,我们清空输入框的内容,即可实现清除功能。

// 找到所有 input 输入框
var inputs = document.getElementsByTagName('input');
// 遍历每个 input 输入框
for (var i = 0; i < inputs.length; i++) {
	// 如果该输入框的类型是文本框
	if (inputs[i].type == 'text') {
		// 给输入框中的清除按钮添加单击事件
		inputs[i].addEventListener('click', function() {
			// 清空输入框的内容
			this.value = '';
		});
	}
}
结束语

通过本文的介绍,您已经了解了如何在 HTML 输入文本字段中放置响应式清除按钮。通过使用 HTML 和 CSS 来实现按钮样式,再使用 JavaScript 来控制清除事件,即可轻松地为您的输入框添加清除按钮,提高用户体验。