CSDN可以这样为自己的文章选择标签:

自己实现的效果为:

输入想要的标签,然后回车就可以生成标签,并且自动聚焦

可以删除标签

代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<style>
.tag {
display: flex;
align-items: center;
flex-flow: row wrap;
}
.tag .tag-items {
display: flex;
align-items: center;
flex-flow: row wrap;
list-style: none;
margin: 0rem;
padding: 0rem;
}
.tag .tag-items .tag-item {
background: rgba(0, 136, 255, 0.2);
border: 1px solid #0099ff;
border-radius: 0.25rem;
cursor: default;
font-size: 0.875rem;
line-height: 2rem;
margin: 0.5rem 1rem 0.5rem 0rem;
padding: 0rem 0.5rem;
}
.tag .tag-items .tag-item i {
color: #ff0000;
cursor: pointer;
font-size: 0.75rem;
font-style: normal;
margin: 0rem 0rem 0rem 0.25rem;
padding: 0rem 0.25rem;
}
.tag .tag-items .tag-item i:hover {
background: #ffffff;
}
.tag .tag-input {
margin: 0.5rem 1rem 0.5rem 0rem;
}
</style>
</head>
<body>
<div class="tag">
<ul class="tag-items">
<li class="tag-item">
<span>Tag</span>
<i class="tag-item-del">X</i>
<input type="hidden" name="tags" value="Tag">
</li>
</ul>
<input type="text" placeholder="标签" class="tag-input">
</div>
<script>
let tags = document.querySelectorAll('.tag');
tags.forEach((tag) => {
tag.addEventListener('click', (e) => {
let del = e.target.closest('.tag-item-del');
if (del !== null) {
del.closest('.tag-item').remove();
}
});
tag.addEventListener('keydown', (e) => {
if (
e.code === 'Enter' &&
e.target.classList.contains('tag-input') &&
e.target.value.length > 0
) {
let input = e.target;
let del = document.createElement('i');
del.classList.add('tag-item-del');
del.textContent = 'x';
let span = document.createElement('span');
span.textContent = input.value;
let hidden = document.createElement('input');
hidden.setAttribute('type', 'hidden');
hidden.setAttribute('name', 'tags');
hidden.setAttribute('value', input.value);
let item = document.createElement('li');
item.appendChild(span);
item.appendChild(del);
item.appendChild(hidden);
item.classList.add('tag-item');
let items = e.target.closest('.tag').querySelector('.tag-items');
items.appendChild(item);
input.value = '';
}
});
});
</script>
</body>
</html>
也可以生成随机的彩色的标签:
这里用到了bootstrap的一些样式,所以需要引入bootstrap的css

可以在生成的时候加上这个效果


代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Generator_tags</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
</head>
<body>
<div class="d-grid gap-2 w-50 m-auto">
<button class="btn btn-primary mt-4" type="button" id="button">Button</button>
</div>
<div id="tags" class="mt-5"></div>
</body>
<script>
var button = document.getElementById('button');
let tags = document.getElementById('tags');
var Arr = ["btn-outline-primary", "btn-outline-secondary", "btn-outline-success",
"btn-outline-danger", "btn-outline-warning", "btn-outline-info",
"btn-outline-light", "btn-outline-dark"
];
button.addEventListener('click', () => {
var n = Math.floor(Math.random() * Arr.length);
console.log(Math.random());
console.log(n);
var color = Arr[n];
var tag = document.createElement('button');
tag.textContent = color;
tag.setAttribute('class', 'btn m-1');
tag.classList.add(color);
tags.appendChild(tag);
console.log(color)
})
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js " integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf " crossorigin="anonymous "></script>
</html>