2017-09-06 3 views
3

DHTMLX Comboを非常に単純なFlexBoxグリッド内に配置することは難しいです。それはそれに割り当てられた幅を拡張するようです。フレックスボックスグリッドのコンボボックスの配置方法

フィドールhere

I.e.次のHTMLを指定します。

<div class='flex-row'> 
    <label>select:</label> 
    <div id="combo_id"></div> 
</div> 

<div class='flex-row'> 
    <label>name:</label> 
    <input type='text' /> 
</div> 

&hellip;次のCSS:

.flex-row { 
    display: flex; 
    justify-content: flex-start; 
} 

.flex-row > label { 
    width: 20%; 
    max-width: 4em; 
} 

.flex-row > *:nth-child(2) { 
    border: 1px solid red; 
    width: 50%; 
    max-width: 12em; 
} 

&hellip;私が使用してコンボを作成する場合:

const combo = new dhtmlXCombo({ 
    parent: "combo_id", 
    name: "alfa2", 
    items: [], // no items, this is just a SSCCE 
    readonly: false 
}); 

を私は次のような状況を取得する:画面が広くなるよう

enter image description here

また、コンボの幅が更新されません。

私の目標は、Combo要素の長さを、その下のinput要素の長さと同じにすることです。 「Combo要素の長さ」とは、input要素の長さがで、のドロップダウンリストボタンの長さの両方を意味します。

+0

何をachiveしたいんでしょうのような別の値型に
変更max-width?同じ幅を選択して名前を付けるには?または何? – Taldakus

+0

@Taldakusの質問が更新されました。 –

+1

'DHTMLX Combo'のように見えますが、独自の幅を設定します。コンストラクタの定義には、ピクセル単位の数値を取るwidthパラメータがあります。そのオブジェクトを調べると、要素レベルでスタイルを設定していることがわかります。スタイルはオーバーライドしません。 – MikeTheReader

答えて

4

あなたの問題は、max-width:12emの場合、フォントサイズが考慮されます。
両方の要素が異なるfont-sizeを持っているため、異なるmax-widthの値になります。 pxまたは同じfont-sizeとの両方の要素を作成し、それらが同じwidth

 const combo = new dhtmlXCombo({ 
 
     parent: "combo_id", 
 
     name: "alfa2", 
 
     items: [], // no items, this is just a SSCCE 
 
     readonly: false 
 
    });
 .flex-row { 
 
     display: flex; 
 
     justify-content: flex-start; 
 
    } 
 
     
 
    .flex-row > label { 
 
     width: 20%; 
 
     max-width: 4em; 
 
    } 
 
     
 
    .flex-row > *:nth-child(2) { 
 
     border: 1px solid red; 
 
     width: 50%; 
 
     max-width: 12em; 
 
     font-size:12px; 
 
    }
<link href="https://cdn.dhtmlx.com/5.0/dhtmlx.css" rel="stylesheet"/> 
 
<script src="https://cdn.dhtmlx.com/5.0/dhtmlx.js"></script> 
 
<link href="https://cdn.dhtmlx.com/5.0/skins/skyblue/dhtmlx.css" rel="stylesheet"/> 
 
<div class='flex-row'> 
 
    <label>select:</label> 
 
    <div id="combo_id"></div> 
 
</div> 
 

 
<div class='flex-row'> 
 
    <label>name:</label> 
 
    <input type='text' /> 
 
</div>

+1

ニースの答え。 'max-width:12em'から' max-width:12rem'への簡単な切り替えは、この問題を解決します。 –

+0

'px'またはrem'のいずれかのユニットが問題を解決しますが、画面サイズが縮小されてもコンボコントロールは応答しません。この答えのコードスニペットでは、フルページで開き、画面幅を縮小する必要があることを確認してください。どうやらコンボは、JavaScriptを使用して構成されたときに、構成要素の幅を1回だけ設定しています。 –

+0

@MarcusJuniusBrutusもちろん、これはページロード時にjs計算を行っているときの例外的な動作です。 –

関連する問題