在我的网站中,图像是从上到下加载的,我该如何更改它以使图像以像素化方式加载,例如在 Google 地图上何时放大?
问问题
1056 次
1 回答
9
或者,如果您想要像素化/渲染模糊,您可以查看此处:https ://www.google.com/amp/s/jmperezperez.com/medium-image-progressive-loading-placeholder/amp/
这是发生了什么:
渲染一个将显示图像的 div。中使用 a 并将 padding-bottom 设置为百分比,该百分比对应于图像的纵横比。因此,它们可以在加载图像时防止回流,因为所有内容都在其最终位置呈现。这也被称为固有占位符。
加载图像的微小版本。目前,他们似乎在请求质量非常低(例如 20%)的小型 JPEG 缩略图。这个小图像的标记在初始 HTML 中以 . 形式返回,因此浏览器立即开始获取它们。
加载图像后,将其绘制在 . 然后,获取图像数据并通过自定义的 blur() 函数您可以在 main-base.bundle JS 文件中看到它,有点乱。此函数与 StackBlur 的模糊函数相似,但并不完全相同。同时请求主图。
加载主图像后,将显示它并隐藏画布。
由于应用了 CSS 动画,所有的过渡都非常流畅。
来自页面的示例:
<figure name="7012" id="7012" class="graf--figure graf--layoutFillWidth graf-after--h4">
<div class="aspectRatioPlaceholder is-locked">
<div class="aspect-ratio-fill" style="padding-bottom: 66.7%;"></div>
<div class="progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded" data-image-id="1*sg-uLNm73whmdOgKlrQdZA.jpeg" data-width="2000" data-height="1333" data-scroll="native">
<img src="https://cdn-images-1.medium.com/freeze/max/27/1*sg-uLNm73whmdOgKlrQdZA.jpeg?q=20" crossorigin="anonymous" class="progressiveMedia-thumbnail js-progressiveMedia-thumbnail">
<canvas class="progressiveMedia-canvas js-progressiveMedia-canvas" width="75" height="47"></canvas>
<img class="progressiveMedia-image js-progressiveMedia-image __web-inspector-hide-shortcut__" data-src="https://cdn-images-1.medium.com/max/1800/1*sg-uLNm73whmdOgKlrQdZA.jpeg" src="https://cdn-images-1.medium.com/max/1800/1*sg-uLNm73whmdOgKlrQdZA.jpeg">
<noscript class="js-progressiveMedia-inner"><img class="progressiveMedia-noscript js-progressiveMedia-inner" src="https://cdn-images-1.medium.com/max/1800/1*sg-uLNm73whmdOgKlrQdZA.jpeg"></noscript>
</div>
</div>
</figure>
或者您可以查看JMPerez 设置的这个CodePen ,尝试自己重新创建效果。
如果不是您想要的,我很抱歉我的第一个答案。
于 2017-06-07T22:48:19.930 回答