Html 位置:固定和转换-如何返回正常的固定行为?
我使用Html 位置:固定和转换-如何返回正常的固定行为?,html,css,css-position,transform,Html,Css,Css Position,Transform,我使用transform:translateZ(0)作为移动修复(我需要不断渲染div)。 但是transform创建了另一个上下文,现在我的fixeddiv的高度取决于父级高度,而不是视口高度,因为没有transform 我需要转换,但我也需要一个正常的固定的行为。我该怎么办?关于这个“问题”,Chrome上有很多bug报告。我自己在编写粘性插件时也遇到过同样的问题,但事实证明这实际上是正常的行为。这是因为transform使用它自己的坐标系来根据。基本上,元素获得了相对于其自身固定位置的固定
transform:translateZ(0)代码>作为移动修复(我需要不断渲染div)。
但是transform
创建了另一个上下文,现在我的fixed
div的高度取决于父级高度,而不是视口高度,因为没有transform
我需要转换
,但我也需要一个正常的固定的
行为。我该怎么办?关于这个“问题”,Chrome上有很多bug报告。我自己在编写粘性插件时也遇到过同样的问题,但事实证明这实际上是正常的行为。这是因为transform
使用它自己的坐标系来根据。基本上,元素获得了相对于其自身固定位置的固定位置。不幸的是,你对此无能为力
可能的解决方案
解决问题的一种方法是给“粘性”元素一个相对于文档的绝对位置。然后用JavaScript重新定位元素。大致如下:
var element = document.getElementById('element');
window.addEventListener('scroll', function() {
requestAnimationFrame(setTop);
});
function setTop() {
element.style.top = window.pageYOffset;
}
这样,元素的行为就好像它有一个固定的位置,而您仍然可以毫无问题地使用transform
属性。关于这个“问题”,Chrome上有很多错误报告。我自己在编写粘性插件时也遇到过同样的问题,但事实证明这实际上是正常的行为。这是因为transform
使用它自己的坐标系来根据。基本上,元素获得了相对于其自身固定位置的固定位置。不幸的是,你对此无能为力
可能的解决方案
解决问题的一种方法是给“粘性”元素一个相对于文档的绝对位置。然后用JavaScript重新定位元素。大致如下:
var element = document.getElementById('element');
window.addEventListener('scroll', function() {
requestAnimationFrame(setTop);
});
function setTop() {
element.style.top = window.pageYOffset;
}
这样,元素的行为就好像它有一个固定的位置,而您仍然可以毫无问题地使用transform
属性。请确切解释为什么需要使用translateZ(0)
translateZ(0)
强制Chrome Android正确地重新绘制div。当Chrome Android地址栏出现或隐藏时,它允许div具有适当的高度在固定位置的元素上使用translateZ
是不可能的。我为您的问题添加了一个可能的解决方案。请确切解释为什么需要使用translateZ(0)
translateZ(0)
强制Chrome Android正确地重新绘制div。当Chrome Android地址栏出现或隐藏时,它允许div具有适当的高度在固定位置的元素上使用translateZ
是不可能的。我为你的问题增加了一个可能的解决办法。