博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端面试题答案收集
阅读量:5891 次
发布时间:2019-06-19

本文共 5139 字,大约阅读时间需要 17 分钟。

PART ONE -- HTML

1、html5 新特性,语义化?


新特性:

  • 语义特性,添加 <header></header><nav></nav> 等标签。
  • 多媒体,用于媒介回放的 video 和 audio 元素
  • 图像效果,用于绘画的 canvas 元素, svg 元素
  • 离线 & 缓存,对本地离线存储的更好的支持,localSrorage等
  • 设备兼容特性,HTML5 提供了前所未有的数据与应用介入开放接口。
  • 链接特性。Server-Sent Event 和 WebSockets 就是其中两个特性,这两个特性能帮助我们实现服务器将数据“推送”到客户端的功能。
  • 性能与集成特性,HTML5 会通过 XMLHttpRequest2 等技术,帮助您的 Web 应用和网站在多样化的环境中更快速的工作。

语义化:

语义化就是用合理、正确的标签来展示内容。语义化的优点有:易于用户阅读,样式丢失的时候能让页面呈现清晰的结构;有利于 SEO,搜索引擎根据标签来确定上下文个各个关键字的权重;方便其他设备解析,如读屏器;有利于开发和维护,语义化更具有可读性,代码更好维护,与 CSS3 关系更和谐。

2、浏览器的标准模式和怪异模式


标准模式:此模式下,浏览器按照 HTML 与 CSS 标准对文档进行解析和渲染;

怪异模式:此模式下,浏览器按照就有的非标准的实现方式对文档进行解析和渲染。

3、使用 data- 的好处


  • 自定义属性,可以被 js 很好的操作
  • 通过 js 的 element.dataset. 或 jQuery 的 data(‘‘) 拿到,* 可以为 url 等字符

4、什么是渐进式渲染


服务端渲染局部,客户端渲染局部。(参考: )

PART TWO -- CSS

1、盒模型,box-sizing


盒模型:Every element in web design is a rectangular box。

clipboard.png
CSS3 的 box-sizing 属性:

  • content-box(默认):width = contentWidth + padding(left/right) + border(left/right)
  • padding-box:width = contentWidth(包含padding) + border(left/right)
  • border-box:width = contentWidth(包含 padding 和 border)

2、CSS3 新特性,伪类,伪元素,锚伪类


CSS3 新增特性主要有(使用比较频繁的):过渡(transition)、动画(animation)、形状转换(transform)、文字超出省略号、弹性布局(flex)、栅格布局(grid)、多列布局(column-count)、媒体查询。

(参考:)

3、CSS实现隐藏页面元素的方式


  1. opacity: 0 -> 只能从视觉上隐藏元素,元素依旧占据位置并对网页的布局起作用,也会影响用户交互。在读屏软件中不会被隐藏。
  2. visibility: hidden -> 被隐藏的元素依然会对网页布局起作用,但不会影响任何用户交互。在读屏软件中也会被隐藏。
  3. diaplsy: none -> 隐藏元素,确保元素不可见并且连盒模型也不生成,被隐藏的元素不占据任何空间,且一旦设置了 display 为 none,任何对该元素直接的用户交互操作都不肯能。读屏软件也无法被读到。
  4. position:absolute -> 配合 top 和 left 属性,将元素移出可视区域,不会影响布局,又能让元素保持可操作。
  5. clip-path:剪裁(eg: clip-path: polygon(0px 0px, 0px 0px, 0px 0px, 0px 0px);)

4、CSS 实现水平居中和垂直居中


自己最常用的三种:

.box {    position: absolute;    top: 0;    bottom: 0;    left: 0;    right: 0;}
.box {    display: flex:    align-items: center;    justify-content: center;}
.box {    display: absolute;    top: 50%;    left: 50%;    transform: translate(-50%, -50%);}

(别人写的总结:

5、说说 position, display


position:元素在页面中的布局遵守一套文档流的方式,默认的定位属性值为 static。它其实是未被设置定位的。元素如果被定为了,那么它的 top, left, bottom, right 值就会生效,能设置定位的属性是 relative, absolute,fixed。需要注意的是被定为的元素的层次(z-index)会得到提高。

  • relative:相对定位,元素会在自身文档流所在位置上被移动,其他的元素则不会调整位置来弥补它偏离后剩下的空袭。
  • absolute:绝对定位,元素脱离文档流,其他的元素会调整位置来弥补它偏离后剩下的空隙。
  • fixed:固定定位,元素相对的偏移参考是可视窗口

display:每一个元素都有默认的 display 属性。

常见的block属性元素有:div, h1-h6, ul, li, ol, dl, dd, dt。
常见的inline属性元素有: span, a, em。

6、解释一下 css3 的 flexbox,以及适用场景

Flex 意为“弹性布局”,用来为盒状模型提供最大的灵活性。采用 Flex 布局的元素,称为 flex 容器,简称“容器”。它的所有自元素自动成为容器成员,称为 flex 项目(flex item),简称“项目”。常规布局是基于块和内联流方向,而 flex 布局是基于 flex-flow 流,可以很方便的用来做居中,能对不同屏幕大小自适应。在布局上有了比以前更佳灵活的空间。

7、实现两栏布局有哪些方法?


参考:

  1. 左列定宽,右列自适应

    • margin + float

      right

      right

      .left {    float: left;    width: 100px;    position: relative;}.right-fix {    float: right;    width: 100%;    margin-left: -100px;}.right {    margin-left: 120px; // 形成 20px 间隔}
    • absolute

      .box{    position: relative;}.left{    position: absolute;    left: 0;    width: 100px;}.right{    position: absolute;    left: 120px; // 形成 20px 间隔    right: 0;}
  2. 左列不定宽,右列自适应
  • float + BFC

这个方法主要是应用到 BFC 的一个特性

浮动元素的块状兄弟元素会五十付哦那个元素的位置,尽量占满一整行,这样该兄弟元素就会被浮动元素覆盖
若浮动元素的块状兄弟元素为BFC,则不会占满一整行,而是根据浮动元素的宽度,占据该行剩下的宽度,避免与浮动元素重叠。
*浮动元素与其块状BFC兄弟元素之间的margin可以生效,这将继续减少兄弟元素的宽度

.left{    float: left;    width: 100px;    margin-right: 20px; //形成 20px 的间隔}.right{    overflow: hidden; //通过设置overflow: hidden来触发BFC特性}
  • table 布局

    .box{    display: table;    width: 100%;    table-layout: fixed;}.left, .right{    display: table-cell;}.left{    width: 100px;    padding-right: 20px;}
  • flex

    .parent{    display: flex;}.left{    margin-right: 20px;}.right{    flex: 1;}

PART THREE -- JS

1、JS的基本类型有哪些?引用类型有哪些?null 和 undefined 的区别。


JS基本类型:null,undefined,boolean,number,string,symbol。引用类型:Objectundefined:定义了但是没有赋初始值null:未定义的对象

2、引用类型和基本类型有什么区别?哪个是存在堆哪一个是存在栈上面的?


基本数据类型
  • 基本数据类型的值是不可变的
  • 基本数据类型不可以添加属性和方法
  • 基本数据类型的赋值是简单赋值
  • 基本数据类型的比较是值的比较
  • 基本数据类型是存放在栈区的
引用类型
  • 引用类型的值是可以改变的
  • 引用类型可以添加属性和方法
  • 引用类型的赋值是对象引用
  • 引用类型的比较是引用的比较
  • 引用类型是同时保存在栈区和堆区中的

3、new 一个对象具体做了什么?


新生成一个对象 -> 链接到原型 -> 绑定 this -> 返回新对象

4、箭头函数和普通函数有什么区别?


  • 箭头函数不能作为构造函数,不能使用 new
  • 箭头函数只能作为匿名函数使用
  • 箭头函数中的 this 会捕获其上下文的 this 值
  • 箭头函数不绑定 arguments, 取而代之用 rest 参数(...)解决
  • 箭头函数当方法使用的时候没有定义 this 绑定
  • 箭头函数不能当作 Generator 函数,不能使用 yield 关键字
  • 箭头函数不能返回对象字面量
  • 箭头函数不能换行clipboard.png
  • 普通函数每个都有其自己的 this 值,构造函数的 this 指向一个新的对象;严格模式下的函数的 this 指向 undefined;如果函数是作为对象的方法被调用的,则 this 指向了那个调用它的对象

5、对闭包的的理解


6、property 和 attribute 的区别


Property 是 DOM 中的属性,是 JavaScript 里的对象;

Attribute 是 HTML 标签上的特性,它的值只能够是字符串。

7、setTimeout和promise的执行顺序


看题:

setTimeout(function() {   console.log(1)}, 0);new Promise(function(resolve, reject) {  console.log(2)  for (var i = 0; i < 10000; i++) {    if(i === 10) {console.log(10)}       i == 9999 && resolve();  }   console.log(3)}).then(function() {   console.log(4)})console.log(5);以上代码的输出结果为:2 10 3 5 4 1

setTimeout(fn, 0) 表示立即执行,也就是用来改变任务的执行顺序,要求浏览器“尽可能快”的进行回调;Promise 新建后立即执行,Promise 构造函数里的代码是同步执行的;then 方法指向的回调将在当前脚本所有同步任务执行完后执行

then 比 setTimeout 执行要早,是因为其实 setTimeout 又一个最小执行时间(minimun delay)为 4ms,并不是 0s 执行。

未完待续...

转载地址:http://vlfsx.baihongyu.com/

你可能感兴趣的文章
C++ 基础笔记(一)
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹
查看>>
安装系统字体
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>
批处理学习笔记8 - 深入学习For命令1
查看>>
ActiveX控件的安全初始化和脚本操作 和 数字签名SIGN
查看>>
Eclipse console文本换行
查看>>
微信支付开发(11) Native支付
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
【设计模式】—— 代理模式Proxy
查看>>
ejabberd
查看>>
博客园博客自动生成三级目录(generate three levels content using JS in cnblogs)
查看>>
关于多线程的那些事
查看>>
js 将json字符串转换为json对象的方法解析
查看>>
1. Two Sum
查看>>