質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.03%

flex内のflex要素の広がりについて

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,153

hiroakitajima

score 24

flex要素にflex要素を入れているのですが思うように広がってくれません。
max300pxの要素とmax200pxの要素を入れているのですが、縮まってしまいます。
このような構成で広げることは可能でしょうか。
何卒よろしくお願いいたします。

<form class="form_sort">
  <ul>
    <li>
      <div class="input_wrap input_300 sort_item keyword">
        <input type="text" placeholder="キーワード検索">
        <button class="btn_">検索</button>
      </div>
    </li>
    <li>
      <div class="input_wrap input_200 sort_item keyword">
        <input type="text" placeholder="キーワード検索">
        <button class="btn_">検索</button>
      </div>
    </li>
  </ul>
</form>
ul {
  list-style-type: none;
  -webkit-margin-before: 0;
  -webkit-margin-after: 0;
  -webkit-margin-start: 0;
  -webkit-margin-end: 0;
  -webkit-padding-start: 0;
}
.form_sort {
  color: #333;
  font: 500 12px/1em 'noto sans japanese';
  padding: 0 0 15px;
  display: -webkit-flex; display: flex;
  -webkit-flex-wrap: wrap; flex-wrap: wrap;
}
.form_sort > ul {
  width: 100%;
  margin: -6px -8px;
  display: -webkit-flex; display: flex;
  -webkit-flex-wrap: wrap; flex-wrap: wrap;
}
.form_sort > ul + ul {
  margin-top: 5px;
}
.form_sort > ul > li {
  padding: 6px 8px;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: nowrap;
  flex-wrap: nowrap;
  -webkit-align-items: center;
  align-items: center;
}
.form_sort li.full {
  width: 100%;
}
.input_wrap {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: nowrap;
    flex-wrap: nowrap;
    width: 100%;
}
.input_200 {
    max-width: 200px;
}
.input_300 {
    max-width: 300px;
}
input:not([type="checkbox"]), textarea, input[type="file"]:before {
    font: 300 12px/1.5em 'noto sans japanese';
    border: 1px solid #000;
    padding: 4px 8px;
    background: #fff;
    border-radius: 3px;
    flex: 1 1 100%;
    width: 100%;
    -webkit-box-shadow: 0px 0px 1px 0px rgba(0,0,0,.1) inset;
    box-shadow: 0px 0px 1px 0px rgba(0,0,0,.1) inset;
}
input, select:not(.select2), button, textarea {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
select:not(.select2) {
    -webkit-appearance: textfield;
    border: 1px solid #000;
    background: #fff;
    height: 32px;
    padding: 0 32px 0 16px;
}
.sort_item.keyword input {
    border-radius: 5px 0 0 5px;
    border: 1px solid #000;
    height: 32px;
    padding: 0 16px;
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
}
.sort_item.keyword button {
    font: 600 12px/1em 'noto sans japanese';
    height: 32px;
    padding: 0;
    flex: 0 0 60px;
    border: none;
    border-radius: 0 5px 5px 0;
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
    -webkit-justify-content: center;
    justify-content: center;
}
[class*="btn_"] {
    color: #fff;
    font: 600 14px/1em 'noto sans japanese';
    padding: 8px 16px;
    background: #000;
    border-radius: 100px;
    border: 1px solid transparent;
    display: inline-block;
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

.form_sort > ul > li {
      width: 50%;
}


など、.form_sort > ul > liにwidthを入れれば、理想の表示になるような気がします。
値は適当に変えてください。

それかdivがいらないような気がします。
この場合は、CSS変更なしです。

  <ul>
    <li class="input_wrap input_300 sort_item keyword">
        <input type="text" placeholder="キーワード検索">
        <button class="btn_">検索</button>
    </li>
    <li class="input_wrap input_200 sort_item keyword">
        <input type="text" placeholder="キーワード検索">
        <button class="btn_">検索</button>
    </li>
  </ul>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/02 19:42

    ご回答ありがとうございます。
    liにサイズを指定した場合に、paddingの数値も考慮しなくてはいけなくなってしまいます。
    他にも汎用性を持たせるためにこの構成なのですが、不可能でしょうか。

    キャンセル

  • 2018/04/02 22:41

    もしかして、.input_200 { width: 200px; } .input_300 { width: 300px; }にすることで理想の表示になったりします?
    指定しているのはmax-widthなので、max-widthを指定しない時に200px(300px)以上になっていなければ、最小限の幅になります。

    キャンセル

  • 2018/04/03 13:16

    ご回答ありがとうございます。
    改めて考えましたところ、レスポンシブ時にサイズ維持するならばwrapにして幅指定で問題ありませんよね、、可変と固定想定の考えが混ざってしまっていました。

    最初に仰って頂いたように.input_wrapを並べてmarginで間隔開けて親に-marginでnowrapで可変にしておいてタイミングでwrapにして折り返すという形で落ち着きそうです。

    ご丁寧なご回答をありがとうございました。

    キャンセル

+2

.form_sort > ul > li {
  flex-grow: 1;
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/02 18:52 編集

    ご回答ありがとうございます。
    liが伸びても左寄せされている状態が理想の状態です。
    よろしくお願いいたします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる