コンテナ div に 2 つの div が残っています。2 番目の div にはwidth: 20px
. 利用可能なすべてのスペースを埋めるために最初の div が必要で、インラインのままです。最初の div 幅を 100% に設定しても、固定幅の 2 番目の div が下がるため機能しません。どのようにできるのか?
コードはここで説明されています: http://jsfiddle.net/7EW5h/4/
ありがとう
コンテナ div に 2 つの div が残っています。2 番目の div にはwidth: 20px
. 利用可能なすべてのスペースを埋めるために最初の div が必要で、インラインのままです。最初の div 幅を 100% に設定しても、固定幅の 2 番目の div が下がるため機能しません。どのようにできるのか?
コードはここで説明されています: http://jsfiddle.net/7EW5h/4/
ありがとう
calc
CSS3 関数を使用し#inner1
て、次のように動的な幅を divに設定できます。
width: calc(100% - 20px);
Firefox 16 (またはそれ以降) および Internet Explorer 9 (またはそれ以降) と互換性があります。
次のようにベンダー プレフィックスを追加できます。
width: -moz-calc(100% - 20px);
width: -webkit-calc(100% - 20px);
width: calc(100% - 20px);
Chrome 19 (またはそれ以降)、Firefox 4 (またはそれ以降)、Internet Explorer 9 (またはそれ以降)、および Safari 6 (またはそれ以降) と互換性を持たせるため。
ここで互換性のあるテーブルを確認できます: http://caniuse.com/#search=calc
あなたの例に関しては、 divに設定border: 0
する必要がありました。#inner1
#inner2
Chrome、IE9、Firefox、Operaでソリューションをテストして解決しました。
display
ですblock
(これは要素のデフォルトですdiv
)。margin-right
大きい方のコンテナのを右側の要素の全幅に設定します。ここでは、両方の要素の境界線、マージン、パディングなども考慮する必要があります。HTML:
<div id="container">
<div id="inner2">
<input />
</div>
<div id="inner1">
<input />
</div>
</div>
CSS:
#inner2 {
float: right;
}
#inner2 input {
height: 20px;
width: 20px;
border: 1px solid #000;
}
#inner1 {
margin-right: 24px;
}
#inner1 input {
width: 100%;
height: 20px;
border: 1px solid #000;
}
実例: http: //jsfiddle.net/7EW5h/22/。input
また、2つの要素に明示的に境界線を設定していることにも注意してください。
絶対位置を使用せずにHTMLまたは2つの要素の順序を変更せずに、それを機能させることはできません。
必要に応じて要素を配置するためにを使用position:absolute;
してみましたか?
フィドルを参照-JSFiddleの例
複雑にすることなく、次のことができると思います。
コンテンツの重複を避けるために、最初の入力に padding-right を追加します。また、以下のコードに表示されていなくても、デフォルトのボーダー、マージン、およびパディングの存在を忘れないでください。 </p>
#container {
overflow: hidden;
background-color: red;
}
#inner1 {
width: 100%;
background-color: blue;
padding-right:45px;
}
#inner2 {
height: 20px;
width: 20px;
background-color: green;
position:absolute;
right:0;
top:0;
}
</p>