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

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

ただいまの
回答率

88.79%

画像のようなフレックスなリストを作りたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 323

owowowsam

score 17

イメージ説明

添付画像のようなウィンドウ幅によって表示行数とコラム数が変わるフレキシブルなリストをCSSで作りたいのですが、
以下のポイントでどう記述すれば実現できるか思いつかずどなたかアイディアをいただけると嬉しいです。

・タイトル枠の最後以外は右端が三角の形になる。リストの最後の内容のタイトルには角が無い。
・内容のボックスの高さは画像は揃えてないが揃えても問題ない。

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8">
        <title>list test</title>
        <style>
            li.flex-item1 h1:first-child {
                padding-left: 1em;
                border-radius: 5px 0 0 5px;
            }
            li.flex-item1 h1::after,
            li.flex-item1 h1::before {
                position: absolute;
                top: 50%;
                right: -1.5em;
                margin-top: -1.48em;
                content: '';
                border-top: 1.48em solid transparent;
                border-bottom: 1.48em solid transparent;
                border-left: 1.5em solid;
            }
            ul {
                display: flex;    
                padding:0;    
                margin:0;
                list-style: none;    

                min-width:200px;
                flex-wrap: wrap;
                display: flex;
                flex-direction: row;
                justify-content: center;
                align-items: stretch;
                align-items: flex-start;

            }
            li {
                padding:0;    
                margin:0;
                background-color:lightgrey;

            }
            h1.flex-title{
                font-size:110%;
                background-color: orange;    
                padding:0;    
                margin:0;
            }
            .flex-item1 {
                margin-bottom:20px;

            }
        </style>
    </head>
    <body>

        <ul>
            <li class="flex-item1">
                <h1 class="flex-title">Title 1</h1>
                xxxxxxxxxxxx</br>
        xxxxxxxxxxx</br>
xxxxxxxxxxxxxxxxx</li>
            <li class="flex-item1">
                <h1 class="flex-title">Title 2</h1>
                xxxxxxxxxxx</li>
            <li class="flex-item1">
                <h1 class="flex-title">Title 3</h1>xxxxxxxxxxx</li>
            <li class="flex-item1">
                <h1 class="flex-title">Title 1</h1>
                xxxxxxxxxxx</li>
            <li class="flex-item1">
                <h1 class="flex-title">Title 2</h1>
                xxxxxxxxxxx</li>
            <li class="flex-item1">
                <h1 class="flex-title">Title 3</h1>xxxxxxxxxxx</li>
        </ul>
    </body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2019/08/28 01:41

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • yoshinavi

    2019/08/28 05:53

    現状のコードと問題点はどこか?が提示されないと「丸投げ」と低評価される可能性があります。

    キャンセル

  • owowowsam

    2019/08/28 16:54

    失礼いたしました。現状のコードを記載しました。
    もう少し自分でも修正し試してみたいと思います。

    キャンセル

回答 1

checkベストアンサー

+3

タイトル枠の最後以外は右端が三角の形になる。リストの最後の内容のタイトルには角が無い。

最後だけにスタイルを設定するには、:last-childを使うといいでしょう。
:last-child - CSS: カスケーディングスタイルシート | MDN


内容のボックスの高さは画像は揃えてないが揃えても問題ない。

高さを固定にするには、heightを設定すればよいのでは。
height - CSS: カスケーディングスタイルシート | MDN

質問の追記にあわせて追記

サンプル
サンプルでは不要なCSSを削っているのでご注意ください。


タイトル枠の最後以外は右端が三角の形になる。リストの最後の内容のタイトルには角が無い。

            li.flex-item1:not(:last-child) h1::after {
                content: '';
                width: 10px;
                display: block;
                background:
                    linear-gradient(to bottom left, transparent 45%, white 50%, orange 55%) no-repeat top left/100% 50%,
                    linear-gradient(to top left, transparent 45%, white 50%, orange 55%) no-repeat bottom right/100% 50%;
                height: 27px;
                float: right;
                position: relative;
                right: -10px;
            }

内容のボックスの高さは画像は揃えてないが揃えても問題ない。

            li {
                min-height:200px;
            }

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/08/29 00:36

    この記述で再現に近いものができました。ありがとうございます!

    キャンセル

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

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

関連した質問

同じタグがついた質問を見る