基于Vue.js 2.0实现百度搜索框效果


Posted in Javascript onDecember 28, 2020

使用Vue.js 2.0 模仿百度搜索框效果,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=2.0, maximum-scale=1.0, minimum-scale=1.0">
 <title>Vue模拟百度搜索</title>
 <style type="text/css">
 body, html{
 padding: 0;
 margin: 0;
 }
 #box{
 margin-top: 80px;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: center;
 }
 .input{
 width: 500px;
 height: 30px;
 text-indent: 4px;
 }
 .baidu input{
 height: 30px;
 cursor: pointer;
 color: #fff;
 letter-spacing: 1px;
 background: #3385ff;
 border: 1px solid #2d78f4;
 }
 ul{
 padding: 0;
 margin-top: 6px;
 }
 li{
 list-style: none;
 margin: 4px;
 }
 li:hover{
 background: #ccc;
 }
 .bgcolor {
 background: #ccc;
 }
 </style>
 <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
 <script src="https://cdn.bootcss.com/vue-resource/1.3.1/vue-resource.min.js"></script>
 <script type="text/javascript">
 window.onload = function() {
 new Vue({
  el: '#box',
  data: {
  inputText: '',
  text: '',
  nowIndex: -1,
  result: []
  },
  methods: {
  show (ev) {
   if (ev.keyCode == 38 || ev.keyCode == 40) {
   if (this.nowIndex < -1){
    return;
   }
   if (this.nowIndex != this.result.length && this.nowIndex != -1) {
    this.inputText = this.result[this.nowIndex];
   }
   return;
   }
   if (ev.keyCode == 13) {
   window.open('https://www.baidu.com/s?wd=' + this.inputText, '_blank');
   this.inputText = '';
   }
   this.text = this.inputText;
   this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su', {
   params: {
    wd: this.inputText
   },
   jsonp: 'cb'
   }).then(res => {
   this.result = res.data.s;
   })
  },
  goto () {
   window.open('https://www.baidu.com/s?wd=' + this.inputText, '_blank');
   this.inputText = '';
  },
  gotoItem(item) {
   window.open('https://www.baidu.com/s?wd=' + item, '_blank');
   this.inputText = '';
  },
  down () {
   this.nowIndex++;
   if (this.nowIndex == this.result.length) {
   this.nowIndex = -1;
   this.inputText = this.text;
   }
  },
  up () {
   this.nowIndex--;
   if (this.nowIndex < -1){
   this.nowIndex = -1;
   return;
   }
   if (this.nowIndex == -1) {
   this.nowIndex = this.result.length;
   this.inputText = this.text;
   }
  }
  }
 });
 }
 </script>
</head>
 
<body>
 <div id="box">
 <img src="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png" width="270" height="129">
 <div>
  <div>
  <input 
   type="text" 
   class="input" 
   placeholder="请输入搜索内容 " 
   v-model='inputText' 
   @keyup='show($event)' 
   @keydown.down='down()' 
   @keydown.up.prevent='up()'
  >
  <span class="baidu" @click="goto()">
   <input type="submit" value="百度一下" >
  </span>
  </div>
  
  <ul>
  <li v-for="(item, index) in result" :class='{bgcolor: index==nowIndex}' @click="gotoItem(item)">
   {{item}}
  </li>
  </ul>
 </div>

 </div>
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
自己整理的一个javascript日期处理函数
Oct 16 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
Apr 27 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 Javascript
javascript常用函数归纳整理
Oct 31 Javascript
原生js的RSA和AES加密解密算法
Oct 08 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
js插件实现图片滑动验证码
Sep 29 Javascript
vue.js实现只弹一次弹框
Jan 29 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
我所理解的JavaScript中的this指向
Sep 04 Javascript
JavaScript闭包的简单应用
Sep 01 #Javascript
写给vue新手们的vue渲染页面教程
Sep 01 #Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 #Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 #Javascript
JavaScript中数组常见操作技巧
Sep 01 #Javascript
js禁止浏览器页面后退功能的实例(推荐)
Sep 01 #Javascript
使用JS和canvas实现gif动图的停止和播放代码
Sep 01 #Javascript
You might like
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
js left,right,mid函数
2008/06/10 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
$.format,jquery.format 使用说明
2011/07/13 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
vue监听用户输入和点击功能
2019/09/27 Javascript
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
python else语句在循环中的运用详解
2020/07/06 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
结构工程个人自荐信范文
2013/11/30 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
美食节策划方案
2014/05/26 职场文书
拓展策划方案
2014/06/03 职场文书
大学生毕业求职信
2014/06/12 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书