2019年Web开发中值得关注的新特性(2/4)
上期分享了4个2019值得关注的新特性,今天继续分享4个:图片纵横比、Blob reading、图片剪贴版、Sharing
图片纵横比
这个现象可能比较常见,在图片加载的时候,页面没有为图片预留空间,所以在图片加载完成时,页面结构发生了变化,体验不是很友好。
其实这种情况可以通过增加包裹容器,并设置相关属性来避免。
示例:(可以尝试在Edge和Chrome浏览器下查看差异,建议设置弱网环境)
See the Pen by (@justforuse) on CodePen.
Blob reading
读取文件内容也有新方法了,其实算是比较低频的交互,目前通用的写法是使用FileReader方法,个人感觉有点啰嗦。。
const blob = input.files[0]
const reader = new FileReader()
reader.readAsText(blob)
reader.onload = () => {
console.log(reader.result)
}
现在可以借助Response
提供的方法来实现:
const blob = input.files[0]
const result = await new Response(blob).text();
// 或者更干脆点
const result = await blob.text()
复制图片
这个特性比较新,没有看出啥效果。。先贴着代码吧
async function handleClick() {
try {
const imgUrl = `https://user-images.githubusercontent.com/11868477/
71448279-e501a000-2774-11ea-8456-ddc4d2ced50f.png`
const response = await fetch(imgUrl, {
mode: 'no-cors'
})
const blob = await response.blob()
await navigator.clipboard.write([
new ClipboardItem({ [blob.type]: blob })
])
console.log('image copied!')
} catch (err) {
console.log('Failed!', err)
}
}
write
方法支持性很差,有几个其他剪贴版的方法可以使用了,比如读写文本。更多使用方式可以参考这篇文章: https://alligator.io/js/async-clipboard-api/
Sharing
Share API推出有一段时间了,这里的Sharing指的是分享文件,可以在PWA和Native应用互相分享文件。比如分享一张图片到美图APP中。
既然是和PWA相关,那么就需要在manifest.json文件中做一些配置,(先放个图吧,这个功能咱也没实际使用过)
关于之前的Share API使用方式可以参考这篇: https://alligator.io/js/web-share-api/
结束语
毫无疑问,Sharing获得本期最佳头衔,与上期Intl相比,也进入到了最终的决赛。
这期的四个新特性有两个开始和系统或者其他应用直接有交互了。在网页技术更新换代的过程中,浏览器本身的功能也应该被关注,而不仅仅作为网页的载体,与操作系统,与其他系统应用的交互,也可以为广大用户带来更好的使用体验。
期待在2020年,这些技术可以有更多的应用场景👊
觉得作者写得不错?不妨轻击下方按钮~