ivan135 / learn-blog

0 stars 0 forks source link

大屏页面 #5

Open ivan135 opened 4 years ago

ivan135 commented 4 years ago

分析DataV

DadaV地址

MutationObserver 的使用

创建一个MutationObserver对象,这个对象有三个方法:

// 开始监听页面中根 HTML 元素中的变化。 mutationObserver.observe(document.documentElement, { attributes: true, characterData: true, childList: true, subtree: true, attributeOldValue: true, characterDataOldValue: true });

现在,假设在 DOM 中你有一些非常简单的 div :

`<div id="sample-div" class="test"> Simple div </div>`
复制代码使用 jQuery,你可以移除这个 div 的 class 属性:

`$("#sample-div").removeAttr("class");`

当我们开始观察,在调用 mutationObserver.observe(...) 之后我们将会在控制台看到每个 MutationRecord 的日志:
![image](https://user-gold-cdn.xitu.io/2018/5/6/163336d71f1af024?imageView2/0/w/1280/h/960/format/webp/ignore-error/1)

这个是由移除 class 属性导致的变化。

最后,为了在任务结束后停止对 DOM 的观察,你可以这样做:
```javascript
// 停止 MutationObserver 对变化的监听。
mutationObserver.disconnect();

分析的源码: https://github.com/DataV-Team/DataV/blob/bfc7cc7c574bedecaf7a7aa2b322e01c471a3b77/src/util/index.js https://github.com/DataV-Team/DataV/blob/72433f8ff127c387d91b56c75988c6ceb61f68a9/src/mixin/autoResize.js

ivan135 commented 4 years ago

解决dataV非全屏下无法显示全部内容的问题

利用 postcss-px-to-rem 转化页面的px为rem 利用 lib-flexible-for-dashboard 来根据比较屏幕宽高比和设计稿宽高比来设置html的font-size