CSS を使用して複数の方法で下揃えを実装するサンプル コード

CSS を使用して複数の方法で下揃えを実装するサンプル コード

会社のビジネス要件により、次の図の赤い領域の効果を達成する必要があります。

効果の説明:

1. 赤い領域のデータを反転し(つまり、下から数えて、数字は1、2、3、4、5)、下部に表示する必要があります。
2. データが多すぎる場合は、スクロールバーを表示し、スクロールバーを一番下まで引っ張る必要があります。
3. データはWebSocketからプッシュされ、プッシュ間隔は数十ミリ秒です。
4. IE10以降のブラウザと互換性がある必要がある

フレックスレイアウトを使用して実装

<スタイル>
    *{
        マージン: 0;
        パディング: 0;
        ボックスのサイズ: 境界線ボックス;
    }
    。容器{
        位置: 相対的;
        幅: 300ピクセル;
        高さ: 500px;
        マージン: 10px 自動;
        境界線: 1px 実線 #f60;
        色: #fff;
    }
    。トップ、
    。底{
        高さ: 50%;
        パディング: 20px;
    }
    。トップ{
        背景色: #da2e22;
    }
    .トップ>ul{
        幅: 100%;
        高さ: 100%;
        オーバーフロー:自動;
    }
    。底{
        オーバーフロー:自動;
        背景色: #1e1e1e;
    }
</スタイル>
<div class="コンテナ">
    <div class="top">
        <ul style="padding-top: 104px;">
            <li>私は最初の li 要素です</li>
            <li>私は2番目のli要素です</li>
            <li>私は3番目のli要素です</li>
            <li>私は4番目のli要素です</li>
            <li>私は5番目のli要素です</li>
        </ul>
    </div>
    <div class="bottom">
        <ul>
            <li>私は最初の li 要素です</li>
            <li>私は2番目のli要素です</li>
            <li>私は3番目のli要素です</li>
            <li>私は4番目のli要素です</li>
            <li>私は5番目のli要素です</li>
        </ul>
    </div>
</div>

現時点では、フレックス レイアウトを使用するのが最善の解決策です。サブ要素は、1、2、3、4、5 の順序でレイアウトされます。レンダリング時にブラウザーは自動的に反転し、スクロール バーも反転します。つまり、自動的に下に配置されます。しかし、IE10 はまだ ~ をサポートしていないため、私が取り組んでいるこのプロジェクトでは使用できず、別の方法を見つける必要があります。

padding-topを使用して達成する

<スタイル>
    *{
        マージン: 0;
        パディング: 0;
        ボックスのサイズ: 境界線ボックス;
    }
    。容器{
        位置: 相対的;
        幅: 300ピクセル;
        高さ: 500px;
        マージン: 10px 自動;
        境界線: 1px 実線 #f60;
        色: #fff;
    }
    。トップ、
    。底{
        高さ: 50%;
        パディング: 20px;
    }
    。トップ{
        背景色: #da2e22;
    }
    .トップ>ul{
        幅: 100%;
        高さ: 100%;
        オーバーフロー:自動;
    }
    。底{
        オーバーフロー:自動;
        背景色: #1e1e1e;
    }
</スタイル>
<div class="コンテナ">
    <div class="top">
        <ul style="padding-top: 104px;">
            <li>私は最初の li 要素です</li>
            <li>私は2番目のli要素です</li>
            <li>私は3番目のli要素です</li>
            <li>私は4番目のli要素です</li>
            <li>私は5番目のli要素です</li>
        </ul>
    </div>
    <div class="bottom">
        <ul>
            <li>私は最初の li 要素です</li>
            <li>私は2番目のli要素です</li>
            <li>私は3番目のli要素です</li>
            <li>私は4番目のli要素です</li>
            <li>私は5番目のli要素です</li>
        </ul>
    </div>
</div>

padding-top を使用するのが最も簡単な実装方法ですが、純粋な CSS では実装できません。JS を使用して計算する必要もあります。プロジェクトの開始時には、padding-top+js 計算を使用して実装しました。この方法は実装が快適ではありません。Websocket によってデータがプッシュされるたびに、計算を実行する必要があります。では、もっと良い方法はあるのでしょうか?答えは間違いなく「はい」です。CSS の世界では、常に予期せぬサプライズがあります。重要なのは、強力な社内スキルを持つことです。

テーブルセルを使用して実装する

<スタイル>
    *{
        マージン: 0;
        パディング: 0;
        ボックスのサイズ: 境界線ボックス;
    }
    。容器{
        位置: 相対的;
        幅: 300ピクセル;
        高さ: 500px;
        マージン: 10px 自動;
        境界線: 1px 実線 #f60;
        色: #fff;
    }
    。トップ、
    。底{
        高さ: 50%;
        パディング: 20px;
        オーバーフロー:自動;
    }
    。トップ{
        背景色: #da2e22;
    }
    .トップコンテナ{
        表示: テーブル;
        幅: 100%;
        高さ: 100%;
    }
    .トップコンテナ>ul{
        表示: テーブルセル;
        垂直方向の位置合わせ: 下;
        幅: 100%;
        高さ: 100%;
    }
    。底{
        背景色: #1e1e1e;
    }
</スタイル>
<div class="コンテナ">
    <div class="top">
        <div class="トップコンテナ">
            <ul>
                <li>私は最初の li 要素です</li>
                <li>私は2番目のli要素です</li>
                <li>私は3番目のli要素です</li>
                <li>私は4番目のli要素です</li>
                <li>私は5番目のli要素です</li>
            </ul>
        </div>
    </div>
    <div class="bottom">
        <ul>
            <li>私は最初の li 要素です</li>
            <li>私は2番目のli要素です</li>
            <li>私は3番目のli要素です</li>
            <li>私は4番目のli要素です</li>
            <li>私は5番目のli要素です</li>
        </ul>
    </div>
</div>

テーブルセルを使用して下揃えを実現するのが現在のところ最後の解決策であり、IE8 とも互換性があります。下揃え問題は解決しました。「スクロールバーを下に引っ張る必要がある」という問題は、table-cell では実現できません。js を使用して制御するしかありません。偉大な神様は他に解決策を持っているのでしょうか?

CSS テーブルとテーブルセルのレイアウトは、多くの特殊効果を実現できます。詳細については、私が知っている Zhang Xinxu の display: table-cell のアプリケーションを参照してください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  WeChatミニプログラムQRコード生成ツール weapp-qrcode 詳細説明

>>:  Linux DockerでSpringbootプロジェクトを実行するための詳細な手順

推薦する

html オプション 無効 選択 選択 無効 オプションの例

コードをコピーコードは次のとおりです。 <選択> <オプション値="&q...

CSS3はグラフィックの落下アニメーション効果を実現します

まずは効果を確認実装コード <div class="box box1"&g...

LED を使って Linux カーネルを使い始める方法を探る

目次序文LEDトリガー探索を始めるLEDデバイス登録LEDディレクトリ類推によって理解するクラスディ...

CocosCreator 学習モジュールスクリプト

Cocos Creator モジュラースクリプトCocos Creator を使用すると、コードを複...

空のパスがページのパフォーマンスに与える影響に対する解決策

数日前、Google Reader で Yu Bo さんが共有した投稿「空のパスがページのパフォーマ...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...

Windows で削除された MySQL 8.0.17 のルート アカウントとパスワードを回復する方法

少し前にSQLの独学を終え、MySQL 8.0.17をダウンロードしました。インストールして設定した...

MySQL の起動時に InnoDB エンジンが無効になる問題の解決方法

問題を見つける今日、仕事中に、ローカル データベースから仮想マシン CentOS 6.6 上のデータ...

Dell R720 サーバーに Windows Server 2008 R2 をインストールする方法

注: この記事のすべての写真はインターネットから収集されたものであるため、DELL R720 サーバ...

Linux Bash スクリプトを使用してユーザーを識別する方法の例

多くの場合、bash スクリプト内またはスクリプト自体内で直接 sudo を使用してコマンドを実行す...

ビジュアルデザインとインタラクションデザインについて

<br />製品設計プロセス全体において、ビジュアルデザインとインタラクションデザインの...

Dockerコンテナの個別展開のためのLNMPの実装

1. 環境整備各コンテナの IP アドレス: nginx: 172.16.10.10マイSQL: 1...

Tomcat の一般的な例外と解決コードの例

弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...

Linux でファイルを削除するさまざまな方法の効率の比較

Linux で大量のファイルを削除する効率をテストします。まず500,000個のファイルを作成する$...