自从在多个iPhone和iPad上升级到iOS 7以来,我们看到网站上的部分用户界面发生了一些非常奇怪的事情。
附加图像中的粉红色框位于绝对定位的父级内,它有两个绝对位于其中的白色div,每个div都有不同的不透明度。粉色圆圈只是一个div,其边界半径设置为圆形。在这种布局中根本没有图像。
出于某种原因,浏览器间歇地拉伸粉红色的div,但我想不出任何可能导致它的东西 - 如果我愿意,我不知道如何实现这种效果!
我认为它是浏览器中的一个错误,但我不知道如何修复它。
我没有包含任何代码,因为它真的非常简单,并且没有任何内容会导致这种情况(实际上它在iOS6中有效)。只是希望有人见过这个?
有什么想法吗?
The CSS problem http://i41.tinypic.com/264289i.png
更新 响应cimmamon的评论,这里是代码:
<div class="col" style="left: -3920px; width: 280px;">
<div class="periods">
<div class="period3"></div>
<div class="period2"></div>
<div class="period1"></div>
<div class="nodeline colBk">
<div class="node colBrd"></div>
</div>
</div>
<div class="inner">
<div class="group first">
<div class="branch colBk"></div>
<a class="story">
<div class="strip colBk"></div>
<div class="caption">
<div class="text">
<p class="title">Test</p>
</div>
</div>
</a>
</div>
</div>
适用于'期间'容器和子代的CSS:
.tls .col { display: inline-block; position: absolute; top: 0; }
.periods { height: 72px; overflow:hidden; position: relative; border-left: 1px solid #fff; }
.period2 { height: 30px; opacity: 0.6; background-color: #fff; position: absolute; width: 100%; }
.period1 { height: 25px; opacity: 0.72; top: 30px; background-color: #fff; position: absolute; width: 100%; }
.nodeline { height: 61px; }
.colBk { background-color: #dd545c; }
.nodeline { height: 61px; }
.node { position: absolute; margin-left: -15px; left: 50%; bottom: 0px; width: 17px; height: 17px; border-radius: 50%; border: 6px solid #dd545c; background-color: #f9f9f9; }
.colBrd { border-color: #dd545c; }
这是一个奇怪的错误 - CSS中没有任何内容可以导致我看到这一点。
关于我可以添加哪些CSS可能会强制它正确渲染的任何建议?你认为单靠高度就足够了,但显然不是。
答案 0 :(得分:11)
我遇到了这个问题,现在它也出现在Safari 7中。
以下是我案例中发生的简化版本
<强> HTML 强>
<ul>
<li>
<a> Some text </a>
</li>
<li>
<a> Some other text </a>
</li>
</ul>
然后我有一些javascript(在我的情况下是bootstrap工具提示),它添加了一个使得html的元素
<ul>
<li>
<a> Some text </a>
<div style="position: absolute" class="tooltip"> Some content here </div>
</li>
<li>
<a> Some other text </a>
</li>
</ul>
在整个ul
将拉伸到新div 的顶部之前,新div已暂时显示。
这必须是safari中的一个错误,但是将以下CSS添加到插入的div中可以作为一种解决方法。
.tooltip {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
}
这会强制插入的div在新的复合层中渲染,这似乎会阻止Safari搞砸。
希望这足以让你找到解决方案,但如果没有,请告诉我,我可以更多地回答这个问题。
答案 1 :(得分:2)
尝试使用backface-visibility
:
-webkit-backface-visibility:hidden;
它使我的标题延伸,一旦移除了世界,并且是一个更幸福的地方
在iOS 6&amp; iOS 7&amp; Android 4.2 +
答案 2 :(得分:1)
避免创建其他合成图层的另一个明显的解决方法是将perspective
添加到GPU合成上下文中的元素。 (在这种情况下,这是带有opacity
的元素。)请注意,如果您使用translate3d
将内容放置在3D空间中,则会产生视觉影响,并且可能无法成为有效的解决方法。 / p>
.period1, .period2, .period3 {
-webkit-perspective: 1px;
perspective: 1px;
}
答案 3 :(得分:0)
也许这解决了这个问题:
添加高度:17px;到.node所以你的CSS应该看起来像
.node {
background-color: #F9F9F9;
border: 6px solid #DD545C;
border-radius: 50% 50% 50% 50%;
bottom: 0;
height: 17px; /*new*/
left: 50%;
margin-left: -15px;
position: absolute;
width: 17px;
}