フォーメーションの同じ行に 3 つの div を表示しようとしています: 左 - 中央 - 右
たとえば、1 つの div を左揃え、次の div を中央揃え、最後の 1 つを右揃えにします。
誰もこれを行う方法を知っていますか? 左右に 2 つの div を配置していますが、真ん中に中央の div を導入すると、右端の div が新しい行に移動します。
次を使用できます:display:flex;
コードを作成し、その仕組みを理解するのに役立つツール: http://the-echoplex.net/flexyboxes/
あなたの場合の例は次のようになります:
.flex-container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-direction: normal;
-moz-box-direction: normal;
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-flex-wrap: nowrap;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
-webkit-box-pack: justify;
-moz-box-pack: justify;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
justify-content: space-between;
-webkit-align-content: stretch;
-ms-flex-line-pack: stretch;
align-content: stretch;
-webkit-box-align: start;
-moz-box-align: start;
-webkit-align-items: flex-start;
-ms-flex-align: start;
align-items: flex-start;
}
.flex-item:nth-child(1) {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
-webkit-order: 0;
-ms-flex-order: 0;
order: 0;
-webkit-box-flex: 0;
-moz-box-flex: 0;
-webkit-flex: 0 1 auto;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
-webkit-align-self: auto;
-ms-flex-item-align: auto;
align-self: auto;
}
.flex-item:nth-child(2) {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
-webkit-order: 0;
-ms-flex-order: 0;
order: 0;
-webkit-box-flex: 0;
-moz-box-flex: 0;
-webkit-flex: 0 1 auto;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
-webkit-align-self: auto;
-ms-flex-item-align: auto;
align-self: auto;
}
.flex-item:nth-child(3) {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
-webkit-order: 0;
-ms-flex-order: 0;
order: 0;
-webkit-box-flex: 0;
-moz-box-flex: 0;
-webkit-flex: 0 1 auto;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
-webkit-align-self: auto;
-ms-flex-item-align: auto;
align-self: auto;
}
/*
Legacy Firefox implementation treats all flex containers
as inline-block elements.
*/
@-moz-document url-prefix() {
.flex-container {
width: 100%;
-moz-box-sizing: border-box;
}
}
を偽造する他の方法horizontal-align-content:justify
(これは構成されたルールです)。
http://codepen.io/gcyrillus/pen/Babcs
古い IES に適応するための CSS がほとんどない
.justify {
text-align:justify;
line-height:0;
}
.justify:after, .justify span.ie {
content:'';
display:inline-block;
width:100%;
vertical-align:top;
}
.justify > div {
text-align:left;
line-height:1.2em;
display:inline-block;
*display:inline;
zoom:1;
width:50%;
border:solid;
}
.justify > div:nth-child(odd) {
width:20%;
}
Float と display:table についてはすでに説明しました:)
これを行う簡単な方法の 1 つは、任意のフレームワークを使用することです。例: 960gs -> http://960.gs/ .
このフレームワークを使用すると、ページに列を設定できます。例: http://960.gs/demo.html
では、div を使用してテーブルを作成しますか? :)
それは次のようなものでなければなりません:
<div style="float:left; width:20%;"></div>
<div style="float:left; width:20%;"></div>
<div style="float:left; width:20%;"></div>
これはcssルールにあるはずですが、おそらく各divの幅を変更したいと思うでしょう
次のようなことができます。
body { /* or parent element of below child elements */
position: relative;
}
.left-col {
float: left;
width:25%;
height:100px;
background-color:blue;
position:absolute;
top:0;
left: 0;
}
.center-col {
width: 10%;
height:100px;
margin: 0 auto;
background-color: cornflowerblue;
text-align:center;
}
.right-col {
width: 25%;
height:100px;
background-color:green;
text-align: right;
position:absolute;
top:0;
right: 0;
}
3 つの要素の幅の合計が 100% を超えないように注意する必要があります。これらの要素にボーダーを使用する場合は、各要素の子要素を作成position: absolute
してそれらに与えます。このようなもの:
.childDiv{
position: absolute;
top: 2px; /* acts as border-top for parent element*/
bottom: 2px; /* border-bottom */
left: 2px; /* border-left */
right: 2px; /* border-right */
background-color: black; /* acts as border-color for parent element */
}