HTML5 标签输入框(Tag Input)详解

HTML5 标签输入框(Tag Input)详解

标签输入框(Tag Input)是一种用户界面元素,允许用户输入多个标签或关键词,通常用于表单、搜索框或内容分类等场景。以下是实现标签输入框的详细讲解。

1. 任务概述

标签输入框允许用户动态添加和删除标签,提供更好的用户体验,特别是在需要输入多个项的情况下。

2. 代码结构

以下是一个简单的标签输入框实现示例:

html 复制代码
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>标签输入框示例</title>
    <style>
        /* CSS样式在此 */
    </style>
</head>
<body>

<h2>标签输入框(Tag Input)示例</h2>

<div class="tag-input-container">
    <input type="text" id="tag-input" placeholder="输入标签并按回车">
    <div class="tags" id="tags"></div>
</div>

<script>
    // JavaScript事件在此
</script>

</body>
</html>
3. HTML部分
html 复制代码
<div class="tag-input-container">
    <input type="text" id="tag-input" placeholder="输入标签并按回车">
    <div class="tags" id="tags"></div>
</div>
  • <div class="tag-input-container">: 包裹标签输入框和已输入标签的容器。
  • <input type="text" id="tag-input">: 用户输入标签的文本框。
  • <div class="tags" id="tags">: 用于显示已输入的标签。
4. CSS样式
css 复制代码
<style>
    .tag-input-container {
        border: 1px solid #ccc; /* 边框 */
        padding: 10px; /* 内边距 */
        border-radius: 5px; /* 圆角 */
        display: flex; /* 使用flex布局 */
        flex-wrap: wrap; /* 允许换行 */
    }

    #tag-input {
        border: none; /* 隐藏边框 */
        outline: none; /* 去掉默认焦点样式 */
        flex: 1; /* 输入框占据剩余空间 */
        min-width: 200px; /* 最小宽度 */
        padding: 5px; /* 内边距 */
    }

    .tags {
        display: flex; /* 标签容器使用flex布局 */
        flex-wrap: wrap; /* 允许换行 */
        margin-bottom: 5px; /* 底部间距 */
    }

    .tag {
        background-color: #2196F3; /* 标签背景色 */
        color: white; /* 标签文字颜色 */
        padding: 5px 10px; /* 标签内边距 */
        border-radius: 3px; /* 标签圆角 */
        margin: 5px; /* 标签间距 */
        display: flex; /* 标签使用flex布局 */
        align-items: center; /* 垂直居中 */
    }

    .tag .remove {
        margin-left: 5px; /* 删除按钮左间距 */
        cursor: pointer; /* 鼠标悬停变为手指 */
    }
</style>
  • .tag-input-container: 设置输入框的外观,包括边框、内边距和布局。
  • #tag-input: 设置输入框的样式,隐藏边框和焦点样式,并占用剩余空间。
  • .tags: 用于存放已输入标签的容器,允许标签换行。
  • .tag: 定义标签的样式,包括背景色、文字颜色和间距。
  • .remove: 定义删除按钮的样式。
5. JavaScript部分
javascript 复制代码
<script>
    const tagInput = document.getElementById('tag-input');
    const tagsContainer = document.getElementById('tags');

    tagInput.addEventListener('keypress', function(event) {
        if (event.key === 'Enter' && tagInput.value.trim() !== '') {
            const tagValue = tagInput.value.trim();
            addTag(tagValue);
            tagInput.value = ''; // 清空输入框
        }
    });

    function addTag(tag) {
        const tagElement = document.createElement('div');
        tagElement.className = 'tag';
        tagElement.textContent = tag;

        const removeButton = document.createElement('span');
        removeButton.className = 'remove';
        removeButton.textContent = '×'; // 删除符号
        removeButton.onclick = function() {
            tagsContainer.removeChild(tagElement); // 删除标签
        };

        tagElement.appendChild(removeButton);
        tagsContainer.appendChild(tagElement); // 添加标签到容器
    }
</script>
  • 获取元素 : 使用document.getElementById获取输入框和标签容器。
  • 事件监听 : 监听输入框的keypress事件,当用户按下回车键时执行回调。
  • 标签添加 :
    • 检查输入是否为空。
    • 调用addTag函数添加标签。
    • 清空输入框。
  • addTag函数 :
    • 创建一个新的标签元素和删除按钮。
    • 将删除按钮的点击事件绑定到标签元素的删除操作。
    • 将标签元素添加到标签容器中。
6. 整体效果
  • 用户可以在输入框中输入标签,按下回车后,标签会被添加到标签容器中。
  • 每个标签右侧都有一个删除按钮,点击后可以删除相应的标签。

总结

通过以上代码和讲解,你可以实现一个简单而功能强大的标签输入框(Tag Input)。这个控件不仅允许用户输入多个标签,还提供了删除功能,提升了用户体验。你可以根据需要进一步扩展和美化该控件。

相关推荐
jingling5555 小时前
vue | 在 Vue 3 项目中集成高德地图(AMap)
前端·javascript·vue.js
油丶酸萝卜别吃5 小时前
Vue3 中如何在 setup 语法糖下,通过 Layer 弹窗组件弹出自定义 Vue 组件?
前端·vue.js·arcgis
J***Q29212 小时前
Vue数据可视化
前端·vue.js·信息可视化
ttod_qzstudio13 小时前
深入理解 Vue 3 的 h 函数:构建动态 UI 的利器
前端·vue.js
_大龄13 小时前
前端解析excel
前端·excel
一叶茶14 小时前
移动端平板打开的三种模式。
前端·javascript
前端大卫14 小时前
一文搞懂 Webpack 分包:async、initial 与 all 的区别【附源码】
前端
Want59514 小时前
HTML音乐圣诞树
前端·html
老前端的功夫15 小时前
前端浏览器缓存深度解析:从网络请求到极致性能优化
前端·javascript·网络·缓存·性能优化
Running_slave15 小时前
你应该了解的TCP滑窗
前端·网络协议·tcp/ip