位置は固定ですが、コンテナに対して相対的です


639

私は修正しようとしていますdivので、それは常に画面の上部にくっつきます:

position: fixed;
top: 0px;
right: 0px;

ただし、はdiv中央のコンテナ内にあります。使用するposition:fixeddiv、ブラウザウィンドウの相対位置が修正されます。たとえば、ブラウザの右側に当たるようになります。代わりに、コンテナに対して相対的に修正する必要があります。

position:absolute基準にして要素を修正するために使用できることはわかっていますがdiv、ページを下にスクロールすると、要素は消失し、のように上部に固定されませんposition:fixed

これを達成するためのハックまたは回避策はありますか?


「テザーは、ページ上の他の要素の隣に任意の要素を配置するために使用できる低レベルのUIライブラリです。」github.com/shipshapecode/tether + tether.ioのデモ/ドキュメント
Kai

回答:


408

短い答え:いいえ。(CSS変換で可能になりました。以下の編集を参照してください)

長い答え:「固定」配置を使用する場合の問題は、要素がフローから外れることです。したがって、親がない場合と同じように、親に対して相対的に再配置することはできません。ただし、コンテナが既知の固定幅である場合は、次のようなものを使用できます。

#fixedContainer {
  position: fixed;
  width: 600px;
  height: 200px;
  left: 50%;
  top: 0%;
  margin-left: -300px; /*half the width*/
}

http://jsfiddle.net/HFjU6/1/

編集(2015年3月):

これは古い情報です。CSS3変換の魔法の助けを借りて、動的サイズ(水平および垂直)のコンテンツを中央揃えにすることが可能になりました。同じ原則が適用されますが、コンテナをオフセットするためにマージンを使用する代わりに、を使用できますtranslateX(-50%)。これは上記のマージントリックでは機能しません。幅が固定されていない限り、オフセットの量がわからないため、相対値(など50%)を使用できません。に適用されます。 transform動作が異なります。その値は、それらが適用される要素を基準にしています。したがって、は要素の幅の半分50%transform意味し50%、マージンは親の幅の半分を意味します。これはIE9 +ソリューションです

上記の例と同様のコードを使用して、完全に動的な幅と高さを使用して同じシナリオを再作成しました。

.fixedContainer {
    background-color:#ddd;
    position: fixed;
    padding: 2em;
    left: 50%;
    top: 0%;
    transform: translateX(-50%);
}

中央揃えにしたい場合は、次のようにすることもできます。

.fixedContainer {
    background-color:#ddd;
    position: fixed;
    padding: 2em;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

デモ:

jsFiddle:水平方向のみ中心
jsFiddle:中心水平方向と垂直方向の両方で
オリジナルクレジットは、ユーザーに行くaaronk6に私にそれを指摘するために、この答え


私のために美しく働いた。私は左側に鉱山が必要で、すでに中央に固定されていないdivがあったため、左マージンを揃えるまで左に減らす必要がありました。ウィンドウの幅に関係なく、位置合わせされたままになることはありません。ありがとう。+1
Iain M Norman

9
@Josephなぜposition:fixed特定せずに、topまたはleft ときどき機能しないアイデアがあるのですか?一部のブラウザでは、要素が通常の位置にある場合、要素のデフォルトが通常の場所に表示されます。stackoverflow.com/questions/8712047/...
フラッシュ

2
高さと幅を固定せずにどうですか?私の場合、ボディタグまで、どのコンテナーにも信号幅を指定していません。あなたが私に何をするように言うでしょうか。
mfq 2013

1
@mfq残念ながら、このメソッドは既知の高さと幅がないとまったく機能しません。何を使うかは、何を中心にしようとしているのかに大きく依存します。画像の場合は、100%x 100%コンテナの背景として使用します。完全に動的な実際の要素である場合は、JavaScriptソリューションを使用して寸法を取得することを検討する必要があります。
ジョセフ・マリクル2013

2
left:inherit固定位置要素に追加すると、ブラウザが親のオフセットを尊重するように強制できることがわかりました。
Willster、2014

180

実際、これは可能であり、受け入れられた答えは集中化のみを扱います。これは十分に簡単です。また、JavaScriptを使用する必要はありません。

これにより、あらゆるシナリオに対応できます。

位置:絶対位置:相対コンテナー内に配置する場合と同じようにすべてを設定し、でdiv内に新しい固定位置divを作成します。position: absoluteただし、上と左のプロパティ設定しないでください。その後、コンテナに対して、好きな場所で修正されます。

例えば:

/* Main site body */
.wrapper {
    width: 940px;
    margin: 0 auto;
    position: relative; /* Ensure absolute positioned child elements are relative to this*/
}

/* Absolute positioned wrapper for the element you want to fix position */
.fixed-wrapper {
    width: 220px;
    position: absolute;
    top: 0;
    left: -240px; /* Move this out to the left of the site body, leaving a 20px gutter */
}

/* The element you want to fix the position of */
.fixed {
    width: 220px;
    position: fixed;
    /* Do not set top / left! */
}
<div class="wrapper">
    <div class="fixed-wrapper">
        <div class="fixed">
            Content in here will be fixed position, but 240px to the left of the site body.
        </div>
    </div>
</div>

悲しいことに、このスレッドがAndroidのWebKitレンダリングのボックスシャドウのぼかしピクセルを固定位置要素のマージンとして解決することを望んでいましたが、それはバグのようです。
とにかく、これが役に立てば幸いです!


1
まったくシナリオではありませんが、良いスタートです。.wrapperの下に多くのスペースがある場合、.fixed-wrapperは親の一番下で終了しますが、.fixed要素は両方のコンテナーから下のコンテンツに流れ続けます。私が言ったように、それは良いスタートであり、完璧ではありませんが、いくつかのjsなしでこれがどのようにして達成できるかわかりません。
o_O 2013

4
ただし、これは流動的なデザインではうまく機能しません。
Zuhaib Ali 2014

3
私はこれを試みましたが、下にスクロールすると、適用したヘッダーが固定されています(親は相対で、親は絶対です)スクロールすると移動しませんでした。
ミラージュ

これは、ChromiumとFirefoxの右上のdivで私にとってうまくいきましたが、固定divの垂直位置が異なっていました(Chromiumでは親divの上にあり、Firefoxでは内側にありました)。
ダミアン

2
これが私の答えでした!ありがとう@Graeme Blackwood
Tabu.Net

136

はい、仕様によると、方法があります。

Graeme Blackwood'sが受け入れられる答えであるべきだと私は同意しますが、それは問題を実質的に解決するので、固定要素をそのコンテナに対して相対的に配置できることに注意する必要があります。

申し込み時に偶然気づいた

-webkit-transform: translateZ(0);

ボディに対して、(ビューポートの代わりに)それに対して固定された子を作成しました。そのため、私の固定要素lefttopプロパティは、コンテナーに相対的になりました。

だから私はいくつかの調査をしたところ、問題はすでにエリック・マイヤーによってカバーされており、それが「トリック」のように感じられたとしても、これは仕様の一部であることがわかりました:

レイアウトがCSSボックスモデルによって管理されている要素の場合、変換にnone以外の値を指定すると、スタックコンテキストと包含ブロックの両方が作成されます。オブジェクトは、固定配置された子孫の包含ブロックとして機能します。

http://www.w3.org/TR/css3-transforms/

したがって、親要素に変換を適用すると、それが包含ブロックになります。

だが...

問題は、このビットが仕様の一部ではないように見えても、要素が修正済みとして動作を停止するため、実装がバグ/クリエイティブのように見えることです。

同じ動作がSafari、Chrome、Firefoxにありますが、IE11にはありません(fixed要素はまだ固定されたままです)。

別の興味深い(文書化されていない)ことはしながら、固定要素は、形質転換された要素の中に含まれている場合ということであるtopleft特性が今尊重、コンテナに関連するbox-sizingプロパティを、そのスクロールコンテキストボックスかのように、要素の境界にわたって延長します-sizingはに設定されましたborder-box。あるクリエイティブな人にとっては、これはおそらく遊び道具になるかもしれません:)

テスト



これはChromeでうまくいきます。IEで同じことを達成する方法に関するアイデアはありますか?translateZを使用してみましたが、IEのどのバージョンでも使用できませんでした。
Anish Patel 14

同じ.. IEでこれを行う方法を誰かが知っていますか?ブラウザを検出し、体系的に表示するか、または表示しないかleft:(これが混乱していることを考慮して)
Tallboy

相対コンテナーで修正する必要があるが、transformプロパティによって変更される反対の条件を満たしているだけです。あなたの答えはとても役に立ちます、ありがとう!
mytharcher 2014

8
@Francesco Frapportiはこれが機能しないようです...最新バージョンのChromeではとにかく(バージョン42.0.2311.90):(
jjenzz

60

あなたが設定しない限り、left: 0またはright: 0divの位置を固定に設定した後であれば、答えはイエスです。

http://jsfiddle.net/T2PL5/85/

サイドバーdivをチェックアウトします。これは固定されていますが、ウィンドウの視点ではなく、親に関連しています。

body { background: #ccc; }

.wrapper {
    margin: 0 auto;
    height: 1400px;
    width: 650px;
    background: green;
}

.sidebar {
    background-color: #ddd;
    float: left;
    width: 300px;
    height: 100px;
    position: fixed;
}

.main {
    float: right;
    background-color: yellow;
    width: 300px;
    height: 1400px;
}

<div class="wrapper">wrapper
    <div class="sidebar">sidebar</div>
    <div class="main">main</div>
</div>

12
これがより多くの投票を得ない理由は何ですか?私にとって最も明白な解決策のようです。
2014

ブラウザ間の互換性についてはどうですか?これをチェックした人はいますか?
Alexandre Bourlier 2015年

3
これは正しいですが、固定要素の「配置」についてのみです。コンテナーの幅を尊重したり、サイズを変更したりすることはありません。たとえば、max-width:1000pxのフルイドラッパーがある場合、マージン:自動; これは機能しません。すべてを固定幅にできる場合は、これで問題が解決します。
Rhys

3
@AlexandreBourlierはい、これは、Chrome、Firefox、IE11の固定要素では少なくともうまく機能しました。
Jason Frank

完璧に働きました。要素をコンテナの右側に配置するには、margin-left:X%を追加する必要がありました
Anand

45

position: stickyこれは、概念的にに似てposition: fixedいる要素を配置する新しい方法です。違いは、指定されたオフセットしきい値がビューポートで満たされるまで、の要素はその親内でのposition: stickyように動作position: relativeすることです。

Chrome 56(2016年12月現在ベータ版、2017年1月に安定)の位置:stickyが復活しました。

https://developers.google.com/web/updates/2016/12/position-sticky

詳細は 「着陸スティック」にあります!位置:WebKitの粘着性のある土地


これにより、作業が非常に簡単になります。唯一の問題は、スティッキがInternet ExplorerまたはEdge 15以前のバージョンでサポートされていないことです。
リックス2018

1
position:sticky素晴らしいです。IE caniuse.com/#feat=css-sticky
Yarin

笑、とても古いAPI、そしてあなたは私の日を節約します...フレックステーブルの固定列に使用しています。
Vladislav Gritsenko、

1
「その親の中で」-親が上にスクロールしても見えなくなった場合でも、粘着性のある要素を上部に残すことは可能ですか?
Fikret、

27

2019ソリューション:position: stickyプロパティを使用できます。

以下は、使用例とCODEPENの違いを示すCODEPENの例ですposition: fixed

以下にその動作を説明します。

  1. スティッキー位置の要素は、ユーザーのスクロール位置に基づいて配置されます。基本的にposition: relative、要素が特定のオフセットを超えてスクロールされるまでのように動作します。その場合、要素は位置に変わります:固定。スクロールバックすると、以前の(相対)位置に戻ります。

  2. これは、ページ内の他の要素のフローに影響を与えます。つまり、ページの特定のスペースを占有します(と同様position: relative)。

  3. コンテナ内で定義されている場合は、そのコンテナを基準に配置されます。コンテナーにオーバーフロー(スクロール)がある場合は、スクロールオフセットに応じて、position:fixedになります。

したがって、固定機能を実現したいがコンテナ内では、スティッキーを使用します。


素晴らしい解決策。position: stickyまだ知りませんでした。たくさん助けてくれて、ありがとう!
dave0688

これを投稿しようとしていたところです。いい答えです!粘着性がある方法です。
dkellner

Codepenで出力ウィンドウサイズを大きくすると、固定要素は固定されずに上に移動します。良くない。より良い解決策は、ビューポートの下部に固定されたままにします。
AndroidDev

@AndroidDevページ全体で固定されるように定義されているのは最上位の要素のみです。必要に応じてレンダリングされています。その他の要素は、さまざまなケースの説明例です。
プランシュティワリ

18

固定位置のdivから上部と左側のスタイルを削除するだけです。ここに例があります

<div id='body' style='height:200%; position: absolute; width: 100%; '>
    <div id='parent' style='display: block; margin: 0px auto; width: 200px;'>
        <div id='content' style='position: fixed;'>content</div>
    </div>
</div> 

#content divは、親divが配置されている場所に配置されますが、そこで修正されます。


3
なぜマイナス?これは、DOMのフロー内のどこにでも要素を修正するのに最適です。deadlykitten.com/tests/fixedPositionTest.php
hobberwickey

18

このjQueryプラグインを作成して、コンテナー(表形式のデータ)が中央に配置されている場合と同様の問題を解決しました。リストがスクロールされたときにヘッダーをページの上部に固定する必要がありました。コンテナーを配置した場所(中央、左、右)に配置し、水平方向にスクロールしたときにページと共に左右に移動できるようにするための表データ。

この問題を解決できるこのjQueryプラグインへのリンクは次のとおりです。

https://github.com/bigspotteddog/ScrollToFixed

このプラグインの説明は次のとおりです。

このプラグインは、要素が垂直方向にビューの外にスクロールされた場合に、要素をページの上部に固定するために使用されます。ただし、水平スクロールで要素が左または右に移動し続けることができます。

オプションmarginTopを指定すると、垂直スクロールがターゲット位置に到達すると、要素は垂直上方への移動を停止します。ただし、ページが左または右にスクロールされると、要素は水平方向に移動します。ページがスクロールダウンされてターゲット位置を通過すると、要素はページ上の元の位置に復元されます。

このプラグインは、Firefox 3/4、Google Chrome 10/11、Safari 5、およびInternet Explorer 8/9でテストされています。

特定のケースでの使用法:

<script src="scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="scripts/jquery-scrolltofixed-min.js" type="text/javascript"></script>

$(document).ready(function() {
    $('#mydiv').scrollToFixed();
});

12

私はクライアントがコンテンツ領域の外に座りたいと望んでいた広告でこれをしなければなりませんでした。私は単に以下を実行しました、そしてそれは魅力のように働きました!

<div id="content" style="position:relative; width:750px; margin:0 auto;">
  <div id="leftOutsideAd" style="position:absolute; top:0; left:-150px;">
    <a href="#" style="position:fixed;"><img src="###" /></a>
  </div>
</div>

私の広告は幅が140ピクセルだったので、150ピクセル左に移動して、ウェブサイトのフレームの端に対して少し右マージンを与えました。
エリックK

7

2つのHTML要素と純粋なCSS(最新のブラウザー)

このjsFiddleの例を参照してください。サイズを変更し、固定要素がフロート要素と一緒に移動する様子を確認します。最も内側のスクロールバーを使用して、スクロールがサイトでどのように機能するかを確認します(固定要素は固定されたままです)。

ここでは多くが述べてきたように、一つのキーは上の任意の位置設定を設定されていないfixed(ノー要素toprightbottom、またはleft値)。

むしろ、すべての固定要素(最後のボックスに4つあることに注意してください)を、配置するボックスの最初に配置します。

<div class="reference">
  <div class="fixed">Test</div>
  Some other content in.
</div>

次に、を使用margin-topmargin-leftて、次のCSSのように、それらをコンテナーに関連して「移動」します。

.fixed {
    position: fixed;
    margin-top: 200px; /* Push/pull it up/down */
    margin-left: 200px; /* Push/pull it right/left */
}

fixed要素は他のすべてのレイアウト要素を無視するため、フィドルの最後のコンテナは複数のfixed要素があり、左上隅に関連するこれらの要素がすべてあることに注意してください。しかし、これは、それらがすべてコンテナの最初に配置されている場合にのみ当てはまります。この比較フィドルは、コンテナのコンテンツ内に分散すると、配置が信頼できなくなることを示しています。ます。

ラッパーがstaticrelative、またはabsoluteであるかどうかは関係ありません。


3

私のjQueryプラグインFixToを試すことができます

使用法:

$('#mydiv').fixTo('#centeredContainer');

2

相対固定位置を実現する別の奇妙な解決策は、コンテナーをiframeに変換することです。これにより、固定要素をページ全体ではなくコンテナーのビューポートに固定できます。


2

純粋なCSSでは、どうしてもそれを行うことができません。少なくとも私はしていません。ただし、jQueryを使用すると、非常に簡単に行うことができます。私の問題を説明します。少し変更するだけで使用できます。

まず、要素の上部(ウィンドウの上部から)を固定し、左側のコンポーネントを親要素から継承するようにしました(親要素が中央に配置されているため)。左のコンポーネントを設定するには、要素を親に入れて設定するだけですposition:relativeて、親要素にします。

次に、スクロールバーが上にあるとき(yゼロがスクロールされているとき)に、要素が上からどれだけあるかを知る必要があります。再び2つのオプションがあります。まず、それは静的(いくつかの数値)であるか、親要素から読み取る必要があります。

私の場合は、上から150ピクセルです。150が表示されたら、スクロールしていないときの上からの要素の量です。

CSS

#parent-element{position:relative;}
#promo{position:absolute;}

jQuery

$(document).ready(function() { //This check window scroll bar location on start
    wtop=parseInt($(window).scrollTop());
    $("#promo").css('top',150+wtop+'px');

});
$(window).scroll(function () { //This is when the window is scrolling
    wtop=parseInt($(window).scrollTop());
    $("#promo").css('top',150+wtop+'px');
});

問題は、問題のdivがスクロールするとちらつくことです。
vvohra87 2013

おそらく、スクロールの更新が速すぎるか、速すぎるためです。私にはその問題はありませんでしたが、たとえば「10ms」または一定時間ごとに更新され、高さを変更するたびにブロック値に設定するグローバル「ブロッカー」を使用してみることをお勧めします。もちろん、if条件を.scrollイベントに追加して、この期間(10ms)でdivをすでにスクロールしているかどうかを確認する必要があります。私は試していませんが繰り返しますが、うまくいくと思います:)このようにすると、divが位置を変更しすぎてコンピュータが実際に追従できなくなり、人間の目がそれを理解できるようになります。
Br氏2013

私はすでにあなたの答えに+1メイトを与えました;)グローバルループメソッドをアタッチすることの難しさは本当にパフォーマンスです。このようなものを古いPCやタブレットでうまく機能させるのは大変です。多くのAの時間は仕事で後輩devが書かれた「VAR x」のページが長すぎる開いたままにされている場合、不要なメモリリークが生じ、このような方法で内部:Pしかしがいやあなたの提案が唯一のように思える本当のオプション。
vvohra87 2013

あなたはグローバルループでポイントを得ました。私は同意しません 私はこの種の問題について考えたいので、別の提案を書いたのはそのためです:) Tbh、今は少し見栄えがよく、私はそれを避けますxD別の解決策を得ました。funcを呼び出すスクロールイベントでsetTimeout()を設定することについて また、divの動きを作成します。タイムアウトを待機している間にtrueに設定されているグローバルブロッカーを使用し、タイムアウトが呼び出されると、ブロッカーをfalseに戻し、しばらくしてから別の呼び出しを有効にします。この方法では、グローバルループを使用しません。ただし、divの移動頻度を制御できます。
Mr Br 2013

それはよりエレガントですが、受け入れるのは難しいと思います。これは、htmlとcssの仕様がtbhを処理することを期待しているものです。jsがそもそも関与しているという事実は嫌いです。
vvohra87 2013

1

これは簡単です(以下のHTMLに従って)

トリックは、 "position:fixed;"の要素(div)の上部または左側を使用しないことです。これらが指定されていない場合、 "fixed content"要素は、囲んでいる要素( "position:relative;"のdiv)に対して相対的に表示され、ブラウザウィンドウに対してINSTEAD OF !!!

<div id="divTermsOfUse" style="width:870px; z-index: 20; overflow:auto;">
    <div id="divCloser" style="position:relative; left: 852px;">
        <div style="position:fixed; z-index:22;">
            <a href="javascript:hideDiv('divTermsOfUse');">
                <span style="font-size:18pt; font-weight:bold;">X</span>
            </a>
        </div>
    </div>
    <div>  <!-- container for... -->
         lots of Text To Be Scrolled vertically...
         bhah! blah! blah!
    </div>
</div>

上記では、垂直スクロールのあるdiv内の多くのテキストの上部に閉じる「X」ボタンを見つけることができました。"X"は所定の位置にあります(スクロールしたテキストでは移動しませんが、ユーザーがブラウザーウィンドウの幅を変更すると、囲んでいるdivコンテナーで左右に移動します!したがって、垂直方向に "固定"されますが、囲んでいる要素を水平に!

これが機能する前に、テキストコンテンツを下にスクロールすると、「X」が上にスクロールして見えなくなりました。

私のjavascript hideDiv()関数を提供していないことをお詫びしますが、この投稿を不必要に長くすることになります。できるだけ短くすることにしました。


IE8で魅力的なクロスブラウザーソリューションが動作します。
dmi3y

1

変換を使用してこれがどのように機能するかを実証するために、jsfiddleを作成しました。

HTML

<div class="left">
    Content
</div>
<div class="right">
<div class="fixedContainer">
    X
</div>
    Side bar
</div>

CSS

body {
  margin: 0;
}
.left {
  width: 77%;
  background: teal;
  height: 2000px;
}
.right {
  width: 23%;
  background: yellow;
  height: 100vh;
  position: fixed;
  right: 0;
  top: 0;
}
.fixedContainer {
    background-color:#ddd;
    position: fixed;
    padding: 2em;
    //right: 0;
    top: 0%;
    transform: translateX(-100px);
}

jQuery

$('.fixedContainer').on('click', function() {
    $('.right').animate({'width': '0px'});
  $('.left').animate({'width': '100%'});
});

https://jsfiddle.net/bx6ktwnn/1/


1

同じ問題があり、チームメンバーの1人が解決策をくれます。divの固定位置と他のdivとの相対位置を許可するための解決策は、親コンテナーを使用して固定divをラップし、divをスクロールすることです。

<div class="container">
  <div class="scroll"></div>
  <div class="fix"></div>
</div>

CSS

.container {
  position: relative;
  flex:1;
  display:flex;
}

.fix {
  prosition:absolute;
}

1
/* html */

/* this div exists purely for the purpose of positioning the fixed div it contains */
<div class="fix-my-fixed-div-to-its-parent-not-the-body">

     <div class="im-fixed-within-my-container-div-zone">
          my fixed content
     </div>

</div>



/* css */

/* wraps fixed div to get desired fixed outcome */
.fix-my-fixed-div-to-its-parent-not-the-body 
{
    float: right;
}

.im-fixed-within-my-container-div-zone
{
    position: fixed;
    transform: translate(-100%);
}


0

私はしばらく前にそのようなことをしました。私はJavaScriptにかなり慣れていないので、もっと上手くできると確信していますが、ここが出発点です。

function fixxedtext() {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        if (document.body.offsetWidth > 960) {
            var width = document.body.offsetWidth - 960;
            width = width / 2;
            document.getElementById("side").style.marginRight = width + "px";
        }
        if (document.body.offsetWidth < 960) {
            var width = 960 - document.body.offsetWidth;
            document.getElementById("side").style.marginRight = "-" + width + "px";
        }
    }
    else {
        if (window.innerWidth > 960) {
            var width = window.innerWidth - 960;
            width = width / 2;
            document.getElementById("side").style.marginRight = width + "px";
        }
        if (window.innerWidth < 960) {
            var width = 960 - window.innerWidth;
            document.getElementById("side").style.marginRight = "-" + width + "px";
        }
    }
    window.setTimeout("fixxedtext()", 2500)
}

あなたはあなたの幅を設定する必要があります、そしてそれはそれからウィンドウの幅を取得し、数秒ごとにマージンを変更します。重いのはわかっていますが、動作します。


このアプローチで確認できる問題の1つは、タイマー(2.5秒)に依存していることです。その間、ユーザーがウィンドウのサイズを変更すると、ウィンドウが自動的に修正されるまでにその時間がかかります。ユーザーエクスペリエンスに関しては、これは最善の方法ではありません。また、それが役立つ場合は、タイマーの代わりにイベントリスナーを使用してみてください。
ジョセフマリクル

私が言ったように、私の最初の1つである古いスクリプトであり、それを修正するために戻る必要はありませんでした。したがって、これは最適ではありませんが、出発点としては最適です。
webLacky3rdClass


0

私のプロジェクトは、Bootstrap 4を使用した.NET ASP Core 2 MVC Angular 4テンプレートです。次のように、最初の行のメインアプリコンポーネントhtml(つまりapp.component.html)に「sticky-top」を追加すると機能します。

<div class='row sticky-top'>
    <div class='col-sm-12'>
        <nav-menu-top></nav-menu-top>
    </div>
</div>
<div class="row">
    <div class='col-sm-3'>
        <nav-menu></nav-menu>
    </div>
    <div class='col-sm-9 body-content'>
        <router-outlet></router-outlet>
    </div>
</div>

それは慣例ですか、それとも私はこれを単純化しすぎましたか?


0

position:fixedCSSルールを使用し、top/ left/ right/ を適用しようとするとbottom、要素がウィンドウに対して相対的に配置されます。

回避策はmargintop/ left/ right/の代わりにプロパティを使用することですbottom


-1

これをチェックして:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body style="width: 1000px !important;margin-left: auto;margin-right: auto">
        <div style="width: 100px; height: 100px; background-color: #ccc; position:fixed;">
        </div>
        <div id="1" style="width: 100%; height: 600px; background-color: #800000">
        </div>
        <div id="2" style="width: 100%; height: 600px; background-color: #100000">
        </div>
        <div id="3" style="width: 100%; height: 600px; background-color: #400000">
        </div>
    </body>
</html>

5
これはOPが要求したことをかなり達成しているとは思いません。
JasonWyatt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.