关于浏览器,我们聊什么?

模型

{BOM}

关于网页开发,主要关注浏览器什么方面的方案?

  • 模型。HTML 标签的运用、事件模型的处理等。

  • 性能。DOM 操作、缓存、样式动画等。

  • 安全。Web 攻击的分类以及防御措施。

  • 兼容。PC & Mobile 平台的样式适配、对客户的适配(国际化、无障碍)。

可以看出,这些要素也是 MVC 框架也关注的。比如 React 的“合成事件”模型、顶层 API 主要关注性能、DOMPurify 安全消毒、浏览器兼容(IE 除外)。

{HTML}

HTML 标签分多少类?你为什么这样分类?

  • 我会分成 5 类。举个例子,我们想要看一集电视剧。网络搜索内容后,我们打开一个网页,它就按照下面的步骤呈现:网页信息、大体结构多媒体文本,然后放完了视频,我们发个评论,用到了交互组件。
  • 网页的能力,同时也是它的界限。研发浏览器的公司,会提供什么标签给开发者,取决于使用者(也就是客户)用到了什么能力。打个比方,Kindle 的用户使用它,目的是看书,所以制造商用墨水屏作为部件。假如用户对于用 Kindle 看视频的呼声很高,那市场肯定会出现彩屏的 Kindle。

为什么一些有用的标签如 i、b 之类,在开发中很少使用?

  • 因为不规范不标准,只有部分浏览器支持。一些新标签如 progress,都是用组件库的进度条实现。(有哪些被低估未被广泛使用的有用的 HTML标签? - 知乎
  • 封装的 MVC 库有自己特有的标签库,尽管它们的本质是一样的。比如 Taro 用 Text 放置文本,不支持 i 之类的原生标签。


样式

{CSS}

最常写的 CSS 布局,是关于什么的?最浪费时间的又是哪种?

  • 常写和耗时的,都是关于布局的。移动端做适配,要写的可变换好维护,是门技术活。

  • 最应该掌握的是 Flexbox

  • 形状和视觉效果的,蓝湖这类工具都帮我们做了。因为大部分时候它们都是静态的,就算有动效,也是写一次到处共用。

Flexbox 最容易忽略但是又十分有用的是什么属性?

  • 容器:align-content,item:align-self

  • 都是对垂直位置的控制,不必求助浮动和 grid

Flexbox 最常见的布局是什么?其它方案多是应对什么场景?

  • 两种,响应式(重复元素排列),和流式(常见两行/两列布局,一侧固定一侧自动)

  • 浮动方案也能实现 flexbox 的效果,不过更多的属性设置在元素上,而非容器上。所以难以管控,做不到 flexbox 的改变一个属性就改变显示效果的能力

  • 方向难以改变

  • 垂直方向布局难以设置

  • 定位方案能做到堆叠的效果,这是以上两者都无法实现的。

  • 当然,流式的效果还是能做到的(上层 posotion: absolute,下层有 padding)