Scribd 的缩放功能令人印象深刻。当您单击它们的 + 和 - 按钮时,包括图像和文本在内的所有页面内容都会按比例缩放。
例如,在http://www.scribd.com/html5上试用。
他们如何做到这一点?它似乎不像控制浏览器缩放那么简单(尽管控制浏览器缩放本身并不简单,如果根本不可能的话!)
一个相关的问题是他们如何实现“全屏模式”。之前有人问过这个问题,但那是两年前他们还在使用 Flash 的时候。
Scribd 的缩放功能令人印象深刻。当您单击它们的 + 和 - 按钮时,包括图像和文本在内的所有页面内容都会按比例缩放。
例如,在http://www.scribd.com/html5上试用。
他们如何做到这一点?它似乎不像控制浏览器缩放那么简单(尽管控制浏览器缩放本身并不简单,如果根本不可能的话!)
一个相关的问题是他们如何实现“全屏模式”。之前有人问过这个问题,但那是两年前他们还在使用 Flash 的时候。
我建议这可能是对画布元素的简单转换,但看看它们的来源,情况似乎并非如此。
相反,它看起来像“放大”功能只影响img
页面上的标签,所以我想说他们可能只是动态修改这些标签的width
和height
属性。这不是一种非常复杂的方法,当然也不依赖于 HTML5 中引入的任何东西。
编辑:
Chrome 的开发者工具非常棒。如果您观察缩放之间的 DOM,很容易确定效果是如何实现的。以下是页面默认状态下的标记:
<div class="outer_page only_ie6_border" id="outer_page_1"
style="width: 516.8000000000015px; height: 400px; ">
<div class="newpage" id="page1"
style="width: 902px; height: 697px;
-webkit-transform: scale(0.5729490022172966);
-webkit-transform-origin-x: 0%;
-webkit-transform-origin-y: 0%; ">
...
</div>
</div>
...并在缩小一次后:
<div class="outer_page only_ie6_border" id="outer_page_1"
style="width: 646.0000000000018px; height: 500px; ">
<div class="newpage" id="page1"
style="width: 902px; height: 697px;
-webkit-transform: scale(0.7161862527716206);
-webkit-transform-origin-x: 0%;
-webkit-transform-origin-y: 0%; ">
...
</div>
</div>
...再次缩小后:
<div class="outer_page only_ie6_border" id="outer_page_1"
style="width: 807.5000000000023px; height: 624px; ">
<div class="newpage" id="page1"
style="width: 902px; height: 697px;
-webkit-transform: scale(0.8952328159645258);
-webkit-transform-origin-x: 0%;
-webkit-transform-origin-y: 0%; ">
...
</div>
</div>
所以看起来他们通过做两件事来实现他们的缩放效果:
width
和height
。