每日前端签到(第四十三天)

第四十三天(2018-09-16)
  • [html] 说说你对WEB标准和W3C的理解与认识?
  • [css] 你知道全屏滚动的原理是什么吗?它用到了CSS的那些属性?
  • [js] 你对事件循环有了解吗?说说看!
  • [软技能] 最近996一词很火,谈谈你对996的看法

题目一:
网页主要由三个部分组成,表现、结构和行为。

我理解的就是:

html是名词--表现
css是形容词--结构
javascript是动词--行为
以上这三个东西就形成了一个完整的网页,但是js改变时,可以会造成css和html的混乱,让这三个的界限不是那么清晰。

这个时候,web标准就出来了,web标准一般是将该三部分独立分开,使其更具有模块化。

W3C对web标准提出了规范化的要求,也就是在实际编程中的一些代码规范:包含如下几点

1.对于结构要求:(标签规范可以提高搜索引擎对页面的抓取效率,对SEO很有帮助)

标签字母要小写
标签要闭合
标签不允许随意嵌套
2.对于css和js来说

尽量使用外链css样式表和js脚本。是结构、表现和行为分为三块,符合规范。同时提高页面渲染速度,提高用户的体验。
样式尽量少用行间样式表,使结构与表现分离,标签的id和class等属性命名要做到见文知义,标签越少,加载越快,用户体验提高,代码维护简单,便于改版

这里顺便解释下什么是web标签语义化,即用正确的标签做正确的事情。

比如:

W3C组织意识到了之前HTML版本的不足,推出的HTML5进一步推进了Web语义化发展,采用了诸如footer、section等语义化标签,弥补了采用id="footer"或者class="footer"形式的不足,以更好的推动Web的发展。
题目二:
全屏滚动和轮播图类似,都是通过改变元素位置或者显示与隐藏来实现,配合JS的一些交互距离判断,实现类似原生滚动捕获的效果。这里全屏的话就需要将宽高都设置为窗口的大小,可以通过百分百实现。
关键CSS属性是父容器 overflow: hidden; 。
实现全屏滚动还可以简单的通过插件来实现,比如fullpage,很多大公司的页面都是用这个实现的,比如小米一些产品的官网。

题目三:
单线程模型
JS 引擎有多个线程,但引擎同时只执行一个任务,其他任务都必须在后面排队,即引擎只在一个线程上运行。这个线程称为主线程。

事件循环机制
JS 本身并不慢,慢的是读写外部数据,比如等待 Ajax 请求返回结果。如果等着 Ajax 返回结果出来,再往下执行,就会耗费很长的时间。所以 JS 设计了一种机制,CPU 可以不管 IO 操作,而是挂起该任务,先执行后面的任务,等到 IO 操作返回了结果,再继续执行挂起的任务。

同步任务执行完后,引擎一遍又一遍检查那些挂起来的异步任务是否满足进入主线程的条件。这种循环检查的机制,就叫做事件循环机制。

任务队列
JS 引擎运行时,除了一个正在运行的主线程,还提供一个或多个任务队列,里面是各种被挂起的异步任务。首先,主线程会去执行所有的同步任务,等到同步任务全部执行完,就会去看任务队列里面的异步任务,如果满足条件,那么异步任务就重新进入主线程开始执行,这时它就会变成同步任务。等到执行完,下一个异步任务再进入主线程开始执行。一旦任务队列清空,程序就结束执行。

同步任务和异步任务
程序里面所有的任务可以分成两类:

同步任务:没有被引擎挂起,在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行后一个任务。
异步任务:被引擎挂起,不进入主线程,而进入任务队列的任务。只有引擎认为某个异步任务可以执行了,该任务才会进入主线程执行。排在异步任务后面的代码,不用等待异步任务结束会马上运行。

题目四:
其实, 我不介意996, 我介意的是, 不必要的996, 无偿的996, 耍流氓的996, 强迫式的996

你可能感兴趣的:(每日前端签到(第四十三天))