前端面试题目汇总
来源:互联网 发布:学霸君答疑知乎 编辑:程序博客网 时间:2024/05/17 03:38
2017/12/14
1. HTML语义化
根据内容的结构化,选择合适的标签,便于开发者阅读和写出优雅的代码,同时让浏览器的爬虫能更好的解析。
- 在没有CSS时,能让页面呈现更好的内容结构和代码结构
- 用户体验
- 有利于SEO和搜索引擎建立良好的沟通,有助于爬虫抓取更多的有效信息,爬虫依赖于标签确定上下文和关键字的权重。
- 方便其他设备解析
- 便于团队开发和维护,语义化更有可读性。
2.css布局
1)单列布局
inline-block和text-align实现
.parent{ text-align: center;}.child{ display: inline-block;}
优点:兼容性好
不足:需要同时设置父元素和子元素margin:0 auto;实现
.child{ margin:0 auto; width: 200px; }
优点:兼容性好
table实现
.child{ display: table; margin:0 auto; }
优点:只需要对自身进行设置
不足:IE6,7需要调整结构绝对定位实现
.parent{ position: relative; }.child{position: absolute;left: 50%;transform:translate(-50%);}
不足:兼容差IE9以上可用
- 使用flex布局实现
.parent{ display: flex; justify-content: center; }
.parent{ display: flex; } .child{ margin:0 auto; }
垂直居中
- 使用绝对定位实现
.parent{ position: relative; height: 200px; width: 100px; background-color: green; }.child{ position: absolute; top:50%; transform:translate(0,-50%);}
- flex布局实现
.parent{ display: flex; align-items: center; }
水平垂直全部居中
- 绝对定位实现
.parent{ position: relative; width: 200px; height: 200px; background-color: green; }.child{ position: absolute; top:50%; left:50%; transform:translate(-50%,-50%);}
- flex布局实现
.parent{ width: 200px; height: 200px; background-color: green; display: flex; justify-content:center; align-items: center; }
2)多列布局
左列定宽,右列自适应
- 利用float+margin实现
.left{ float: left; width: 100px; height: 100px; background-color: pink; }.right{ margin-left: 100px;}
- 利用float+margin(fix)实现
.left{ float: left; width: 100px; height: 100px; background-color: red; }.right-fix{ width: 100%; margin-left: -100px; float: right;}.right{ margin-left: 100px;}
- 利用float+overflow实现
.left{ width: 100px; height: 100px; background-color: pink; float: left; }.right{ overflow: hidden;}
- 使用table实现
.parent{ display: table; table-layout: fixed; width: 100%; }.left{ width: 100px;}.right,.left{ display: table-cell;}
- 使用flex实现
.parent{ display: flex; }.left{ width: 100px;}.right{ flex:1;}
2017/12/18
3、清除浮动的方式
文章转载于:http://www.jianshu.com/p/09bd5873bed4
浮动元素会脱离文档流向左或向右浮动,直到碰到父元素或者另一个浮动元素。浮动不会影响普通元素的布局。浮动可以设置宽高,并且一行能够多个,是介于block和inline之间的存在。
浮动元素会导致父元素坍塌
文章转载于:// css.box-wrapper { border: 5px solid red;}.box-wrapper .box { float: left; width: 100px; height: 100px; margin: 20px; background-color: green;}// html<div class="box-wrapper"> <div class="box"></div> <div class="box"></div> <div class="box"></div></div>
浮动元素脱离了文档流,并不占据文档流的位置,自然父元素也就不能被撑开。
- clear清除浮动
clear属性不允许被清除浮动的元素的左右或右边挨着浮动元素,底层原理是在被清除浮动的元素上边或者下边添加足够的清除空间。
<div class="box-wrapper"> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div style="clear:both;"></div></div>
clear清除浮动的最佳实践方案
// 现代浏览器clearfix方案,不支持IE6/7.clearfix:after { display: table; content: " "; clear: both;}// 全浏览器通用的clearfix方案// 引入了zoom以支持IE6/7.clearfix:after { display: table; content: " "; clear: both;}.clearfix{ *zoom: 1;}// 全浏览器通用的clearfix方案【推荐】// 引入了zoom以支持IE6/7// 同时加入:before以解决现代浏览器上边距折叠的问题.clearfix:before,.clearfix:after { display: table; content: " ";}.clearfix:after { clear: both;}.clearfix{ *zoom: 1;}
- BFC清除浮动
BFC全称是块状格式化上下文,它是按照块级盒子布局的,BFC容器是一个隔离的容器,和其它元素互不干扰,可以用触发两个元素的BFC来解决垂直边距折叠问题。BFC可以包含浮动。
BFC的触发方式:
我们可以给父元素添加以下属性来触发BFC:
✦ float 为 left | right
✦ overflow 为 hidden | auto | scorll
✦ display 为 table-cell | table-caption | inline-block | flex | inline-flex
✦ position 为 absolute | fixed
2017/12/19
4、JSON和JSONP
转载来源:https://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html
- JSON是一种基于文本的数据交换方式,优点如下:
1、基于纯文本,跨平台传递及其简单
2、JavaScript原生支持,后台语言几乎全部支持
3、轻量级数据格式,占用字符数量极少,特别适合互联网传递
4、可读性较强,虽然比不上XML那么一目了然,但是在合理的一次缩进之后还是很容易识别的
5、容易编写和解析
JSON实例:
// 描述一个人var person = { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true}// 获取这个人的信息var personAge = person.Age;// 描述几个人var members = [ { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true }, { "Name": "John", "Age": 20, "Company": "Oracle", "Engineer": false }, { "Name": "Henry", "Age": 45, "Company": "Microsoft", "Engineer": false }]// 读取其中John的公司名称var johnsCompany = members[1].Company;// 描述一次会议var conference = { "Conference": "Future Marketing", "Date": "2012-6-1", "Address": "Beijing", "Members": [ { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true }, { "Name": "John", "Age": 20, "Company": "Oracle", "Engineer": false }, { "Name": "Henry", "Age": 45, "Company": "Microsoft", "Engineer": false } ]}// 读取参会者Henry是否工程师var henryIsAnEngineer = conference.Members[2].Engineer;
- JSONP
原理是:动态插入script标签,通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。
由于同源策略的限制,XMLHttpRequest值允许请求当前源的资源,为了实现跨域请求,当前阶段如果想通过纯web端跨域访问数据可以通过script标签实现,然后在服务器端输出JSON数据并执行回调函数,从而解决了跨域的数据请求。该协议的要点就是允许用户传递一个callback参数给服务器,然后服务器端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来处理返回数据。
优点是兼容性好,简单易用,支持与浏览器与服务器双向通信。缺点是只支持GET请求。
<script type="text/javascript"> // 得到航班信息查询结果后的回调函数 var flightHandler = function(data){ alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。'); }; // 提供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码) var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler"; // 创建script标签,设置其属性 var script = document.createElement('script'); script.setAttribute('src', url); // 把script标签加入head,此时调用开始 document.getElementsByTagName('head')[0].appendChild(script); </script>
不再直接把远程js文件写死,而是编码实现动态查询,而这也正是jsonp客户端实现的核心部分,本例中的重点也就在于如何完成jsonp调用的全过程。我们看到调用的url中传递了一个code参数,告诉服务器我要查的是CA1998次航班的信息,而callback参数则告诉服务器,我的本地回调函数叫做flightHandler,所以请把查询结果传入这个函数中进行调用。OK,服务器很聪明,这个叫做flightResult.aspx的页面生成了一段这样的代码提供给jsonp.html
flightHandler({ "code": "CA1998", "price": 1780, "tickets": 5});
- 前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目汇总
- Web前端面试题目及答案汇总
- Web 前端面试题目及答案汇总
- Web前端面试题目及答案汇总
- 2016年Web前端面试题目汇总
- Web前端面试题目及答案汇总
- Web前端面试题目记答案汇总
- 整型和浮点型在内存中存储方式
- 数据结构-排序
- 备用43
- GIT使用笔记
- bash中的一些补漏
- 前端面试题目汇总
- 江湖救急!!!VS2015工程中引用第三方库函数出错:LINK1120 无法解释外部命令
- 备用809
- Educational Codeforces Round 34 (Rated for Div. 2) E. Swapping Characters(暴力)
- C++语法之多态
- 杭电ACM OJ 1043 Eight 八数码 8种方法 花式解决
- 正则表达式
- Idea 简易搭建dubbo+zookeeper分布式框架
- POJ-1469 COURSES(二分图最大匹配)