2012-11-12 8 views
16

divh1をセクション内に配置すると、ヘッダーのテキストを重ならずに右上にdivを浮かせますか?兄弟のヘッダーが重複しないように右上にdivをfloatします

HTMLコードは以下の通りである

<section> 
    <h1>some long long long long header, a whole line, 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6</h1> 
    <div><button>button</button></div> 
</section> 

このCSSコード:

section { position: relative; } 
h1 { display: inline; } 
div { 
    position: absolute; 
    top: 0; 
    right: 0; 
} 

、右上の隅に残っていない:

h1 { display: inline; } 
div { float: right; } 

似たような疑問がたくさんあることは知っていますが、このケースを解決する方法が見つかりませんでした。

+0

感謝を配置するために、別のdivを必要としないという利点を持っています、私はポーに失敗したことを申し訳ありません私の答えは同時に(jsfiddleリンクのみが許可されていません)。実際のところ、正しい解決策がHTML要素を並べ替えることであった(cf. @ j08691 answer&mine)ので、2人のあなた(@ salih0vicX&@Juanjo)がCSSだけでそれを得られるように、私の最初の例で間違ったjsfiddleリンクを投稿しました。 。そのために残念。 –

答えて

25

要素の順序を変更できる場合は、フローティングが機能します。

section { 
 
    position: relative; 
 
    width: 50%; 
 
    border: 1px solid; 
 
} 
 
h1 { 
 
    display: inline; 
 
} 
 
div { 
 
    float: right; 
 
}
<section> 
 
    <div> 
 
    <button>button</button> 
 
    </div> 
 

 
    <h1>some long long long long header, a whole line, 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6</h1> 
 
</section>

h1divを配置し、rightにそれを浮動することで、あなたは、所望の効果を得ます。

+0

ありがとう、私は質問を書いている間に答えを見つけましたが、私はそれらを一緒に投稿させませんでした。私たちはちょうどjsfiddleリンクを投稿することはできませんが表示されます^^すばらしく速い答えのためのおめでとう:) –

+0

なぜdownvote? – j08691

+0

実際に私はあなたを賞賛しました、あなたは正しい答えを得ました。 @ MaximeR。 –

8

problem solved by the rubber duck

CSSは正しいですが、あなたはまだHTML elements order mattersがいることを覚えている:DIVはヘッダの前に来ています。

<section> 
<div><button>button</button></div> 
<h1>some long long long long header, a whole line, 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6</h1> 
</section> 

とシンプルなdiv { float: right; }にあなたのCSSを保つ:http://jsfiddle.net/Fq2Na/1/ enter image description here

は、ヘッダの前にdiv要素を持っているあなたのHTMLコードを変更し

0
section { 
    position: relative; 
    width: 50%; 
    border: 1px solid; 
} 
h1 { 
    display: inline; 
} 
div { 
    position: relative; 
    float:right; 
    top: 0; 
    right: 0; 

} 
0

これが私の仕事:

h1 { 
    display: inline; 
    overflow: hidden; 
} 
div { 
    position: relative; 
    float: right; 
} 

をそれはStubbornellaにより、メディアオブジェクトのアプローチに似ています。

編集:彼らは以下のコメントとして、あなたは(あなたの最初のバイオリンの1)をラップするために起こっている要素の前に浮かぶように起こっている要素を配置する必要が

1

display:blockを使用して<Button>ラップDIVから取り除くとfloat:left<Button><h1>の両方であり、にはposition:relativeのを指定しています。このアプローチは、すべての答えのためのあなたの<Button>

HTML

<section> 
    <h1>some long long long long header, a whole line, 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6</h1>  
    <button>button</button> 
</section> 

CSS

section { 
    position: relative; 
    width: 50%; 
    border: 1px solid; 
    float:left; 
} 
h1 { 
    display: block; 
    width:70%; 
    float:left; 
} 
button 
{ 
    position:relative; 
    top:0; 
    left:0; 
    float:left; 
} 

+0

しかし、私は2つの列があり、ボタンの下のスペースを失う。さらに、ウィンドウが小さすぎると、ボタンがヘッダーの下に飛びます。 –

+0

それは本当に 'display:block'から期待される動作です。私はみんながほぼ同じことに答えたので、別の方法を見せようとしました –

関連する問題