2016-12-05 4 views
3

フレックスにはあまり使っていないので、私はフレックスでは良くありませんが、これを実現する方法は他にありません。私は簡単なフォームを作って、その右側に説明と入力があるラベルを付けたいと思っています。この説明はどのようなサイズでもかまいませんし、入力は親を満たすためにサイズを増やすでしょう。ここでは、コードは次のとおりです。フレックスボックス内の要素の動的な幅を作る

div { 
 
    display: flex; 
 
    width: 300px; 
 
    margin-bottom: 20px; 
 
    border: 1px solid red; 
 
} 
 
label { 
 
    height: 21px; 
 
    line-height: 21px; 
 
    font-size: 14px; 
 
    color: black; 
 
    flex: 1; 
 
} 
 
input { 
 
    margin-left: 20px; 
 
    flex: 1; 
 
}
<div> 
 
    <label>Company</label> 
 
    <input type="text"> 
 
</div> 
 
<div> 
 
    <label>Street</label> 
 
    <input type="text"> 
 
</div> 
 
<div> 
 
    <label>Who are you?</label> 
 
    <input type="text"> 
 
</div>

それはこのようになります必要があります。

enter image description here

+0

かもしれbootstraを参照してください 標識するフレックス注文と入力タグを追加しますp input-group-addonもあなたを助けることができます。それを一度チェックしてくださいhttps://v4-alpha.getbootstrap.com/components/input-group/ –

+0

これらのスタイル(背景、詰め物、枠線など)をすべて取り除くことがより多くの作業になります。とにかく、私は財団を使うので、紛争が起こるでしょう。 – debute

答えて

4

あなただけにlabelのフレックスプロパティを設定する必要がありますflex: 0 1 auto。これが意味:flex-grow: 0flex-shrink: 1flex-basis: auto

div { 
 
    display: flex; 
 
    width: 300px; 
 
    margin-bottom: 20px; 
 
    border: 1px solid red; 
 
} 
 
label { 
 
    height: 21px; 
 
    line-height: 21px; 
 
    font-size: 14px; 
 
    color: black; 
 
    flex: 0 1 auto; 
 
} 
 
input { 
 
    margin-left: 20px; 
 
    flex: 1; 
 
}
<div> 
 
    <label>Company</label> 
 
    <input type="text"> 
 
</div> 
 
<div> 
 
    <label>Street</label> 
 
    <input type="text"> 
 
</div> 
 
<div> 
 
    <label>Who are you?</label> 
 
    <input type="text"> 
 
</div>

+0

これは今簡単です:)ありがとう! – debute

+1

あなたは大歓迎です!あなたのプロジェクトに幸運。 –

1

ただ、ここhttp://codepen.io/tantata/pen/KNoMWQ

div { 
 
    display: flex; 
 
    width: 300px; 
 
    margin-bottom: 20px; 
 
    border: 1px solid red; 
 
    flex-wrap:nowrap; 
 
} 
 
label { 
 
    height: 21px; 
 
    line-height: 21px; 
 
    font-size: 14px; 
 
    color: black; 
 
    flex-grow: 0; 
 
} 
 
input { 
 
    margin-left: 20px; 
 
    flex-grow: 1; 
 
}
<div> 
 
    <label>Company</label> 
 
    <input type="text"> 
 
</div> 
 
<div> 
 
    <label>Street</label> 
 
    <input type="text"> 
 
</div> 
 
<div> 
 
    <label>Who are you?</label> 
 
    <input type="text"> 
 
</div>

関連する問題