webkit 重叠故障的解决方法
Workaround for webkit overlapping glitch
在一个页面上工作了几个月后,我注意到基于 webkit 的浏览器中有一个奇怪的行为。我用我在这里问的技术实现了一个输入元素 除了 webkit 之外,所有浏览器都可以正常工作。
我搜索了这个确切的行为并试图找到现有的解决方法。建议修复的示例:
@supports (-webkit-overflow-scrolling: touch) {
transform: translate3d(0, 0, 0);
}
但是这不起作用。
我创建了一个问题项目:https://glitch.com/~safari-bug-overflow
不过,我也创建了更简单的例子:
<div>
<div class="wrapper">
<div class="background"></div>
<div class="content">
<h1>
Test
</h1>
<h1>
Test
</h1>
<h1>
Test
</h1>
<h1>Test</h1>
</div>
</div>
</div>
<style>
.background {
position: absolute;
transform: rotateX(58.6297041833deg) rotate(45deg);
background-color: green;
top: 96.619312px;
left: 3.4641016151px;
transform-origin: right top;
border-radius: 100px;
width: 500px;
height: 500px;
}
.wrapper {
position: releative;
}
.content {
position: relative;
}
</style>
这是它在大多数浏览器中的样子:
这是它在基于 webkit 的浏览器中的样子
现在我需要找到解决该问题的方法,因为我预计在不久的将来不会有任何修复。我什至不确定这是 webkit 中的错误还是我 css 中的错误。我认为它是 webkit,因为它适用于所有其他浏览器。
我发现了一个 WebKit 错误报告:https://bugs.webkit.org/show_bug.cgi?id=182520
首先,不要将 h1 用于这些目的,在搜索引擎优化方面这将是一场灾难。 :)
我认为您的问题出在内容 class 上。试过min-height
了吗?
CSS代码
.content {
min-height:300px; /* for example */
}
否则,如果你提供一个 js fiddle 或任何东西将会很有用:)
我自己找到了解决办法。有一天我想,也许 webkit 使用了不同的 z 起始位置。然后我试图将 div 移开。它奏效了。
您可以先在转换中应用 translateZ 来修复错误:
.background {
position: absolute;
transform: rotateX(58.6297041833deg) rotate(45deg);
-webkit-transform: translateZ(-1000px) rotateX(58.6297041833deg) rotate(45deg);
background-color: green;
top: 96.619312px;
left: 3.4641016151px;
transform-origin: right top;
border-radius: 100px;
width: 500px;
height: 500px;
}
.wrapper {
position: releative;
}
.content {
position: relative;
}
请注意 -webkit-transform
上的 translateZ(-1000px)
在一个页面上工作了几个月后,我注意到基于 webkit 的浏览器中有一个奇怪的行为。我用我在这里问的技术实现了一个输入元素
我搜索了这个确切的行为并试图找到现有的解决方法。建议修复的示例:
@supports (-webkit-overflow-scrolling: touch) {
transform: translate3d(0, 0, 0);
}
但是这不起作用。
我创建了一个问题项目:https://glitch.com/~safari-bug-overflow
不过,我也创建了更简单的例子:
<div>
<div class="wrapper">
<div class="background"></div>
<div class="content">
<h1>
Test
</h1>
<h1>
Test
</h1>
<h1>
Test
</h1>
<h1>Test</h1>
</div>
</div>
</div>
<style>
.background {
position: absolute;
transform: rotateX(58.6297041833deg) rotate(45deg);
background-color: green;
top: 96.619312px;
left: 3.4641016151px;
transform-origin: right top;
border-radius: 100px;
width: 500px;
height: 500px;
}
.wrapper {
position: releative;
}
.content {
position: relative;
}
</style>
这是它在大多数浏览器中的样子:
这是它在基于 webkit 的浏览器中的样子
现在我需要找到解决该问题的方法,因为我预计在不久的将来不会有任何修复。我什至不确定这是 webkit 中的错误还是我 css 中的错误。我认为它是 webkit,因为它适用于所有其他浏览器。
我发现了一个 WebKit 错误报告:https://bugs.webkit.org/show_bug.cgi?id=182520
首先,不要将 h1 用于这些目的,在搜索引擎优化方面这将是一场灾难。 :)
我认为您的问题出在内容 class 上。试过min-height
了吗?
CSS代码
.content {
min-height:300px; /* for example */
}
否则,如果你提供一个 js fiddle 或任何东西将会很有用:)
我自己找到了解决办法。有一天我想,也许 webkit 使用了不同的 z 起始位置。然后我试图将 div 移开。它奏效了。
您可以先在转换中应用 translateZ 来修复错误:
.background {
position: absolute;
transform: rotateX(58.6297041833deg) rotate(45deg);
-webkit-transform: translateZ(-1000px) rotateX(58.6297041833deg) rotate(45deg);
background-color: green;
top: 96.619312px;
left: 3.4641016151px;
transform-origin: right top;
border-radius: 100px;
width: 500px;
height: 500px;
}
.wrapper {
position: releative;
}
.content {
position: relative;
}
请注意 -webkit-transform
translateZ(-1000px)