テキストの展開と折りたたみの効果を実現する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イメージサイズを最適化する一般的な方法

推薦する

Linux に MySql 5.7.21 をインストールするための詳細な手順

序文Linux で最も広く使用されているデータベースは MySQL です。この記事では、Linux ...

虫眼鏡コンポーネントのネイティブ js 実装

この記事の例では、参考までに虫眼鏡コンポーネントを開発するためのjsの具体的なコードを共有しています...

IDEA を使用して Tomcat を設定し、JSP ファイルを作成する方法

idea を使用して JSP ファイルを書き込む前に、jdk 環境 (ここでは説明しません) と対応...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

Linux の fsevents モジュールによって発生する npm ls エラーの解決方法の詳細な説明

Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...

シャトルボックス機能を実装するためのVueの詳細なコード

Vue - シャトルボックス機能を実装します。効果図は次のようになります。 CS 。移行{ ディスプ...

MySQLで重複データを削除する詳細な例

MySQLで重複データを削除する詳細な例重複レコードには 2 つの意味があります。1 つは完全に重複...

nginxで静的リソースを公開する方法

ステップ準備した静的リソースファイルを指定されたフォルダに配置しますnginx 設定ファイルを変更す...

Win10にCentOS7仮想マシンをインストールする

1. VMware Workstation 64バージョンをダウンロードするhttps://www....

HTML、CSS、JSコメントの標準的な使用法の概要

必要なコメントを追加することは、責任感と道徳心のあるフロントエンド開発者が持つべき良い習慣であり、コ...

Nginx+FastDFSでイメージサーバーを構築

設置環境セントス環境依存性: yum -y gccをインストールします yum インストール -y ...

MySQL デッドロックのトラブルシューティング プロセスの完全な記録

序文これまで遭遇したデータベースのデッドロックはすべて、バッチ更新中のロック順序の不一致が原因でした...

JS 4つの楽しいハッカー背景効果コードを共有する

目次例1例2例3例4例1 <html> <ヘッド> <title>...

JavaScriptは入力ボックスコンポーネントを実装します

この記事では、入力ボックスコンポーネントを手動で実装するための具体的なコードを参考までに紹介します。...

JavaScript を使用してテーブル情報を追加および削除する

JavaScript 入門JavaScript は軽量なインタープリタ型の Web 開発言語です。言...