张蕾的技术博客Web前端之路让前端飞

面试阿里、网易、滴滴前端碰到的问题2

2017-06-12  本文已影响955人  cd72c1240b33

继续 上一节:面试阿里、网易、滴滴前端碰到的问题1: http://www.jianshu.com/p/e593fbb36ab1

CSS

** 对栅格的理解**
一个栅格布局需要3部分组成——容器(container),行(row),列(column,也可称为栅),例如bootstrap中就包含了这三部分

<div class="container-fluid">
  <div class="row">
          <div class="col-md-8">.col-md-8</div>
        <div class="col-md-4">.col-md-4</div>
  </div>
</div>

.col-xs-  无论屏幕宽度如何,单元格都在一行,宽度按照百分比设置;试用于手机;
.col-sm-  屏幕大于768px时,单元格在一行显示;屏幕小于768px时,独占一行;试用于平板;
.col-md-  屏幕大于992px时,单元格在一行显示;屏幕小于992px时,独占一行;试用于桌面显示器;
.col-lg-  屏幕大于1200px时,单元格在一行显示;屏幕小于1200px时,独占一行;适用于大型桌面显示器;

(水平)居中有哪些实现方式

$(window).resize(function(){ 
     $(".mydiv").css({ 
         position: "absolute", 
         left: ($(window).width() - $(".mydiv").outerWidth())/2, 
        top: ($(window).height() - $(".mydiv").outerHeight())/2 
     });        
}); 

移动端1像素边框问题

由于分辨率 DPI 的差异,高清手机屏上的 1px 实际上是由 2×2 个像素点来渲染,有的屏幕甚至用到了 3×3 个像素点;
所以 border: 1px 在移动端会渲染为 2px 的边框;

//首先用伪类创建边框
.border-bottom{
    position: relative;
    border-top: none !important;
}

.border-bottom::after {
    content: " ";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 1px;
    background-color: #e4e4e4;
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
}
//然后通过媒体查询来适配
/* 2倍屏 */
@media only screen and (-webkit-min-device-pixel-ratio: 2.0) {
    .border-bottom::after {
        -webkit-transform: scaleY(0.5);
        transform: scaleY(0.5);
    }
}

/* 3倍屏 */
@media only screen and (-webkit-min-device-pixel-ratio: 3.0) {
    .border-bottom::after {
        -webkit-transform: scaleY(0.33);
        transform: scaleY(0.33);
    }
}
<script type="text/javascript">
   (function() {
       var scale = 1.0;
       if (window.devicePixelRatio === 2) {
           scale *= 0.5;
       }
       if (window.devicePixelRatio === 3) {
           scale *= 0.333333;
       }
       var text = '<meta name="viewport" content="initial-scale=' + scale + ', maximum-scale=' + scale +', minimum-scale=' + scale + ', width=device-width, user-scalable=no" />';
       document.write(text);       
    })();
</script>

JavaScript

图片懒加载

实现页面加载进度条

我的实现原理:记录下当前页面需要加载哪些图片和js;分别在每个加载js和图片的完成后,刷新一次进度条;

num++;
self.loadBar.css("width",num/loadData.length*100+"%");

事件委托

实现extend函数

为什么会有跨域的问题以及解决方式

//js部分
$.ajax({  
    url: "http://192.168.2.229:8091/myTest/hellow/index",  
    type: "POST",  
    crossDomain: true,  
    dataType: "json",  
    success: function(result) {  
        alert(JSON.stringify(result));  
    },  
    error: function(xhr, status, error) {  
    alert(status);  
    }  
});  
//服务器端
response.addHeader( "Access-Control-Allow-Origin", "http://192.168.2.229:8020" )  

jsonp原理、postMessage原理

上一篇下一篇

猜你喜欢

热点阅读