思考:

布局:

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. 【LeetCode-面试算法经典-Java实现】【101-Symmetric Tree(对称树)】

    [101-Symmetric Tree(对称树)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a binary tree, check whether ...

  2. (转)No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VA 解决办法

    c3dEngine在iphone6模拟器下运行报错No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, V ...

  3. JUC组件扩展(二)-JAVA并行框架Fork/Join(一):简介和代码示例

    一.背景 虽然目前处理器核心数已经发展到很大数目,但是按任务并发处理并不能完全充分的利用处理器资源,因为一般的应用程序没有那么多的并发处理任务.基于这种现状,考虑把一个任务拆分成多个单元,每个单元分别 ...

  4. 音频采样中left-or right-justified(左对齐,右对齐), I2S时钟关系

    音频采样中left-or right-justified(左对齐,右对齐), I2S时钟关系 原创 2014年02月11日 13:56:51 4951 0 0 刚刚过完春节,受假期综合症影响脑袋有点发 ...

  5. Reveal使用教程

    Reveal使用教程 Reveal是用于透视程序整体结构的一个软件,软件收费89美刀,试用期30天,不过好在有破解版,无需担心花钱的问题​ 在然后呢,软件在哪下,可以在我的github上下载到破解版本 ...

  6. .htaccess中的apache rewrite规则写法详解

    .htaccess中的apache rewrite写法: 1 RewriteEngine On 2 RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ 3 Rewr ...

  7. getCanonicalPath getAbsolutePath区别

    1.在winows环境下它们的区别是  getCanonicalPath是标准路径,没有特殊字符,getAbsolutePath是有特殊字符的 2.在AIX系统中它们的区别: 首先编译:javac ...

  8. Oracle面试题目及解答

    这里的回答并不是十分全面,这些问题可以通过多个角度来进行解释,也许你不必在面试过程中给出完全详尽的答案,只需要通过你的解答使面试考官了解你对ORACLE概念的熟悉程度. 1. 解释冷备份和热备份的不同 ...

  9. 2. Retrofit2 -- Basic Authentication on Android

    2. Retrofit2 -- Basic Authentication on Android android Retrofit tutorial 整合基本的认证 Retrofit 1.9 Retro ...

  10. Linux平台使用Freetds连接SQL Server服务器,兼容PHP和Laravel

    本文在CentOS 7 64bit和Laravel 4.2环境测试通过.   1.下载源码并解压缩 wget ftp://ftp.freetds.org/pub/freetds/stable/free ...