[英]Position fixed doesn't work inside relative position, CSS
我正在尝试将div与position:固定在div与position:relative之间。
这是CSS:
#wrapper {
background-color: #199eaf;
height: auto;
left: 0;
min-height: 100%;
position: relative;
text-align: left;
top: 0;
width: 100%;
}
.menu-space {
background: #fff none repeat scroll 0 0;
height: 174px;
left: 0;
overflow: hidden;
padding: 43px;
position: fixed;
top: 0;
transform: skewY(-10deg);
width: calc(100% + 100px);
z-index: 800;
}
由于某些原因,这不符合我的预期。 我的div在#wrapper div中进入下一个div(请参见屏幕快照: http ://www.awesomescreenshot.com/image/445294/fb3d41bfb92a0f76d60266ed0ac4f0a9),即使我对.menu-space div使用了这两种解决方案之一,也可以使这项工作有效
转换:skewY(-10deg)translation(0px,-101px); 或顶部:-170px;
但是我真的不想使用这些负值。 有人可以帮我找到更好的解决方案吗?
这是菜单的外观http://www.awesomescreenshot.com/image/445297/e799ee584ead6007b9fe16628ccc15bc
并滚动显示: http : //www.awesomescreenshot.com/image/445300/cee6600490bab7e58a479da23ac9974a
谢谢!
默认情况下,变换从元素的中心发生。 您的歪斜使元素从其中心开始扭曲,导致左侧下降,右侧上升。
设置transform-origin: top left
(或0,如果您愿意),您可以摆脱负顶或平移。
.menu-space {
background: #fff none repeat scroll 0 0;
height: 174px;
left: 0;
overflow: hidden;
padding: 43px;
position: fixed;
top: 0;
transform: skewY(-10deg);
transform-origin: top left;
width: calc(100% + 100px);
z-index: 800;
}
见MDN
这样做的原因是transform: skewY(-10deg);
。 根据W3C规范,如果position: fixed;
在对元素应用了变换的元素内部的元素上使用时,固定位置元素相对于该变换的元素定位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.