前端核心面试题:UI

386 阅读2分钟

@如何实现自适应布局

  • 自适应布局:设备尺寸不同时自动加载不同样式
  • 媒体查询:根据不同设备宽度配置不同样式或引入不同样式文件
  • rem:为不同设备设置不同根元素font-size

@如何实现响应式布局

  • 响应式布局:屏幕缩放时布局自动响应
  • 弹性盒布局
  • 百分比布局
  • vw/vh
  • em/rem/rpx
  • 使用JS监听window.onresize事件做特殊处置

@如何让Echarts数据页同时适配PC和大屏

  • 参见自适应布局

@子盒子在父盒子中宽高居中

  • 盒模型实现:暴力计算margin或padding;
  • 弹性盒实现:弹性盒,内容纵横居中;
.parent-box {
    display:flex;
    justify-content:center;
    align-items:center;
}
  • 定位+偏移实现:子盒子左上角绝对定位到父盒子几何中心,再向左上偏移自身宽高的一半
.parent-box {
    position:relative;
    
    .child-box{
        position:absolute;
        left:50%;
        top:50%;
        transform:translate(-50%,-50%);
    }
}

@常用的flex属性

晚点再来

@CSS如何设置动画

晚点再来

@用过animate.css吗

晚点再来

@如何解决浏览器兼容性问题

  • 需要考虑CSS和JS的兼容;
  • CanIUse上可以查询任意CSS属性和JS-API在各不同浏览器上的兼容性;
  • 兼容性问题的具体症状高度碎片化,兼容方案千奇百怪,比较常见的兼容手段有:
  • 全局reset:例如手动设置所有元素的margin和padding都为0,所有cursor默认为pointer,a标签的outline默认为none,img的border默认为none等;
  • IE的特殊CSS语法:IE浏览器特别是老版本的IE浏览器很多CSS语法没有遵从W3C标准,例如min-height要写为_height,display:inline-block要写为*display:inline等;
  • 浏览器兼容前缀:特定样式在特定浏览器上需要特定前缀,Webpack的autoprefixer插件能自动帮我们做这个工作;
  • JS-API:对特定JS-API做浏览器判断和分类处理;
  • 此处我收藏了一篇文章,上面有几十个CSS和JS特殊CASE的兼容方案:
  • 收藏的文章在这里

@说说你对canvas的认识

晚点再来

@使用canvas过程中遇见过哪些坑

晚点再来