今天我发现 Firefox 18.0.2 的一个奇怪行为。即使更新到 FF19.0 也无济于事。
我需要创建具有动态大小并保持特定纵横比的拇指。可能还有其他更好的解决方案,如下所示。
Html: - 文档类型是 HTML5
<div class="img">
<img alt="" src="/blank.gif" class="imgScalar">
<div class="imgA">
<div class="imgP">
<div style="background-image:url(-pathToThumb-)" class="thumb"></div>
</div>
</div>
</div>
“blank.gif”的固定大小为 2x2px。具有相同的边长很重要。
CSS:
.img {
position: relative;
overflow: hidden;
margin: 1px 0;
}
.img .imgScalar {
width: 100%;
}
.img .imgA {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: hidden;
background-image: url('../gfx/loader.gif');
background-repeat: no-repeat;
background-position: 50% 50%;
}
.img .imgP {
padding: 0 1px;
height: 100%;
overflow: hidden;
}
.img .thumb {
position: relative;
width: 100%;
height: 100%;
background-position: center top;
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.img .imgScalar,
.img.r16-9 .imgScalar {
margin-bottom: -43.75%;
}
.img.r16-10 .imgScalar {
margin-bottom: -37.5%;
}
.img.r4-3 .imgScalar {
margin-bottom: -25%;
}
.img.r9-16 .imgScalar {
margin-bottom: 77.77777777777777%;
}
.img.r10-16 .imgScalar {
margin-bottom: 60%;
}
.img.r3-4 .imgScalar {
margin-bottom: 33.333333333333314%;
}
对我来说的好处是,我可以在点击@media 规则时通过 CSS 切换宽高比。
@media (max-width: 767px) {
.img.r9-16 .imgScalar,
.img.r10-16 .imgScalar,
.img.r3-4 .imgScalar {
margin-bottom: -25%;
}
}
作为信息:这被集成在默认为 1200px 宽度的静态布局中,如果分辨率低于 1200px 并且客户端浏览器支持规则并且还对移动分辨率做出反应 - 仅 CSS 所有内容。
我已经用 Google Chrome、Opera、Safari、Internet Explorer 和我的 iPhone 测试了上述内容,它似乎可以在这些测试的设备上运行……唯一这样做的浏览器是 Firefox。
似乎是什么问题:
因为.thumb是绝对定位的.imgA的子元素,所以背景大小似乎应用于 .imgA 的下一个相对父级,而不是.thumb本身也是相对定位的。出于测试目的,我还将.imgP 设为相对,但这也无济于事。
临时解决办法:
html:
<div class="img">
<div class="imgWrap">
<img alt="" src="/iS16-9.gif" style="background-image:url(-imgPath-)" class="imgScalar">
</div>
</div>
iS16-9.gif 是几个用作“帮助”元素的空白图像之一。顾名思义,它有 16px 的宽度和 9px 的高度来表示纵横比。
CSS:
.img > .imgWrap {
position: relative;
margin: 1px;
background-image: url('../gfx/loader.gif');
background-repeat: no-repeat;
background-position: 50% 50%;
}
.img > .imgWrap > img {
width: 100%;
background-position: center top;
background-repeat: no-repeat;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
太糟糕了,我现在错过了在不使用 javascript-components 的情况下响应不断变化的分辨率的能力。
也许你们中的一些人知道如何解决这个问题?
//编辑:我检查了哪些浏览器与第一个解决方案不兼容:
- 火狐
- 冰鼬
- 风波濑 0.5.8
- 冰猿
- 海猴子
除了 MSIE5.5 之外的任何其他浏览器都没有问题 - 即使 MSIE6.0 似乎也能够处理这个问题。只有基于 mozilla 的浏览器在所有版本中都完全失败了(我见过的甚至是 20 个)