【プログラミング・Web制作勉強ログ#64】5/9の積み上げ成果

※当サイトではアフィリエイト広告を利用している場合があります

今日の積み上げ 150日目 成果

\宣言した内容はこちらです/

本日の学び

News欄を①tableを使うパターンと②flexbox分けのパターンで検証:②圧勝(ですよね)

 今回のデザインカンプにおいて、tableを使った方法がいいか、行毎にflexboxを使った方法がいいか、それぞれコーディングして検証をしてみました。

 結果は、以下画像のとおり。

 今回のデザインカンプのNew欄では、単純に日付とタイトルがあるだけではなく、以下の設定をする必要があります。
 ・見出しを付与
 ・一番上の行だけ余白が微妙に違う
 ・一番下の行の「more」ボタンはアニメーション付きで実装

 シンプルな構造の場合は、tableで作った方が手っ取り早いのですが、
こういうトリッキーな設定がある場合は、table(表)で作ってしまうとコーディングが地味に大変な上、レスポンシブ等の表示崩れが起きやすいことが分かりました。

5/11追記:そもそも、table要素のdisplayを切り替えることは非推奨みたいです(見た目は実装できるけど、tableとしての機能が無くなる)😢


table内の要素(table, th, tr, td)のdisplay初期値はすでに決まっているため、そこから「display: block;」と変換してしまうと、そもそもtableとしての機能をなさなくなってしまい、不具合が起こってしまうそうです。

参考:display初期値一覧


例えば、以下のブログでは、
「JavaScriptでtableの要素のdisplayを切り替える処理をすると、table内のレイアウトがズレるという不具合が発生した」
と書かれています。

つまり、tableの要素のdisplayを書き換えるということは、「tableとして持ち合わせている機能を無くしてしまう」ことになってしまいます。

今回の「table行の下線の長さを調整する」というケースの場合、table行(tr)のdisplayをblockに変換するということをしてみましたが、
「見た目はできている」ように見えても、tableとしての機能が無くなってしまう&それに伴う不具合発生のリスクがあることを考えると、「tableの要素のdisplayプロパティを書き換える」ということはやめた方がいいでしょうね。

色々調べてくれたメンターさんや仲間に大感謝です・・!

 なので結論、行毎にflexboxで分けるパターンがいいのではないかと思いました。

(実際、tableで苦戦した後にflexbox分けのパターンを書いたら、一瞬でコーディング終わりました;)

 ①tableパターンと②flexbox分けパターンのコーディングをこちらに貼り付けます。

<section id="info" class="info">
    <h2 class="title">NEWS</h2>
    <div class="container">
        <div class="info_flex">
            <div class="table_news">
                <table>
                    <tr>
                        <th colspan="2">お知らせ</th>
                    </tr>
                    <tr class="first_line">
                        <td>2022.02</td>
                        <td>公式Instagram、yotubeはじめました。</td>
                    </tr>
                    <tr class="second_line">
                        <td>2021.10</td>
                        <td>非住宅 木造建築フェアに出展します。</td>
                    </tr>
                    <tr class="third_line">
                        <td>2021.02</td>
                        <td>公式ホームページがリニューアルしました。</td>
                    </tr>
                    <tr class="more">
                        <td colspan="2"><button>more</button></td>
                    </tr>
                </table>
            </div>
            <div class="table_blog">
                <table>
                    <tr>
                        <th colspan="2">ブログ</th>
                    </tr>
                    <tr class="first_line">
                        <td>2022.01</td>
                        <td>あけましておめでとうございます。〜会長から社員まで〜</td>
                    </tr>
                    <tr class="second_line">
                        <td>2021.06</td>
                        <td>【検証】土地と人に相性はあるのか?</td>
                    </tr>
                    <tr class="third_line">
                        <td>2021.04</td>
                        <td>弊社創業初の入社式が行われました。</td>
                    </tr>
                    <tr class="more">
                        <td colspan="2"><button>more</button></td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
</section>

 また、昨日のブログで書いていた、「table内で設定した余白を調整できるのか(そもそもpaddingとmarginの大きさを調整できるのか)」という課題は引き続き調査中です。分かる方いたらぜひご一報を・・・!

本日の反省

昼寝2時間してしまいました;

 最近、息子が夜中に2時間おきに起きます。夜泣き続いてるな~;

 また2日間くらいお風呂に入れていなかったので、夕食は実家に行っていただき、お風呂をゆっくりいただきました。おかげで次の日はすっきり起きれました。

 なるべく積み上げに集中できるように、身体のメンテもしつつ、リラックスできるときはメリハリつけてリラックスしたいですね。

 

今日も諦めなかった自分、お疲れ様でした!

Twitterでも勉強ログを呟いています。よかったら覗いてみてください♪

この記事が気に入ったら
いいね または フォローしてね!

If you like it, share it!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次