【每日N题】0111

1. label for 的用处?

label是为input元素服务的标签,为其定义标记,for属性规定label与哪个具体的表单元素绑定,对应input标签的id属性

示例:点击label的时候会聚焦到input上

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Label测试</title>
  </head>
  <body>
  <form>
    <label for="male">Male</label>
    <input type="radio" name="sex" id="male" />
    <br/>
    <label for="female">Female</label>
    <input type="radio" name="sex" id="female" />
  </form>
  <form>
    <label for="userName">姓名</label>
    <input type="text" name="userName" id="userName" />
    <br/>
    <label for="psd">密码</label>
    <input type="password" name="psd" id="psd" />
  </form>
  </body>    
</html>

2. img的data-src属性及懒加载

图片懒加载:在访问页面的时候,先把img元素或其他元素的背景图片替换成一张大小为1*1px的图片路径,(只用发送一次请求)当图片出现在浏览器的可视区域内的时候,才设置图片真正的路径,让图片显示出来。

创建一个自定义属性data-src存放真正需要显示的图片路径,src存放一张大小为1*1px的图片路径,当页面滚动到图片可视区域的时候用js取该图片的data-src赋值给src

3. HTML data-*属性

data-*属性用于存储页面或应用程序的私有自定义数据

data-*属性赋予我们所在html元素上嵌入自定义data属性的能力

存储的自定义数据能够被页面的js利用,以创建更好的用户体验(不进行ajax调用或服务端数据库查询)

4. CSS display: block inline inline-block 区别

(1)block会独占一行,多个block元素会各自新起一行,默认情况下,block元素宽度自动填满父元素宽度,block可以设置宽高属性和margin、padding属性

(2)inline不会独占一行,多个行内元素会排列在同一行,直到一行排不下才会换新的一行,宽度随元素内容的变化而变化。设置宽高无效,可以在水平方向产生边距效果,竖直方向不会

(3)inline-block呈现效果类似于inline但是可以设置宽高属性

5. 三栏纵列布局,宽度一样,怎么实现

(1)flex实现

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>三栏布局宽度一样</title>
  </head>
  <body>
    <style>
      body {
        display: flex;
      }
      div {
        height: 100px;
      }
      .a {
        flex: 1;
        background-color: red;
      }
      .b {
        flex: 1;
        background-color: blue;
      }
      .c {
        flex: 1;
        background-color: green;
      }
    </style>
    <div class="a"></div>
    <div class="b"></div>
    <div class="c"></div>
  </body>    
</html>

(2)grid实现

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>三栏布局宽度一样</title>
  </head>
  <body>
    <style>
      body {
        display: grid;
        grid-template-columns: 33.3% 33.3% 33.3%;
      }
      div {
        height: 100px;
      }
      .a {
        background-color: red;
      }
      .b {
        background-color: blue;
      }
      .c {
        background-color: green;
      }
    </style>
    <div class="a"></div>
    <div class="b"></div>
    <div class="c"></div>
  </body>    
</html>

6. JS的输出顺序

考察js的单线程特性,setTimeout属于异步操作,for循环执行完毕前,每次遍历产生一个setTimeout操作,被放在队列中等待执行,直到同步过程执行结束,才执行依次setTimeout,此时i变成4了

for(var i=1;i<=3;i++){
  setTimeout(function(){
    console.log(i); //输出:4,4,4
  },0)
}

如何产生1、2、3的输出结果

(1)使用ES6的let

//将var变为let
for(let i=1; i<=3; i++){
  setTimeOut(function(){
    console.log(i); //输出的结果为1,2,3
  },0);
}

(2)使用立即执行函数

for(var i=1; i<=3; i++){
  !function(i){
    setTimeOut(function(){
      console.log(i); //输出的结果为1,2,3
    },0);
  }(i)
}

7. 为什么要有虚拟DOM节点,直接操作DOM节点的问题在哪里?

虚拟DOM:对复杂的DOM结构提供便捷的工具,最小化的进行DOM操作。

虚拟DOM不会进行重绘和回流,在虚拟DOM中进行频繁修改,然后一次性比较并修改真实DOM中需要修改的部分,最后在真实DOM中进行重绘和回流,见着过多的DOM节点重绘和回流的损耗。

真实DOM的重绘和回流效率相当低,虚拟DOM有效地降低了大面积的对真实DOM进行重绘和回流,因为通过比较差异,只渲染局部。

8. Vue 的插件怎么注册,插件接口该怎么设计?【X】

https://www.cnblogs.com/adouwt/p/9211003.html

9. 设计一个v-dom和渲染函数【X】

10. 输入一个url到显示页面会发生什么?

11. 怎么使用CDN缓存加速?

12. 浏览器怎么渲染html、css、js哪个会先渲染?

13. js同步代码要loop很久,会不会阻塞后面代码的执行?

14. d3.js和vue怎么一起用? 【X】

https://www.cnblogs.com/wuvkcyan/p/8975105.html

15. 设计一个异步函数的调用

16. 岛上有 白、灰、黑三种颜色的变色龙,其中两种不同颜色的变色龙相遇会同时变成第三种颜色,问三种颜色的变色龙数量分别为10,14,15时可能变成同一种颜色的变色龙吗?

原文地址:https://www.cnblogs.com/xdcat/p/14263724.html