0%

背景

公司大屏项目有一块地方用到了 el-carousel 组件,但是数据量比较大(3000多条),导致页面卡顿,所以需要对 el-carousel 组件进行优化。

思路方案

利用虚拟列表技术,每次只渲染可视区域的数据,不可视区域的数据不渲染,这样就可以减少渲染的数据量,提高渲染性能。

具体思路是,不论自动轮播还是手动点击指示器,都会触发 el-carousel 的 change 事件,我们可以在 change 事件中获取当前可视区域的数据,然后将数据传给 el-carousel 组件,这样就可以实现虚拟列表的效果。

阅读全文 »

转载地址:https://segmentfault.com/a/1190000023362699

1
2
3
4
5
<span style="display: inline-block;width: 50px;>
<p style="display: inline-block;white-space: nowrap;margin-left: 50%;transform: translateX(-50%);">
黄浦哇哈哈乐百氏777哇哈哈很好的呀区
</p>
</span>

要点:

  1. 子元素要设置不换行,并且是个内联块级元素,这样文本就拥有了实际宽度。
  2. 基于父元素50%宽度向右平移,将基准点定位在父元素中心点,即margin-left: 50%。
  3. 基于文本自身的宽度向左偏移一半的文本长度,即transform: translateX(-50%)。

起因

接到一个需求是实现 Chrome 浏览器自带的「Ctrl+F」搜索功能。起初想当然的以为直接正则+replace 不就搞定了么。但后边发现直接粗暴的 innerHTML + replace 会导致 Vue 的响应式以及事件绑定都失效。所以得想其他的法子。

阅读全文 »