先说共同点,他们都可以对元素进行缩放。其次是区别:
1.zoom从前是IE特有的,现在虽然chrome、Safari也支持了,但他并不是标准的属性,而transform:scale是明确写入规范的标准属性,现代浏览器都支持。
2.zoom支持百分比和正数值,只能等比例缩放。而transform:scale不支持百分比只能是数值而且还可以是负数(负数意味着翻转),transform:scale的语法是transform:scale(x,y),可以对X Y方向分别控制缩放比例。
最重要的是:
1.zoom的大小缩放是相对于左上角的,而 transform: scale的缩放默认是居中缩放的。
2.zoom的缩放文字大小依然受限于浏览器的最小字体限制(如chrome的最小字体为9px),而 transform: scale没有这样的限制,文字和图片一样可以缩小到非常小。
3.zoom的缩放,元素的真实大小会发生改变,即占用的位置改变,会影响到页面上的其他元素位置。而transform: scale虽然视觉效果上缩放了,但元素的真实大小并不会改变,占用的位置依然是原来的大小,其他元素不受影响。由此也引发了性能上的问题:zoom缩放会导致整个页面需要重新渲染,而transform: scale不需要。
原文请看:https://www.zhangxinxu.com/wordpress/2015/11/zoom-transform-scale-diff/