19

想像:

<div class="outer">
    <div class="inner">
    </div>
</div>

どこ:

  • .outerは柱構造の一部であり、その幅はパーセンタイルであるため、流動的です。
  • .innerfixed要素の幅を100%で埋める位置要素を表し.outerます。ただし、その位置は垂直方向に同じままであるため、fixed

私は次のCSSでこのレイアウトを実装しようとしました:

.outer {
    position: relative;
    width: %;
}
.inner {
    position: fixed;
    width: 100%;
}

ただし、.innerその幅をrelative親のパーセンテージとして計算しません。代わりに、ウィンドウ/ドキュメントの全幅を埋めます。leftorプロパティを試行するとright、同じ親が品質を無視することになります。

これを回避する方法はありますか?

4

7 に答える 7

7
.outer {
    position: relative;
    width: %;
}
.inner {
    position: fixed;
    width: inherit;
}

これでうまくいくはずです。

于 2014-10-08T20:39:59.380 に答える
1

固定要素は幅として絶対値のみを取ります。親コンテナーが流動的 (幅がパーセンテージ) の場合、固定要素の幅を動的に設定する必要があります。ラッピング コンテナの幅を取得し、スティッキー要素に設定する必要があります。

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);
}
于 2016-06-20T00:53:43.493 に答える
0

このfiddleのようなものを使用するのはどうですか?

.outer {
    width: 20%;
    height: 1200px;
    margin-left: 5%;
    float: left;
}
.inner {
    height: 200px;
    position: fixed;
    top: 0;
    background: orange;
    right: 75%;
    left: 5%;
}
于 2014-02-08T05:41:59.167 に答える
0

position:fixed先祖ではなく、常にビューポート/ブラウザウィンドウに相対的です。

于 2014-01-28T06:34:04.400 に答える
0

私が作成したこのjsfiddleを見て、問題の修正を示してください。このコードを、希望どおりに正確に使用できます。

于 2012-09-03T22:31:07.550 に答える