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でラベルが下にあるグループのような図を表現したいです。
これだけだと全く伝わらないと思うので、イメージ画像を作り添付しました。

以下のhtmlをcssでイメージ画像のようにしたいです。

どのようにcssを書けば実現できるのでしょうか。
よろしくお願いします。

html

<body>
    <ul>
        <li class="group group_top" data-group="g1">group1</li>
        <li class="item">item1</li>
        <li class="item">item2</li>
        <li class="item">item3</li>
        <li class="item">item4</li>
        <li class="group group_btm" data-group="g1"></li>
        <li class="group group_top" data-group="g2">group2</li>
        <li class="item">item5</li>
        <li class="group group_btm" data-group="g2"></li>
    </ul>
</body>

イメージ画像

スクリーンショット 2021-10-09 14.54.24.png

現状のcss

        .item {
            line-height:3em;
            border:1px solid #cccccc;
        }
        ul{
            list-style: none;
            display:flex;
            border:1px solid #cccccc;
        }

現状の表示

スクリーンショット 2021-10-09 14.53.53.png

表現したいこと

基本的にはイメージ画像の再現がしたいのですが、枠の色やサイズは何でも良いです。
group枠があり、その中にitemが入る。そしてそのgroup枠の中央下部にgroup名が配置される。
といったことがやりたいです。
またitemは縦に3つまで並び、4つ以上はgroupの枠が横に伸びるようにしたいです(group1のケース)。
ミニマムにはhtml上では上にあるgroup1という要素をitemより下に配置する方法だけでもわかれば助かります(もちろん単なるorderとかでなく)。

0

2Answer

See the Pen qiita-127fb9ebeabe86a4f26d by _y_s (@ys-j) on CodePen.

一例です。特に制限がないようでしたので<ul>を入れ子にしてグループ分けしました。(単純に<div>でもいいと思いますが、お任せします。)

グループ名は<div class=heading>group1</div>などと書いていますが、HTMLを汚したくなければ疑似要素にしても構わないと思います。

Flexboxでレイアウトしてみましたが、他のプロパティとの組み合わせによってはバグもあるようなので、調整が必要かと思います。

一応DnD用のスクリプトも書きましたので、参考までに。

1Like

Comments

  1. @wifrstfasnriov

    Questioner

    ありがとうございます!
    イメージ画像の通りのものができました。
    ドラッグ&ドロップの処理もjQueryを使わない書き方に変えたいなあと思っていたところだったので、大変助かります。
    flexboxについて勉強する機会にもなりました。ありがとうございました。

group枠があり、その中にitemが入る。

<ul>がgroupで<li>がitemではダメなのでしょうか?(なにか制限があるですか?)

HTMLで横並びになっている要素をグループ毎に分けて云々する方法は思い浮かびません。
gridを使って1つ1つの要素を割り当てればできないことはないかもしれませんが、現実的ではないと思います。

0Like

Comments

  1. @wifrstfasnriov

    Questioner

    ご回答ありがとうございます。
    <ul>がgroupで<li>がitemでも大丈夫です。
    itemをドラッグ&ドロップで動かすscriptを用意しているので、そちらの修正が必要にはなるかもしれませんが問題ないと思います。
    しかし<ul>がgroupになると何かが変わるのでしょうか。そもそもその場合グループ名(group1やgroup2)はどこに書けば良いのでしょうか…。多分かなり初歩的な質問なのだとは思いますが見当もつきません。よろしくお願いします。

    (私もgridで配置していくのはあまりやりたくないです。)

Your answer might help someone💌