前端vue3实现类似于百度的搜索框

时间: 2023-05-27 10:06:34 浏览: 22
以下是基于Vue3实现类似于百度的搜索框的示例代码: HTML模板: ``` <template> <div class="search-box"> <div class="search-input"> <input type="text" v-model="keyword" @input="search" /> <button @click="submit">搜索</button> </div> <ul class="search-list" v-show="showList"> <li v-for="(item, index) in searchList" :key="index" @click="selectItem(item)">{{ item }}</li> </ul> </div> </template> ``` CSS样式: ``` .search-box { position: relative; width: 400px; height: 40px; margin: 0 auto; } .search-input { position: relative; width: 100%; height: 100%; } .search-input input { width: 100%; height: 100%; border: none; outline: none; box-shadow: 0 0 3px rgba(0, 0, 0, 0.2); border-radius: 20px; padding: 0 20px; font-size: 16px; } .search-input button { position: absolute; top: 0; right: 0; width: 80px; height: 100%; background-color: #3385ff; border: none; outline: none; color: #fff; font-size: 16px; border-top-right-radius: 20px; border-bottom-right-radius: 20px; cursor: pointer; } .search-list { position: absolute; top: 40px; left: 0; width: 100%; max-height: 200px; overflow-y: auto; background-color: #fff; border: 1px solid #ccc; border-radius: 3px; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1); z-index: 99; } .search-list li { padding: 10px; cursor: pointer; } .search-list li:hover { background-color: #f2f2f2; } ``` JavaScript代码: ``` <script> import { reactive } from 'vue'; export default { setup() { const state = reactive({ keyword: '', searchList: [], showList: false, }); // 模拟搜索函数 const searchFn = () => { const list = []; for (let i = 0; i < 10; i++) { list.push(state.keyword + i); } state.searchList = list; state.showList = true; }; // 监听输入框的变化,并触发搜索函数 const search = () => { if (state.keyword.trim() === '') { state.showList = false; state.searchList = []; return; } searchFn(); }; // 提交搜索 const submit = () => { if (state.keyword.trim() === '') { return; } // TODO: 处理搜索结果 }; // 点击搜索列表项 const selectItem = (item) => { state.keyword = item; state.showList = false; }; return { keyword: state.keyword, searchList: state.searchList, showList: state.showList, search, submit, selectItem, }; }, }; </script> ``` 以上代码实现了一个简单的搜索框,包括输入框、搜索按钮和搜索结果列表。当输入框内容发生变化时,会触发搜索函数,搜索结果会显示在下拉列表中。用户可以通过点击下拉列表中的项来选择搜索关键字,也可以直接点击搜索按钮提交搜索请求。

相关推荐

Vue和Element UI可以很容易地实现类似百度搜索框的功能。首先,我们需要安装Vue和Element UI,可以通过npm或者直接引入CDN来获取相关的依赖。然后在Vue实例中引入Element UI的组件。 在我们的模板中,我们可以使用element-ui的<el-input>组件来创建搜索框。我们可以设置该组件的placeholder属性为“请输入搜索内容”,并且使用v-model指令将输入的值绑定到data中的一个变量上,比如searchInput。 然后,我们可以使用element-ui的<el-button>组件来创建一个搜索按钮,当用户点击按钮时,可以触发一个search方法。 在methods中,我们可以定义一个search方法,该方法将会使用searchInput的值来进行搜索。在这个例子中,我们可以简单地打印searchInput的值来模拟搜索操作。 最后,我们在template中将这些组件和方法结合起来,以实现类似百度搜索框的功能。 vue <template> <el-input placeholder="请输入搜索内容" v-model="searchInput" ></el-input> <el-button type="primary" @click="search">搜索</el-button> </template> <script> export default { data() { return { searchInput: '' } }, methods: { search() { console.log(this.searchInput); // 这里可以进行搜索操作,比如发送请求给后端进行搜索 } } } </script> 通过以上的代码,我们就可以在vue和Element UI中实现类似百度搜索框的功能。当用户输入搜索内容后,点击搜索按钮,就可以触发搜索操作。你可以将search方法更新为实际的搜索逻辑,并且利用searchInput的值发送请求给后端进行搜索。这样就可以实现一个真正的搜索功能。
可以通过在Vue中绑定一个点击事件来实现这个效果,具体可以按照以下步骤进行: 1. 在模板中添加一个包含搜索图标和搜索框的容器,并为搜索图标绑定一个点击事件: <template> <input type="text" v-if="showSearch" class="search-input" placeholder="输入关键词进行搜索" /> </template> 2. 在Vue组件中定义一个变量来控制搜索框的显示与隐藏,并在点击事件中切换该变量的值: <script> export default { data() { return { showSearch: false } }, methods: { toggleSearch() { this.showSearch = !this.showSearch } } } </script> 3. 在样式表中定义搜索图标和搜索框的样式,以及控制搜索框的显示与隐藏: <style> .search-container { position: relative; } .search-icon { position: absolute; top: 50%; left: 10px; transform: translateY(-50%); width: 20px; height: 20px; background-image: url('path/to/search-icon.png'); background-repeat: no-repeat; background-size: contain; cursor: pointer; } .search-input { position: absolute; top: 50%; right: 10px; transform: translateY(-50%); width: 200px; height: 30px; border: 1px solid #ccc; border-radius: 4px; padding: 0 10px; outline: none; transition: all 0.2s ease-in-out; opacity: 0; visibility: hidden; } .search-input.show { opacity: 1; visibility: visible; } </style> 这样就可以实现点击搜索图标后搜索框的显示与隐藏了。如果需要实现搜索功能,还需要在输入框中绑定一个v-model指令,并在搜索按钮上绑定一个点击事件,触发搜索功能。
很高兴为您解答。关于Vue中实现类似于ECharts调试的页面,可以通过使用Vue-ECharts组件来实现。Vue-ECharts是ECharts的Vue.js封装,可以将ECharts集成到vue.js组件中,并提供了一系列的属性、事件、方法等API接口,方便我们开发并实现ECharts的相关操作及样式控制。您可以通过以下步骤进行操作: 1、安装Vue-ECharts。使用npm安装命令:npm install vue-echarts --save 2、引入ECharts。在需要使用ECharts组件的.vue文件中,通过import引入ECharts并注册到Vue全局实例中: import ECharts from 'echarts' Vue.prototype.$echarts = ECharts 3、在.vue文件中使用ECharts组件。在模板template中,通过<template></template>标签引入ECharts组件,并将相关属性和数据传递给组件来渲染图表: <template> <v-chart :options="chartOptions"></v-chart> </template> <script> export default { data () { return { chartOptions: { // ECharts图表配置项 title: { text: '某站点访问来源', subtext: '纯属虚构', x: 'center' }, tooltip: { trigger: 'item', formatter: '{a}
{b} : {c} ({d}%)' }, legend: { orient: 'vertical', left: 'left', data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'] }, series: [ { name: '访问来源', type: 'pie', radius: '55%', center: ['50%', '60%'], data: [ { value: 335, name: '直接访问' }, { value: 310, name: '邮件营销' }, { value: 234, name: '联盟广告' }, { value: 135, name: '视频广告' }, { value: 1548, name: '搜索引擎' } ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] } } } } < script > 以上是一些简单的实现步骤,您可以根据自己的需求修改相关配置项来实现不同类型的ECharts图表调试页面。希望本回答能够帮到您。

最新推荐

vue+高德地图实现地图搜索及点击定位操作

主要介绍了vue+高德地图实现地图搜索及点击定位操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Vue 仿百度搜索功能实现代码

本文通过实例代码给大家介绍了vue仿百度搜索功能,非常不错,具有参考借鉴价值,需要的的朋友参考下吧

Vue实现百度下拉提示搜索功能

主要为大家详细介绍了Vue实现百度下拉提示搜索功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

vue组件实现可搜索下拉框扩展

主要为大家详细介绍了vue组件实现可搜索下拉框的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

VUE 3D轮播图封装实现方法

主要为大家详细介绍了VUE 3D轮播图封装实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

代码随想录最新第三版-最强八股文

这份PDF就是最强⼋股⽂! 1. C++ C++基础、C++ STL、C++泛型编程、C++11新特性、《Effective STL》 2. Java Java基础、Java内存模型、Java面向对象、Java集合体系、接口、Lambda表达式、类加载机制、内部类、代理类、Java并发、JVM、Java后端编译、Spring 3. Go defer底层原理、goroutine、select实现机制 4. 算法学习 数组、链表、回溯算法、贪心算法、动态规划、二叉树、排序算法、数据结构 5. 计算机基础 操作系统、数据库、计算机网络、设计模式、Linux、计算机系统 6. 前端学习 浏览器、JavaScript、CSS、HTML、React、VUE 7. 面经分享 字节、美团Java面、百度、京东、暑期实习...... 8. 编程常识 9. 问答精华 10.总结与经验分享 ......

基于交叉模态对应的可见-红外人脸识别及其表现评估

12046通过调整学习:基于交叉模态对应的可见-红外人脸识别Hyunjong Park*Sanghoon Lee*Junghyup Lee Bumsub Ham†延世大学电气与电子工程学院https://cvlab.yonsei.ac.kr/projects/LbA摘要我们解决的问题,可见光红外人重新识别(VI-reID),即,检索一组人的图像,由可见光或红外摄像机,在交叉模态设置。VI-reID中的两个主要挑战是跨人图像的类内变化,以及可见光和红外图像之间的跨模态假设人图像被粗略地对准,先前的方法尝试学习在不同模态上是有区别的和可概括的粗略的图像或刚性的部分级人表示然而,通常由现成的对象检测器裁剪的人物图像不一定是良好对准的,这分散了辨别性人物表示学习。在本文中,我们介绍了一种新的特征学习框架,以统一的方式解决这些问题。为此,我们建议利用密集的对应关系之间的跨模态的人的形象,年龄。这允许解决像素级中�

javascript 中字符串 变量

在 JavaScript 中,字符串变量可以通过以下方式进行定义和赋值: ```javascript // 使用单引号定义字符串变量 var str1 = 'Hello, world!'; // 使用双引号定义字符串变量 var str2 = "Hello, world!"; // 可以使用反斜杠转义特殊字符 var str3 = "It's a \"nice\" day."; // 可以使用模板字符串,使用反引号定义 var str4 = `Hello, ${name}!`; // 可以使用 String() 函数进行类型转换 var str5 = String(123); //

数据结构1800试题.pdf

你还在苦苦寻找数据结构的题目吗?这里刚刚上传了一份数据结构共1800道试题,轻松解决期末挂科的难题。不信?你下载看看,这里是纯题目,你下载了再来私信我答案。按数据结构教材分章节,每一章节都有选择题、或有判断题、填空题、算法设计题及应用题,题型丰富多样,共五种类型题目。本学期已过去一半,相信你数据结构叶已经学得差不多了,是时候拿题来练练手了,如果你考研,更需要这份1800道题来巩固自己的基础及攻克重点难点。现在下载,不早不晚,越往后拖,越到后面,你身边的人就越卷,甚至卷得达到你无法想象的程度。我也是曾经遇到过这样的人,学习,练题,就要趁现在,不然到时你都不知道要刷数据结构题好还是高数、工数、大英,或是算法题?学完理论要及时巩固知识内容才是王道!记住!!!下载了来要答案(v:zywcv1220)。

通用跨域检索的泛化能力

12056通用跨域检索:跨类和跨域的泛化2* Soka Soka酒店,Soka-马上预订;1印度理工学院,Kharagpur,2印度科学学院,班加罗尔soumava2016@gmail.com,{titird,somabiswas} @ iisc.ac.in摘要在这项工作中,我们第一次解决了通用跨域检索的问题,其中测试数据可以属于在训练过程中看不到的类或域。由于动态增加的类别数量和对每个可能的域的训练的实际约束,这需要大量的数据,所以对看不见的类别和域的泛化是重要的。为了实现这一目标,我们提出了SnMpNet(语义Neighbourhood和混合预测网络),它包括两个新的损失,以占在测试过程中遇到的看不见的类和域。具体来说,我们引入了一种新的语义邻域损失,以弥合可见和不可见类之间的知识差距,并确保潜在的空间嵌入的不可见类是语义上有意义的,相对于其相邻的类。我们还在图像级以及数据的语义级引入了基于混�