我有以下的CSS规则:使用transform:scale css属性的跨浏览器方法?
-webkit-transform: scale(0.5); /* Saf3.1+, Chrome */
-moz-transform: scale(0.5); /* FF3.5+ */
-ms-transform: scale(0.5); /* IE9 */
-o-transform: scale(0.5); /* Opera 10.5+ */
transform: scale(0.5);
我打算同时保持相同的中心,以它的规模,包括其所有内容,图像等,适用于一个div至50%的大小。正如你可能知道我列出的规则完全一样,除了IE7-8。
据this site,等效,MS专有的规则是:
/* IE8+ - must be on one line, unfortunately */
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.5, M12=0, M21=0, M22=0.5, SizingMethod='auto expand')";
/* IE6 and 7 */
filter: progid:DXImageTransform.Microsoft.Matrix(
M11=0.5,
M12=0,
M21=0,
M22=0.5,
SizingMethod='auto expand');
然而,这些似乎并没有真正调整div的内容,它似乎改变其位置,但仅此而已。
CSS3Please.com报告不同的矩阵值成为分的当量(0.5):
filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE9 */
M11=0.9999619230641713, M12=-0.008726535498373935, M21=0.008726535498373935, M22=0.9999619230641713,SizingMethod='auto expand');
我测试这些藏汉,但效果是一样的;该div似乎改变了立场,但其内容的实际大小保持不变。
最后,我已经试过transformie.js,它通过sylvester.js自动计算矩阵分配变换属性,但最终的结果仍然是:
M11=0.5, M12=0, M21=0, M22=0.5
完全一样的一个我第一次尝试,这看起来除了改变div的位置外别无所求。
我会尝试cssSandpaper.js,但它看起来很臃肿什么我打算做的,再加上有没有jQuery的端口,我不喜欢加入cssQuery该项目只为。结果可能与transformie.js生成的结果相同,因为它似乎也使用sylvester.js。
编辑:我也试着this这似乎直接来自微软,并提出以下矩阵的计算方法:
function resizeUsingFilters(obj, flMultiplier) {
// If you don't do this at least once then you will get an error
obj.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11='1.0', sizingmethod='auto expand')";
// Resize
obj.filters.item(0).M11 *= flMultiplier;
obj.filters.item(0).M12 *= flMultiplier;
obj.filters.item(0).M21 *= flMultiplier;
obj.filters.item(0).M22 *= flMultiplier;
}
不幸的是,这并不缩放DIV本身的内容无论是。看起来这可能根本不可能,但是:
现代transform: scale
如何在IE8-7中模拟,以这种方式实际调整内部div内容?
也许我正在寻找一些不存在的东西,但我想确定。所有的测试都是在IE9和IE7的兼容模式下完成的(到目前为止它一直都是这样做的,我不相信它不可靠,但如果你不这么认为,请随时纠正我)
[Modernizr](http://modernizr.com/)是否支持? [也许](http://modernizr.com/docs/#csstransforms)? – 2012-07-30 01:26:26
@JaredFarrish Afaik(但如果我错了,有人可能会纠正我,因为我还没有使用它)所有Modernizr都会测试是否支持转换,并让你知道,但如果缺少支持该怎么办取决于用户。 – Mahn 2012-07-30 02:02:00
我没有使用Modernizr,但从我所了解的情况来看,这似乎并不是用例。那有什么意义呢? – 2012-07-30 02:03:42