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

推薦する

Docker ベースの MySQL マスタースレーブ レプリケーションを実装する方法

序文MySQL マスター/スレーブ レプリケーションは、アプリケーションの高パフォーマンスと高可用性...

いくつかの一般的な CSS レイアウト (要約)

まとめこの記事では、次の一般的なレイアウトを紹介します。 3 列レイアウトを実装する方法は多数ありま...

開発にVscodeとdockerを組み合わせて使用​​する詳細なプロセス

序文Docker と VS Code を使用すると、ローカル開発環境全体を最適化し、プロジェクトの進...

VueにおけるAxios非同期通信の詳細な説明

1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...

JavaScript 定期検証パスワード強度実装方法

展示する デザインパスワード強度分析パスワードは数字、文字、特殊記号で構成されていますパスワード: ...

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...

v-html レンダリング コンポーネントの問題

以前 HTML を解析したことがあるので、今日は Vue ドラッグ アンド ドロップを使用して、Ku...

nginxカスタム変数と組み込み定義済み変数の使用

概要Nginx では変数を使用して設定を簡素化し、設定の柔軟性を向上させることができます。すべての変...

Linux リモートログイン実装チュートリアル分析

Linux は一般的にサーバーとして使用され、サーバーは一般的にコンピュータルーム内に置かれます。L...

オペレーターが知っておくべき 18 個の Nginx プロキシ キャッシュ構成のヒント (どれを知っていますか?)

アプリケーションや Web サイトのパフォーマンスが成功の重要な要素であることは誰もが知っています。...

Apache での ab パフォーマンス テスト結果を分析する

私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadru...

Dockerイメージとコンテナの一般的な操作の詳細な説明

画像アクセラレータ中国の Docker Hub からイメージをプルすることが難しい場合があります。こ...

VSCode の JS フォーマットでセミコロンを自動的に追加または削除する方法について

導入js コード文の末尾にセミコロンを追加しても追加しなくても問題ありません。一般的に、チームで開発...

適応レイアウトの処理について(フロートとマージンネガティブマージンを使用)

適応型レイアウトは、実際のアプリケーションでますます一般的になっています。今日は、主にフローティング...

jQueryはスライディングタブを実装する

この記事では、スライドタブを実装するためのjQueryの具体的なコードを参考までに紹介します。具体的...