思考:

布局:

1,flex元素上下左右居中,内部元素横向排列;

div{
/* 100vh = viewport height*/
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
}

2,input输入框与input type=“button”按钮对齐,给属性值vertical-align:top;

3,input输入框去除默认样式 {border:none;outline:none;}

js原理解析,理解注释

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模拟360搜索</title>
<style>
body{padding:0;margin:0;overflow:hidden;}
ul,li{margin:0;padding:0;}
ul{border:1px solid #ccc;border-top:0;width:522px;margin-left:-110px;}
li{list-style:none;padding:5px;text-align:left;text-indent:10px;cursor:pointer;}
.main{
/* 100vh = viewport height*/
display: flex;
justify-content: center;
align-items: center;
flex-direction: row;
}
.skin-search-input{
width:500px;
background: #fff;
height: 34px;
padding: 4px 10px 4px 12px;
vertical-align: top;
border: 1px solid #ccc;
}
.keyword{
background: #fff;
border: none;
color: #333;
font-size: 16px;
height: 30px;
line-height: 30px\9;
margin-top: 3px;
outline: none;
width:100%;
}
input[type=button]{
-webkit-appearance: none;
border: 0;
cursor: pointer;
font-size: 18px;
height: 44px;
outline: none;
vertical-align: top;
width: 110px;
background: #19b955;
color: #fff;
}
</style>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
</head>
<body> <div class="main">
<div class="skin-search-input">
<input type="text" class="keyword">
</div>
<input type="button" value="搜一下">
</div>
<div align="center" class="message" style="display:none;">
<ul>
</ul>
</div> <script>
//如果页面加载直接给li元素绑定事件,你是获取不到li元素的。
//解决方案,可以用jq给我们提供的事件委托
$(".message>ul").on("mouseover","li",function () {
this.style.background = "#efefef";
});
$(".message>ul").on("mouseout","li",function () {
this.style.background = "white";
}); function getInfo(data) {//回调函数
//解析数据,然后把message里面的ul里面的li元素的数据替换
var results = data.result;
var i;
document.querySelector(".message>ul").innerHTML = "";
for(i=0;i<results.length;i++){
var li = document.createElement("li");
li.innerHTML = results[i].word;
console.log(li);
document.querySelector(".message>ul").appendChild(li);
}
} //添加键盘事件
document.querySelector(".keyword").onkeyup = function () {
var keyword = this.value; //如果在输入的时候有空格的话,这里需要做判断
if(keyword.length>0){
//我根据这个关键字去获取数据,获取到数据之后
//加载到列表里
//显示
document.querySelector(".message").style.display = "block";
//把关键字给360的这个搜索接口,让它来给我结果 //使用script标签去发送请求
var tag = document.createElement("script");
tag.src = "https://sug.so.360.cn/suggest?callback=getInfo&encodein=utf-8&encodeout=utf-8&format=json&fields=word,obdata&word="+keyword;
document.body.appendChild(tag);
}else{
document.querySelector(".message").style.display = "none";
}
}
</script>
</body>
</html>

script跨域之360搜索的更多相关文章

  1. jsonp跨域请求360数据乱码解决办法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  2. vue中的跨域问题

    https://segmentfault.com/a/1190000011072725(原文)   使用vue-axios和vue-resource解决vue中调用网易云接口跨域的问题 注(api很重 ...

  3. ajax 跨域的问题 用js绕过跨域

    之前遇到一个ajax跨域的问题,搜索了很多方法才找到解决方案,也怪自己  菜鸟一个 这些经验还是要慢慢来的 尤其是最近来回顾一下 竟然发现自己忘记了  所以还是把它记下来啊 免得到时候忘记 这个方法原 ...

  4. JS跨域

    //2011-7-25 (function(){ //闭包 function load_script(xyUrl, callback){ var head = document.getElements ...

  5. ajax跨域jsonp

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...

  6. jQuery的jsonp跨域是这么回事.

    实现跨域请求的有iframe,img,script中的src属性.那么jquery是如何解决跨域请求的呢? 一:项目jsonp2中有个app.js文件,代码如下: function app(json) ...

  7. jsonp跨域请求学习笔记

    前言 ajax,用苍白的话赞扬:很好. 我们可以使用ajax实现异步获取数据,减少服务器运算时间,大大地改善用户体验:我们可以使用ajax实现小系统组合大系统:我们还可以使用ajax实现前端的优化.( ...

  8. ajax跨域请求学习笔记

    原文:ajax跨域请求学习笔记 前言 ajax,用苍白的话赞扬:很好. 我们可以使用ajax实现异步获取数据,减少服务器运算时间,大大地改善用户体验:我们可以使用ajax实现小系统组合大系统:我们还可 ...

  9. sonp跨域请求

    sonp跨域请求学习笔记   前言 ajax,用苍白的话赞扬:很好. 我们可以使用ajax实现异步获取数据,减少服务器运算时间,大大地改善用户体验:我们可以使用ajax实现小系统组合大系统:我们还可以 ...

随机推荐

  1. CentOS修复grub

    grub启动项损坏无法进入系统. 进入grub模式(可借助安排盘rescue后在shell中输入grub). 一:     通过下面三个命令中的一个.找到正确的grub位置.     1. find ...

  2. C 语言 mmap

    /* *@author cody *@date 2014-08-12 *@description */ /* #include <sys/mman.h> void *mmap(void * ...

  3. Memcache集群安装与配置

    Memcache集群的安装和配置 :http://blog.163.com/asd_wll/blog/static/210310402013084405481/

  4. Java并发编程(三):并发模拟(工具和Java代码介绍)

    并发模拟工具介绍 ① Postman : Http请求模拟工具 从图上我们可以看出,Postman模拟并发其实是分两步进行操作的.第一步:左边的窗口,在窗口中设置相关接口以及参数,点击运行进行第二步. ...

  5. uva 10808 - Rational Resistors(基尔霍夫定律+高斯消元)

    题目链接:uva 10808 - Rational Resistors 题目大意:给出一个博阿含n个节点,m条导线的电阻网络,求节点a和b之间的等效电阻. 解题思路:基尔霍夫定律,不论什么一点的电流向 ...

  6. @property (nonatomic,retain)中的nonatom和retain的意思

    转自:http://yuanshoupeng2005.blog.163.com/blog/static/68235027201235113952886/ http://baike.baidu.com/ ...

  7. 安装Eclipse插件长时间卡在 calculating requirements and dependencies

    把"Contact all update sites during install to find required software"前面的勾去掉,然后点击下一步,这样之后问题迎 ...

  8. redis命令_ZADD

    ZADD key score member [[score member] [score member] ...] 将一个或多个 member 元素及其 score 值加入到有序集 key 当中. 如 ...

  9. Unity—JsonFx序列化场景

    场景数据类: /// <summary> /// 关卡数据 /// </summary> public class LevelData {     //关卡名称     pub ...

  10. 详解C#中通过委托来实现回调函数功能的方法

    委托:类型安全的指向函数的指针 使用步骤 1:声明一个委托 delegate string DelString(string s) 2:定义一个委托变量 DelString del = new Del ...