Css 是否可以从具有变换的父元素中断开定位元素?
请参见此示例: 使用Css 是否可以从具有变换的父元素中断开定位元素?,css,layout,html,Css,Layout,Html,请参见此示例: 使用position:fixed可以将框“b”从其position:relativeparent中分离出来 即使对其父项应用了-*-transform,也可以对框“d”执行相同的操作吗? 如果是,怎么做? 若否,原因为何?是否有任何解决方案/填充胶 为了进一步澄清,在我的现实世界中,使用位置:relative元素通过javascript应用了transform,所以我不能简单地删除它。具体来说,它是在地图上执行平移的元素。这是所有转换的webkit问题 解决方法是创建另一种转换方
position:fixed
可以将框“b”从其position:relative
parent中分离出来
即使对其父项应用了-*-transform
,也可以对框“d”执行相同的操作吗?如果是,怎么做?
若否,原因为何?是否有任何解决方案/填充胶 为了进一步澄清,在我的现实世界中,使用
位置:relative
元素通过javascript应用了transform
,所以我不能简单地删除它。具体来说,它是在地图上执行平移的元素。这是所有转换的webkit问题
解决方法是创建另一种转换方法,并将其应用于使用媒体查询的webkit浏览器(另一种方法取决于要应用的转换)
如果浏览器是Chrome、Safari或(在您的例子中)Firefox,您也可以使用javascript函数来检测浏览器并应用转换替换
但是,这两种解决方法都涉及以另一种方式创建变换(不使用变换)。很可能您必须使用javascript重新创建相同的效果,并将其应用到这些情况中,这远远不够理想
我建议用另一种方法解决这个问题,最有可能的方法是删除位置:fixed
+1:Wow,这是一个奇怪的错误。可能是重复感谢您的快速响应。bug报告提到这在FF/IE/Opera中正常工作,但我发现FF也不工作。我的转换必须是动态的(通过js应用)。媒体查询是否适用于这种情况?@codefox421更新了我的解决方案,告诉我如何使用javascript而不是媒体查询来检测浏览器。至于实际的替换,这取决于您想要应用哪些转换,因为您必须以另一种方式重新创建转换。我正在使用js映射系统(传单),我需要在屏幕上的一个固定位置保留一些通常与映射一起平移的东西。因此,我认为编辑地图的源代码以使用除transform
以外的方法进行平移比找到position:fixed
的替代方法更容易。谢谢你的帮助!
@media screen and (-webkit-min-device-pixel-ratio:0) {
... webkit version here ...
}
// Returns [Browser, Version]
navigator.sayswho = (function(){
var N= navigator.appName, ua= navigator.userAgent, tem;
var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
return M;
})();
if(navigator.sayswho[0] == "Chrome" || navigator.sayswho[0] == "Safari") {
// Do webkit specific fix
}
if(navigator.sayswho[0] == "Firefox") {
// Do Firefox specific fix here
}