bootstrap4模仿写一个百度搜索框,增加防抖和节流
时间: 2023-07-21 19:10:49 浏览: 169
好的,以下是一个使用Bootstrap4和防抖/节流技术的百度搜索框示例代码:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Bootstrap4模仿百度搜索框并增加防抖和节流</title>
<!-- 引入Bootstrap4 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
<form class="form-inline">
<div class="input-group">
<input type="text" class="form-control" placeholder="请输入关键词" id="search-input">
<div class="input-group-append">
<button type="submit" class="btn btn-primary">搜索</button>
</div>
</div>
</form>
</div>
<!-- 引入jQuery和Bootstrap4的JavaScript -->
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.slim.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script>
// 防抖函数,使用setTimeout实现
function debounce(func, delay) {
let timer = null;
return function() {
let context = this;
let args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
func.apply(context, args);
}, delay);
}
}
// 节流函数,使用时间戳实现
function throttle(func, delay) {
let prev = 0;
return function() {
let context = this;
let args = arguments;
let now = Date.now();
if (now - prev >= delay) {
func.apply(context, args);
prev = now;
}
}
}
// 获取输入框和按钮
const searchInput = document.getElementById('search-input');
const searchBtn = document.querySelector('button[type="submit"]');
// 给输入框添加防抖和节流处理函数
searchInput.addEventListener('input', debounce(throttle(function() {
console.log(searchInput.value); // 在控制台输出输入框的值
}, 500), 1000));
</script>
</body>
</html>
```
解释一下代码:
- 在头部引入了Bootstrap4的CSS样式文件。
- 在body中创建了一个container容器,并在其中创建了一个form表单。
- 在form表单中创建了一个input-group输入框组件,包含了一个输入框和一个按钮。
- 使用form-inline类,让表单变成水平排列。
- 使用mt-5类,给container容器添加了一个上边距。
- 在底部引入了jQuery和Bootstrap4的JavaScript文件。
- 创建了一个防抖函数和一个节流函数,用于延迟处理输入框的输入事件。
- 获取输入框和按钮元素,并给输入框添加了防抖和节流处理函数。
- 在防抖和节流处理函数中,将输入框的值输出到控制台,可以自行修改为实际搜索功能。
这样我们就完成了一个使用Bootstrap4和防抖/节流技术的百度搜索框示例。
阅读全文