テキストの展開と折りたたみの効果を実現するJavaScript

テキストの展開と折りたたみの効果を実現するJavaScript

リスト形式のテキストの展開と折りたたみの実装は参考までに。具体的な内容は以下のとおりです。

必要:

1. テキストが目標値を超えると、目標値が遮断され、他の値は非表示になり、「展開」という単語とドロップダウン矢印が同時に表示されます。
2. 「展開」をクリックしてすべてのテキストを表示し、「折りたたみ」に変更してプルアップ矢印をクリックします。
3. テキスト自体が目標値を超えない場合は、テキスト全体を表示する

CSSを使用して非表示にする行数を設定するか、非表示にするLiタグの高さを設定することを考えましたが、どちらも上記の3番目の要件を満たすことができないため、次の方法を思いつきました。

アイデア:

1. 最初に展開および折りたたみが必要な要素を走査し、目標値を超えた場合は非表示にして、すべてのタグの内容を保存します(後ですべてを表示するときに使用されます)。
2. クリックして展開または折りたたむと、現在のコンテンツに応じて保存されている値を照合し、対応する処理を行って表示します。

html

<ul class="outList">
        <li>
            <div>第5-14号</div>
            <ul class="innerList">
                <li class="wordsContent">1111111111111111111111111</li>
                <li class="wordsContent">2222222222222222222222222</li>
                <li class="wordsContent">333333333333333333333333</li>
            </ul>
        </li>
        <li>
            <div>第5-15号</div>
            <ul class="innerList">
                <li class="wordsContent">4444</li>
                <li class="wordsContent">5555555555555555555555555555</li>
                <li class="wordsContent">66666666666666666666666666</li>
            </ul>
        </li>
</ul>

CS

ul、li {
   リストスタイル: なし;
 }
.innerList>li {
     下マージン: 0.2rem;
     border-bottom: 0.01rem 緑一色;
     ボックスのサイズ: 境界線ボックス;
     パディング: 0.2rem 5% 0.7rem 3%;
     位置: 相対的;
     下マージン: 0.3rem;
 }
 。開ける {
     フォントサイズ: 0.22rem;
     色: #12309E;
     位置: 絶対;
     右: 0.2rem;
     下部: 0.1rem;
     フォントの太さ: 太字;
 }
 。近い {
     フォントサイズ: 0.22rem;
     色: #12309E;
     位置: 絶対;
     右: 0.2rem;
     下部: 0.1rem;
     フォントの太さ: 太字;
 }

JS

//ニュースを展開および折りたたみます var objList = $(".wordsContent"); //展開および折りたたみが必要なliタグ要素 var maxNum = 5; //ターゲット値の長さ var arr = []; //展開および折りたたみが必要なすべてのテキスト objList.delegate(".open", "click", function () {
    開く閉じる(true, this)
})
objList.delegate(".close", "click", function () {
    開く閉じる(false, this)
})
// パッケージを初期化します。初期化の目的は、1: Li タグの元のコンテンツを保存すること、2: ターゲット値を超えるテキストを非表示にすることです。function init(objList, maxNum) {
    objList.each(関数(インデックス、項目) {
        arr.push($(item_).text())
        ($(item).text().length > maxNum) の場合 {
            $(item).html($(item).text().substr(0, maxNum) + "<span class='open'>展開<img src='./image/down^.png'/></span>")
        }
    })
}
init(オブジェクトリスト、最大数)

//展開と折りたたみのカプセル化関数 openClose(boo, clickObj) {
    var final = '';
    arr.map(関数(項目、インデックス) {
        if (item.match($(clickObj).parents(".wordsContent").text().substring(0, $(clickObj).parents(".wordsContent").text().length - 2))) {
            最終 = 項目
        }
    })
    もし(ブー){
        $(clickObj).parents(".wordsContent").html(final + "<span class='close'>收起<img src='./image/up^.png'/></span>")
    } それ以外 {
        $(clickObj).parents(".wordsContent").html(final.substr(0, maxNum) + "<span class='open'>展開<img src='./image/down^.png'/></span>")
    }
}

効果

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

以下もご興味があるかもしれません:
  • vue.js はクリックして展開および折りたたむアニメーション効果を実装します
  • IE6 互換の折りたたみおよび展開効果の JavaScript 実装
  • ネイティブ JS は QQ の読み取りのクリックによる展開と折りたたみの効果を模倣します
  • ネイティブjsでニュースリストの全文展開・折りたたみ機能を実現
  • JavaScript を使用して Web ページ レイヤーの折りたたみと展開を制御する方法
  • パッケージ化された js コード-----展開と折りたたみの効果の例
  • 展開したり折りたたんだりできるjsエフェクトを書きました
  • ゆっくりと拡大し、その後ゆっくりと縮小する JavaScript 広告の効果

<<:  MySQL が重複データを挿入するのを防ぐ 3 つの方法

>>:  Dockerイメージサイズを最適化する一般的な方法

推薦する

vue-element-adminフレームワークを使用して、バックエンドからメニュー機能を動的に取得します。

目次2. 詳しい説明2.1. asyncRoutesルーティングを追加する2.2. 新しいpermi...

Vue3 の参照と参照の詳細

エディターは、Vue3のデータの関連する問題も共有します。次のような例を見てみましょう。 Vue.c...

react setStateの詳細な説明

目次setState は同期ですか、それとも非同期ですか?カスタム合成イベントと React フック...

mysql ダーティ ページとは何ですか?

目次ダーティページ(メモリページ)ダーティページが表示されるのはなぜですか?メモリ管理メカニズムの簡...

HTML チュートリアル: よく使われる HTML タグのコレクション (4)

導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...

ポップアップはすべて不正なものではありません。ウェブサイトのポップアップをデザインするためのヒント

ポップアップニュースは国内のインターネットサービスでは一般的であり、リアルタイムプッシュ方式はウェブ...

Reactは、読み込み、読み込み完了、読み込み失敗の3つの段階の原則分析を実装します。

最近ブログに書いたのですが、プロジェクトリストの中に写真がたくさんあり、最初は読み込みが遅いので、ス...

MySQL トランザクション自動コミット自動コミット操作

MySQL のデフォルトの動作モードは自動コミット モードです。つまり、明示的にトランザクションを開...

フロントエンドの上級者向けコースでは、JavaScript のストレージ機能の使い方を学習します。

目次序文背景実施計画の考え方js ストレージ機能ソリューション設計やっと要約する序文どの SaaS ...

MySQL のインストール方法と設定に関するいくつかの問題の概要

1. MySQL rpm パッケージのインストール # インストールソースをダウンロードします [r...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

CSSの高さの崩壊問題についての簡単な説明

パフォーマンス例えば: HTML: <div class="first"&...

MySQL スレーブ ライブラリ Seconds_Behind_Master 遅延の概要

目次MySQL スレーブ ライブラリ Seconds_Behind_Master 遅延の概要1. 遅...

検証例 MySQL | 同じ値を持つフィールドを更新すると、binlog に記録されます

1. はじめに数日前、開発仲間から、フィールドを同じ値に更新すると binlog が記録されるかどう...

MySQLの一般的なメモリ不足による起動失敗に対する完璧な解決策

1. MySQLが正常に起動しない場合は、エラーログ/var/log/mysql/error.log...