某一天。前同事低着头从鹅厂面试回来。他说他被一道非经常见的问题难倒了。

对方问他知道zoom:1的作用吗?

前同事:清楚浮动啊,触发haslayout。

再问:那你知道zoom:1的工作原理和来龙去脉吗?

前同事:......

zoom:1确实帮我们攻克了不少ie下的bug,可是它的来龙去脉,又有多少人知道呢?

所以我老生常谈,说一下它的来龙去脉。

Zoom属性是IE浏览器的专有属性。它能够设置或检索对象的缩放比例。先来一张来自度娘的截图

在寻常的css编写过程中。zoom:1可以比較奇妙地解决ie下比較奇葩的bug。

譬如外边距(margin)的重叠,譬如浮动的清除。譬如触发ie的haslayout属性等等。

来龙去脉大概例如以下:

度娘告诉我们:zoom是设置或检索对象的缩放比例。设置或更改一个已被呈递的对象的此属性值将导致围绕对象的内容又一次流动。

尽管此属性不可继承。可是它会影响对象的全部子对象( children )。这样的影响非常像 background 和 filter 属性导致的变化。

此属性对于 currentStyle 对象而言是仅仅读的,对于其它对象而言是可读写的。

当设置了zoom的值之后,所设置的元素就会就会扩大或者缩小。高度宽度就会又一次计算了,这里一旦改变zoom值时事实上也会发生又一次渲染,运用这个原理,也就攻克了ie下子元素浮动时候父元素不随着自己主动扩大的问题。

Zoom属是IE浏览器的专有属性,火狐和老版本号的webkit核心的浏览器都不支持这个属性。然而,zoom如今已经被逐步标准化,出如今 CSS 3.0 规范草案中。

眼下非ie因为不支持这个属性,它们又是通过什么属性来实现元素的缩放呢?

我们能够通过css3里面的动画属性scale进行缩放。

好了。粗劣地说了一下zoom的来龙去脉,如有不对的地方。望多多不吝赐教。假设认为有收获,请多多留言。

Author: Alone

Antroduction: 高级前端开发project师

Sign: 人生没有失败,仅仅有没到的成功。

博主相关文章推荐:

移动端上下滑动事件之--坑爹的touch.js

轻轻谈一下seaJs——模块化开发的利器


有趣的前端题目,看了不懊悔

移动端前端开发概述

浅谈
标签的语义化

浅谈鼠标滚轮事件

不积跬步无以至千里----高度自适应的textarea

sass和less,优秀的前端样式预处理器

视差滚动的那些事儿


说一下zoom:1的原理,万一被问到呢?的更多相关文章

  1. Unreal Engine 4 C++ 能够创建角色Zoom摄像头(资源)

    游戏摄像头可以观察到的距离越近,作用和拉远是一个比较普遍的要求,UE4它也实现比较简单. 在这篇文章中TopDown模板案例,解释如何,分步实施能Zoom摄像头. 创建TopDown模板C++项目达产 ...

  2. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析

    文章中引用的代码均来自https://github.com/vczh/tinymoe.   实现Tinymoe的第一步自然是一个词法分析器.词法分析其所作的事情很简单,就是把一份代码分割成若干个tok ...

  3. Java并发(六):volatile的实现原理

    synchronized是一个重量级的锁,volatile通常被比喻成轻量级的synchronized volatile是一个变量修饰符,只能用来修饰变量. volatile写:当写一个volatil ...

  4. Java并发(五):synchronized实现原理

    一.synchronized用法 Java中的同步块用synchronized标记. 同步块在Java中是同步在某个对象上(监视器对象). 所有同步在一个对象上的同步块在同时只能被一个线程进入并执行操 ...

  5. Java面试底层原理

    面试发现经常有些重复的面试问题,自己也应该学会记录下来,最好自己能做成笔记,在下一次面的时候说得有条不紊,深入具体,面试官想必也很开心.以下是我个人总结,请参考: HashSet底层原理:(问了大几率 ...

  6. ArrayList使用及原理

    之前面试时,经常被问到ArrayList的原理,今天整理了一些ArrayList的使用原理和必问的知识点. ArrayList的继承关系 定义一个ArrayList的方法 ArrayList的三个构造 ...

  7. 盘点 HashMap 的实现原理及面试题

    1.请你谈谈 HashMap 的工作原理如果被问到 HashMap 相关的问题,它的工作原理都会被作为面试的开场白,这个时候先装作若有所思的样子冷静一下.首先 HashMap 是基于 hashing ...

  8. vue基础-动态样式&表单绑定&vue响应式原理

    动态样式 作用:使用声明式变量来控制class和style的值 语法: :class/:style 注意:尽可能不要把动态class和静态class一起使用,原因动态class起作用的时间会比较晚,需 ...

  9. CSS/CSS3常用样式小结

    1.强制文本单行显示: white-space:nowrap; 多行文本最后省略号: display: -webkit-box; -webkit-line-clamp:2; overflow: hid ...

随机推荐

  1. 使用Spring boot开发RestFul 风格项目PUT/DELETE方法不起作用

    在使用Spring boot 开发restful 风格的项目,put.delete方法不起作用,解决办法. 实体类Student @Data public class Student { privat ...

  2. STORM在线业务实践-集群空闲CPU飙高问题排查(转)

    最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug ...

  3. Statistical Concepts and Market Returns

    Statistical Concepts and Market Returns Categories of statistics Descriptive statistics: used to sum ...

  4. Wireshark分析网络慢

        tcp.analysis.retransmission tcp.flags.reset==1

  5. JVM调优总结 + jstat 分析

    jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒输出结果不断的在屏幕打印出结果   S0     S1     E      O   ...

  6. winform TreeView 节点选择

    public partial class Form1 : Form { public Form1() { InitializeComponent(); } string tag = "Tru ...

  7. Linux,Windows中的相对路径、绝对路径

    1.Windows绝对路径:以盘符开始 如C:/a.txt相对路径:. 指的是当前目录.. 指的是挡圈目录的上一级目录./test表示当前目录下的test文件夹/test表示当前盘符下的test文件夹 ...

  8. ny2 括号配对问题

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 现在,有一行括号序列,请你检查这行括号是否配对.   输入 第一行输入一个数N(0<N<=1 ...

  9. spark结构化数据处理:Spark SQL、DataFrame和Dataset

    本文讲解Spark的结构化数据处理,主要包括:Spark SQL.DataFrame.Dataset以及Spark SQL服务等相关内容.本文主要讲解Spark 1.6.x的结构化数据处理相关东东,但 ...

  10. c++之拷贝构造函数调用时机

    test1: #include<iostream> using namespace std; class Copy_construction { public: Copy_construc ...