wifrstfasnriov
@wifrstfasnriov (KA TO)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

CSSでいい感じの枠線を引きたい

Q&A

Closed

解決したいこと

CSSでセンスよくテキストボックスを彩りたいです。
イメージ画像を作りました。
スクリーンショット 2022-02-13 6.20.07.png

これをHTMLとCSSで再現したいです。
主に実現したいことは
・エリアごとに枠線をつけて、そのテキストボックスがエリア何かよりわかりやすくする
・エリア1〜5は2列にする
・エリア1~3までと4~5の幅は4:6ぐらいにする
・(+α)全体をブラウザの画面中央に表示する

ただ、見た目が良ければなんでもいいので、このイメージにこだわりはありません。(もともとCSS以前に美的センスに自信がないので…。)

発生している問題・エラー

CSSの書き方がわかりません。

自分で試したこと

    <div id="modal_top">
        <div id="col1" class="col_in_modal">
            <div class="area">
                <p>エリア1</p>
                <input type="text" name="area1">
            </div>
            <div class="area">
                <p>エリア2</p>
                <input type="text" name="area2" list="a2_list">
                <datalist id="a2_list">
                  <option value="A">
                  <option value="B">
                  <option value="C">
                </datalist>
            </div>
            <div class="area">
                <p>エリア3</p>
                <input type="radio" name="area3" value="x"><input type="radio" name="area3" value="y"></div>
            <div class="area">
                <p>エリア4</p>
                <textarea name="area4" cols="20" rows="2"></textarea>
            </div>
            <div class="area">
                <p>エリア5</p>
                <textarea name="area5" cols="20" rows="5"></textarea>
            </div>
        </div>
        <div class="col_in_modal">
          <a id="btb1" target="_blank" href="">ボタン1</a>
          <button id="btn2"  class="btn_on_modal">ボタン2</button>
          <button id="btn3" class="btn_on_modal">ボタン3</button>
        </div>
      </div><!--modal-->

#modal_top {
  /* display: none; */
  position: fixed;
  min-height: 50vh;
  min-width: 50vh;
  background-color:darkkhaki;
  border-radius: 5px;
  z-index: 11;
  padding: 2rem;
}
.area{
  break-inside: avoid;
}
#col1{
  column-count: 2;
}

.btn_on_modal{
  display:inline-block;
  box-sizing: border-box;
  color: #fff;
  padding: 1em  3em;
  text-align: center;
  background: #999;
  background-color: #b69e84;
  border: none; 
  margin-top: 1em;
  margin-bottom: 1em;
  margin-right:0; 
  cursor: pointer;
}

###現状
スクリーンショット 2022-02-13 6.20.37.png

よろしくお願いします。

0

1Answer

レイアウトの参考になれば幸いです。

See the Pen qiita-questions-944b84f676b51fdbe81d by _y_s (@ys-j) on CodePen.

HTMLに関して

フォームコントロールのグループ分けには<fieldset><legend>を使うことをおすすめします。ガチガチにスタイルをいじるならば<div>が向いているかもしれませんが、セマンティックHTMLは意識するべきかと思います。

CSSに関して

2列に並べるとすると段組みレイアウト(column-countなど)を使いたくなりますが、それだと個々の列の幅を指定できないので、フレックスボックスを積極的に使っていきましょう。「画面中央」もフレックスボックスでレイアウトできます。

枠線や色に関しては好きなように調整していただければと思います。

2Like

Comments

  1. @wifrstfasnriov

    Questioner

    ご回答ありがとうございます!
    セマンティックHTMLとは初めて聞きましたが、単に文字を置くだけでなく意味を記述していきなさいといったことでしょうか。勉強になります。
    フレックスボックスは使うと意図しない形になってしまうことがあり苦手意識がありましたが、今回は無事設定できました。
    大変助かりました。ありがとうございました。
  2. セマンティックとは「意味的に正しい」タグを使うことです。今回の例でいえば、`<p>`は段落のタグであってラベルのような文章を成していないテキストに対しては使うべきでありません。同様に何でもかんでも`<div>`を使うのではなく、`<main>`、`<section>`など他により適切なタグがないか検討すべきです。また、ボタンは`<button>`を使うべきですが、`<a>`を使わなくてはいけない場面では`<a role="button">`とするなどアクセシビリティへ配慮する必要があります。

    フレックスボックスは慣れれば表現の幅が広がりますので、ぜひマスターしていただければと思います。

    長文失礼しました。
  3. @wifrstfasnriov

    Questioner

    お礼が遅れ失礼しました。
    使うタグの選び方、勉強になります。ありがとうございます。
    その時々で適切なタグを選ぶためには、そもそもどんなタグが存在するのか知っていないといけないですね。一つずつ覚えていこうと思います。

Your answer might help someone💌