クリックして展開し、全文を読む機能を実現する純粋なCSS

クリックして展開し、全文を読む機能を実現する純粋なCSS

注記

記事表示リストインターフェースを開発する場合、情報の基本的な概要を提供するために記事ヘッダーコンテンツの一部を表示し、詳細情報を取得するために【點擊展開閱讀全文】というボタンを表示することができます。

caibaojian.com/css-tonggle… の記事の純粋な CSS のアイデアを参考にしました。ただし、記事に記載されている内容は単一の記事の効果に適用され、 <li></li>タグを使用してテーブルデータを生成する場合には使いにくいです。そのため、これに基づいて対応する最適化を実行しました。具体的なコードは次のとおりです。

<div>
    <ul id="content-ul">
        <!-- これは記事の内容を保存する LI タグの本体です -->
    </ul>
</div>
[id^="contTab"] {
    表示: なし;
}

.content-more {
    表示: なし;
}

[id^="contTab"]:チェック済み ~ #content {
    最大高さ: 95px;
    オーバーフロー: 非表示;
}

[id^="contTab"]:チェック済み ~ .content-more {
    表示: ブロック;
    位置: 相対的;
    テキスト配置: 中央;
}

[id^="contTab"]:チェック済み ~ .content-more .gradient {
    背景画像: -webkit-gradient(linear, 左上, 左下, from(rgba(255, 255, 255, 0)), to(#fff));
    背景画像: -webkit-linear-gradient(top, rgba(255, 255, 255, 0), #fff);
    背景画像: linear-gradient(-180deg, rgba(255, 255, 255, 0), #fff);
    高さ: 80px;
    位置: 絶対;
    左: 0;
    上: -79px;
    幅: 100%;
}

[id^="contTab"]:チェック済み ~ .content-more .readmore {
    表示: インラインブロック;
    背景: #319a1717;
    色: #0014ff9e;
    幅: 300ピクセル;
    高さ: 30px;
    境界線の半径: 32px;
    行の高さ: 32px;
    フォントサイズ: 14px;
    カーソル: ポインタ;
    テキストインデント: 0;
}

もちろん、ここに JS コードがあります:

関数内部(レスポンス) {
    for (var レスポンスデータの値) {
        document.getElementById('content-ul').innerHTML += '' +
            '<li>' +
            '<h2 class="title">' + val.title + '</h2>' +
            '<p class="update_author">' + val.author_name + ' / ' + layui.util.toDateString(val.update, "yyyy-MM-dd HH:mm:ss") + '</p>' +
            '<input type="checkbox" id="contTab_' + val.id + '" checked="checked" class="tabbed">' +
            '<div id="content">' + val.content + '</div>' +
            '<div class="content-more"><div class="gradient"></div> <label for="contTab_' + val.id + '" class="readmore">クリックして全文を読む</label></div>' +
            '</li>'
    }
}

例示する

改善方法は、特定の ID セレクタに限定されないファジー マッチング方式を使用して、バインドされたタグ ID 属性を動的に生成してバインドし、CSS セレクタを使用することです。

ソースコード

このコード スニペットは、M&OAS プロジェクトで使用されています。ここをクリックすると、関連するコード情報を表示し、より完全なコードを取得できます。

PS: 入力した後に関連するコードブロックが見つからない場合は、慌てないでください。まだGITHUにアップロードしていない可能性があります。ご容赦ください。QAQ〜

脳っていいものですね、ハハハハ~

これで、純粋な CSS で [クリックして展開して全文を読む] 機能を実装する方法についての記事は終了です。より関連性の高い CSS クリックして展開して全文を読むコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Node.JS で悪天候のリアルタイム警報システムを構築する

>>:  XHTML におけるタイトルタグと段落タグの使用に関する詳細な説明

推薦する

11 の素晴らしい JavaScript コード リファクタリングのベスト プラクティスの概要

目次1. 関数の抽出2. 重複した条件付きスニペットを結合する3. 条件分岐文を関数に抽出する4. ...

vue3 でブロック崩しゲームを開発する方法をステップバイステップで教えます

序文vue3 を使った例をいくつか書いてみましたが、Vue3 のコンポジション API はよく設計さ...

Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

1. libfastcommon-1.0.43 をインストールします。インストール パッケージは h...

前後の秒、分、時間、日数を取得するMySQLデータベース

現在の時刻を取得します: current_timestamp を選択します。出力: 2016-06-...

Linux システムが VMware にインストールされているかどうかを確認する方法

現在の Linux システムが VMware にインストールされているかどうかを確認する方法を教えて...

MySQL sql_mode の使用に関する詳細な説明

目次序文sql_mode の説明最も重要なオプションすべてのオプション要約する序文前回の記事「MyS...

JavaScript の基礎におけるデータ型の詳細な説明

目次1. データ型1.1 なぜデータ型が必要なのか? 1.2 変数のデータ型1.3 データ型の分類2...

MySQL解凍版のインストール手順の詳しい説明

1. 公式サイトにアクセスします: D:\mysql-5.7.21-winx64\bin をダウンロ...

HTML のオートコンプリートを無効にして履歴を表示しないようにする

入力ボックスには、コンテンツを入力するときに常に入力履歴が表示されます。これを無効にする現在の方法は...

MySQL テーブル結合クエリでグループ化と重複排除を実装する例

目次ビジネスロジックデータテーブル構造クエリロジックSQL スクリプトスクリプトの説明ビジネスロジッ...

mysql 5.7.20 win64 のインストールと設定方法

mysql-5.7.20-winx64.zipインストール手順のないインストール パッケージ: ht...

Vue データ内のプロパティをランダムに変更すると、ビューは更新されますか?

インタビュアー: Vue のソースコードを読んだことはありますか?応募者:あります。インタビュアー:...

ffmpeg コマンドラインを使用してビデオを変換するためのサンプルコード

この記事の本文を始める前に、まず ffmpeg プログラムをインストールする必要があります (Lin...

Linuxにgitをインストールする方法

1. はじめにGit は、規模の大小を問わずあらゆるプロジェクトを俊敏かつ効率的に処理するために使用...

nginx を使用した負荷分散モジュールの解釈

目次負荷分散に nginx を使用するための 2 つのモジュール:アップストリームはロードノードプー...