好的,所以我正在寻找独立于容器的真正响应式百分比图像大小调整。 换句话说,我想相对于图像自己的大小调整图像的大小。
原因是我可以动态调整页面上所有图像的大小,以减小屏幕尺寸。
现在,由于它用于CMS解决方案,并且用户被假定为HTML不savy,我们不能用任何东西包装图像,我们不能为它们添加类/ID等。
我将想要更改页面上的所有图像,除了我可以应用类或ID的少数图像。
我目前正在使用:
img {
-webkit-transform: scale(0.625) translate(-29%, 0); /* Saf3.1+, Chrome */
-moz-transform: scale(0.625) translate(-29%, 0); /* FF3.5+ */
-ms-transform: scale(0.625) translate(-29%, 0); /* IE9 */
-o-transform: scale(0.625) translate(-29%, 0); /* Opera 10.5+ */
transform: scale(0.625) translate(-29%, 0);
/* IE6–IE9 */
/*filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.9999619230641713, M12=-0.008726535498373935, M21=0.008726535498373935, M22=0.9999619230641713,SizingMethod='auto expand');*/
}
.noScale, .userFeed img, .twitter img, .subLogo {
-webkit-transform: scale(1) translate(0,0); /* Saf3.1+, Chrome */
-moz-transform: scale(1) translate(0,0); /* FF3.5+ */
-ms-transform: scale(1) translate(0,0); /* IE9 */
-o-transform: scale(1) translate(0,0); /* Opera 10.5+ */
transform: scale(1) translate(0,0);
/* IE6–IE9 */
/*filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.9999619230641713, M12=-0.008726535498373935, M21=0.008726535498373935, M22=0.9999619230641713,SizingMethod='auto expand');*/
}
这大多有效,但所有图像仍然被其他所有内容视为其原始大小,因此它有效地将其填充到原始大小。 随着尺寸减少62%,这不是一个大问题,但随着减少量变小,这是一个更大的问题。 显然,还需要几种媒体查询的实现来处理越来越小的屏幕尺寸。
翻译在那里,所以图像的左边缘仍然是图像的左边缘。
我会考虑JS/JQuery解决方案,但实际上我想要一种与现代浏览器兼容的CSS方式。 所以 ie9+。
在您建议以下任何一项之前,我的测试不起作用,但我很高兴被证明是错误的:
最大高度/最大宽度(在某些浏览器中,它们的大小仍然与容器相对(缩放(不完全支持,如果是的话就完美了(高度/宽度(容器尺寸不是图像(div 包装器(对我正在尝试做的事情没有好处(
如果我完全厚实,接近这个完全错误,没问题,请告诉我。 任何帮助将不胜感激。
谢谢
斯蒂芬
好的,所以我现在使用这个 JQuery 为我调整大小,上面的 CSS 在包装器中。
<script>
$( document ).ready(function() {
if (document.documentElement.clientWidth < 700) {
$("img").hide();
}
$( window ).load(function() {
if (document.documentElement.clientWidth < 700) {
$('img:not(".noScale, .subLogo")').each(function() {
$( this ).css("width", "auto" );
$( this ).css("width", this.width * ( $( document ).width() / 700));
$( this ).css("height", "auto" );
$( this ).show();
});
}
$("img").show();
});
$( window ).resize(function() {
if (document.documentElement.clientWidth < 700) {
$('img:not(".noScale, .subLogo")').each(function() {
$( this ).css("width", "auto" );
$( this ).css("width", this.width * ( $( document ).width() / 700));
$( this ).css("height", "auto" );
});
}
if (document.documentElement.clientWidth > 700) {
$('img:not(".noScale, .subLogo")').each(function() {
$( this ).css("width", "auto");
});
}
});
});
</script>
我相信你可以说我不是JQuery专家,但它有效。
它隐藏了图像(因为看到它们突然调整大小看起来很糟糕,如果您在页面加载之前尝试,有时图像大小是空的(。然后它根据我决定的某个百分比计算调整它们的大小。然后它显示它们。它隐藏并显示所有图像,因为否则它看起来很愚蠢。
在计算之前将宽度设置为自动是因为否则它使用已经减小的图像大小,这会弄乱计算。
它还会在调整窗口大小时再次执行所有操作,但不会隐藏任何内容。
有时在手机上加载可能会很慢,但是一旦加载,并在陆地和港口之间切换,我看不到任何延迟。
无论如何,它目前可以满足我的需求。
如果有人有更好的解决方案,那就太好了。因为这仍然不完美,我喜欢完美。
任何人都想整理/加速我的 JQuery 我不会反对。
谢谢
斯蒂芬