想像:
<div class="outer">
<div class="inner">
</div>
</div>
哪里:
-
.outer
是列结构的一部分,并且其宽度是一个百分位,因此流体。 -
.inner
表示fixed
应与100%的宽度的填补位置元件.outer
元件。 然而,其位置垂直地保持不变,因此fixed
。
我试图实现这种布局与下面的CSS:
.outer {
position: relative;
width: %;
}
.inner {
position: fixed;
width: 100%;
}
然而, .inner
不计算其宽度为百分比relative
父。 相反,它使窗口/文件的全宽。 尝试任何left
或right
性质导致相同的父-忽略品质。
有没有办法解决?
.outer {
position: relative;
width: %;
}
.inner {
position: fixed;
width: inherit;
}
这应该够了吧。
position: fixed
总是相对于窗口/浏览器,从而它不能被用来解决问题。 固定定位将删除DOM的自然秩序的要素,因此不会留你的外层div内了,因此为什么它需要在浏览器的整个宽度,而不是你的容器。 你需要使用什么是position: absolute
放置.inner
相对于.outer
。 您可以在您的元素位置,以及有它的宽度由包含.outer
格。
用这个 :
.inner {位置是:固定; 左:0; 右:0;
}
固定元件只取绝对值作为宽度。 如果你的父容器是流体(宽度的百分比),你需要动态设置的固定元素的宽度。 你需要得到包装容器的宽度,并设置它的粘性元素。
CSS
.outer {width: 25%;}
.inner {position: fixed;}
JS
var fixedWidth = $('.outer').css('width');
$('.inner').css('width', fixedWidth);
此外,还可以的情况下,调整窗口大小添加事件侦听器。
JS
window.addEventListener('resize', resize);
function resize() {
var fixedWidth = $('.outer').css('width');
$('.inner').css('width', fixedWidth);
}
你可以看看这个的jsfiddle ,我提出,说明你的问题的解决,您可以使用此代码完全一样你想要做什么。
position:fixed
总是相对于视口/浏览器窗口,而不是祖先。
怎么样使用这样的小提琴 ?
.outer {
width: 20%;
height: 1200px;
margin-left: 5%;
float: left;
}
.inner {
height: 200px;
position: fixed;
top: 0;
background: orange;
right: 75%;
left: 5%;
}