思考:

布局:

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. Mysql报错......\xE6\x80\xBB\xE7\x9B\x91' for column...

    Mysql添加表中字符报错:Incorrect string value: '\xE6\x80\xBB\xE7\x9B\x91' for column 'postName' at row 1 原因:字 ...

  2. 给第三方dll加上强命名的方法[C#]

    在VS.NET 的命名行窗口下,输入如下的代码. 1 ,生成一个KeyFile sn -k keyPair.snk 2, 得到程序集的MSIL ildasm SomeAssembly.dll /out ...

  3. Android实现换肤功能(一)

    上周有个朋友给建议说讲讲换肤吧,真巧这周公司的工作安排也有这个需求,换的地方之多之繁,让人伤神死了.正所谓磨刀不误砍柴工,先磨下刀,抽出一个工具类,写了个关于换肤的简单demo. Android中换肤 ...

  4. CV-视频分析:静态背景下的运动检测

    ref : Chapter 2  Motion Detection in Static Backgrounds.   [ Github :…… ] -------------------------- ...

  5. 关于数组中加入相同的view的试验

    随便新建一个工程,然后在控制器中粘贴如下代码 - (void)viewDidLoad { [super viewDidLoad]; UIView * view = [[UIView alloc]ini ...

  6. AES + RSA + Hash 实现 C-S 安全交互

    概述 AES 由于其执行速度快,易于硬件实现,破解难度大等优势,被广泛用于数据的加密. 既然是对称加密,那如何保证秘钥的安全传输?很容易想到用 RSA 加密秘钥.由于只能用私钥解密,而私钥不需要交互双 ...

  7. html调用摄像头的方法汇总

    1.在PC端打开摄像头的方法:(移动端不能使用) 能够实现打开摄像头并截图 <!doctype html> <html lang="en"> <hea ...

  8. 浅析C#中 ConcurrentDictionary的实现

    简单画了一张图 (灵魂画手 →_→) 如图 ConcurrentDictionary 其中有个tables 对象主要存储,而这个 tables 是一个 很多区块的 数组 ,每个区块 又是一个node的 ...

  9. 实验c语言不同类型的指针互用(不推荐只是学习用)

    #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, world\n"); ]; i ...

  10. EularProject 32: 数字1-9排列构成乘法等式

    Pandigital products Problem 32 We shall say that an n-digit number is pandigital if it makes use of ...