通常情况下fixed定位的元素都是相对于文档的。即使fixed定位的元素所在的容器是relative、absolute,甚至也是一个fixed定义的,内部的fixed定位元素依然不受其影响,直接相对于文档。但在一些特殊情况下fixed的参照对象确实可以发生改变。
下面这个测试是让fixed定义的元素分别呆在absolute、relative、fixed中
运行<style>
body {margin:0px;}
body>div {
width:50px;height:50px;left:30px;top:30px;
border:1px solid red;
}
body>div:nth-child(1) {position:absolute;}
body>div:nth-child(2) {position:relative;}
body>div:nth-child(3) {position:fixed;}
body>div>div {
position:fixed;border:1px solid blue;
width:10px;height:10px;left:10px;top:10px;
}
</style>
<body>
<div><div></div></div>
<div><div></div></div>
<div><div></div></div>
</body>
结果很明显,fixed总是相对于文档的。通常情况下就是这样了,但CSS3中引入了新特性,这些新特新就可能影响到fixed定位的参照。现在我们对fixed定位的元素所在的容器做一个CSS3的变换如何?比如旋转0度
运行<style>
body {margin:0px;}
body>div {
width:50px;height:50px;margin:30px;
border:1px solid red;
-webkit-transform:rotate(0deg);
transform:rotate(0deg);
}
body>div>div {
position:fixed;border:1px solid blue;
width:10px;height:10px;left:10px;top:10px;
}
</style>
<div><div></div></div>
只有IE暂未支持这个特性,Chrome和Firefox都已经支持了。当如果把上面测试中的fixed改为absolute就全都能兼容。这就意味着,CSS3的变换可以改变其子元素的定位参照物。即使position是static的容器,只要做了变换就都可以作为子元素定位的参照对象。上面的旋转0度只是个例子,换成其它变换也无妨。
测试于:
Chrome 31.0.1650.63 m
Firefox 26
IE 11
日期:2015年04月16日
标签: 广州网站设计公司 、 广州网站设计 、 广州网站建设公司 、 广州网站建设 、 广州网站制作公司 、 广州网站制作 、 高端网站设计 、 高端网站建设 、 广州高端网站设计 、 广州高端网站建设