[解決済み] コンテナに対する要素の相対位置
質問
HTMLとCSSを使って、横長の100%積み上げ棒グラフを作ろうとしています。棒グラフは
DIVs
グラフにしたい値に応じて、背景色と幅のパーセンテージを指定します。また、グラフに沿った任意の位置をマークするためのグリッド線が欲しいです。
私の実験では、すでにCSSプロパティ
float: left
. しかし、この方法はレイアウトを混乱させるようで、避けたいところです。また、バーをフロートさせた場合、グリッド線がうまく機能しないようです。
CSSポジショニングで対応できるはずなのですが、どうすればいいのかまだわかりません。コンテナの左上隅を基準として、複数の要素の位置を指定できるようにしたいのです。この種の問題には定期的に(この特定のグラフプロジェクト以外でも)遭遇するので、そのような方法が欲しいのです。
- クロスブラウザ(ブラウザをあまりハックしないのが理想的)
- Quirks モードでの動作
- カスタマイズを容易にするため、可能な限りクリア/クリーンな状態に
- 可能な限りJavaScriptなしで行う。
解決方法は?
CSSポジショニングがいいというのはその通りです。以下、簡単に説明します。
position: relative
に対して相対的に要素をレイアウトします。
そのものです。
つまり、通常のフローでレイアウトされた後、通常のフローから外され、指定した値(top, right, bottom, left)だけオフセットされるのです。フローから外されるため、周囲の他の要素も一緒に移動しないことに注意してください(この動作が必要な場合は、代わりに負のマージンを使用します)。
しかし、あなたが最も興味を持つのは
position: absolute
は、コンテナに対する要素の相対位置を指定します。デフォルトでは、コンテナはブラウザウィンドウですが、親要素に
position: relative
または
position: absolute
を設定すると、その子の座標を配置するための親として動作します。
デモをするために
#container {
position: relative;
border: 1px solid red;
height: 100px;
}
#box {
position: absolute;
top: 50px;
left: 20px;
}
<div id="container">
<div id="box">absolute</div>
</div>
この例では、左上隅の
#box
の左上隅から100px下、50px左に位置することになります。
#container
. もし
#container
がない場合は
position: relative
が設定されている場合、その座標は
#box
は、ブラウザのビューポートの左上隅を基準としています。
関連
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] 要素を水平方向にセンタリングする方法
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] コンテナの幅に応じたフォントの拡大縮小
-
[解決済み] HTMLのid属性とname属性の違い
-
[解決済み] 位置は固定だが、容器に対して相対的
-
[解決済み] 位置は絶対だが、親に対して相対的
-
[解決済み] [Solved] divをコンテナの一番下に配置するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] HTMLで複数選択を許さないリストボックスを作るには?
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み] 複数のノンブレイキングスペース("nbsp")ではなく、タブスペースを使用しますか?
-
[解決済み] mailto:を使ってメールの件名や内容を設定することはできますか?
-
[解決済み] ラジオボタンをデフォルトで選択するには?[重複しています]
-
[解決済み] Do I use <img>, <object>, or <embed> for SVG files?
-
[解決済み] HTMLのレイアウトにテーブルを使用しない理由は?[クローズド]
-
[解決済み] HTML Input="file" Accept Attribute File Type (CSV)
-
[解決済み] div内の画像の下に余分なスペースがある