ホームページ ウェブフロントエンド jsチュートリアル Angular テキストの折りたたみおよび展開効果の簡単な実装

Angular テキストの折りたたみおよび展開効果の簡単な実装

Dec 18, 2017 am 11:43 AM
angular 折り畳み 文字

Angular のテキストの折りたたみと展開の効果も非常に興味深い機能です。この記事では主に Angular のテキストの折りたたみと展開のコンポーネントの原理分析を紹介します。これが非常に優れていると思います。皆さんのお役に立てれば幸いです。

この種のコンポーネントは実際にさまざまな場所で使用できます

展開されたエフェクト


折りたたまれたエフェクト



。まず、すべてのコードを入力します。使用するときは、表示する必要があるテキスト {{designer.des}} をルーターにバインドする必要があるデータに置き換えるだけです

.directive('textfold', function() {
    return {
      restrict: 'EA',
      template: &#39;<p style="font-size: 14px; border-left:5px solid #dddddd; padding: 15px; padding-bottom: 10px; margin-bottom: 15px; margin-top: 15px;">&#39; + &#39;<span id="textfold" style="display:block; overflow:hidden;">{{designer.des}}</span>&#39; + &#39;<br />&#39; + &#39;<span style="color: #1bb7ac; position: relative; bottom: 10px;" ng-click="more(this)">{{isMore}}</span>&#39; + &#39;</p>&#39;,
      link: function(scope, element, attrs) {
        var height;
        var maxheight;
        function textfold() {
          height = angular.element(&#39;#textfold&#39;).height();
          maxheight = angular.element(&#39;#textfold&#39;).height();
        }
        scope.$watch(&#39;designer.des&#39;, function(data) {
          if (data) {
            textfold();
          }
        })
        var isExtend = true;
        scope.isMore = "折叠";
        scope.more = function() {
          var minheight = 23;
          if (isExtend) {
            if (height >= minheight) {
              document.getElementById(&#39;textfold&#39;).style.height = height + "px";
              setTimeout(function() {
                scope.more();
              }, 1);
              height -= 10;
            } else {
              scope.isMore = "查看更多...";
              scope.$apply();
              isExtend = !isExtend;
              height += 10;
            }
          } else {
            if (height <= maxheight) {
              document.getElementById(&#39;textfold&#39;).style.height = height + "px";
              setTimeout(function() {
                scope.more();
              }, 1);
              height += 10;
            } else {
              scope.isMore = "折叠";
              scope.$apply();
              isExtend = !isExtend;
              height -= 10;
            }
          }
        }
      }
    }
  })
ログイン後にコピー

このコンポーネントを文ごとに説明します


まず、Angular のコンポーネント化されたテンプレートと使用モードを定義する必要があります

restrict: &#39;EA&#39;,
template: &#39;<p style="font-size: 14px; border-left:5px solid #dddddd; padding: 15px; padding-bottom: 10px; margin-bottom: 15px; margin-top: 15px;">&#39; + &#39;<span id="textfold" style="display:block; overflow:hidden;">{{designer.des}}</span>&#39; + &#39;<br />&#39; + &#39;<span style="color: #1bb7ac; position: relative; bottom: 10px;" ng-click="more(this)">{{isMore}}</span>&#39; + &#39;</p>&#39;,
ログイン後にコピー

EA は、要素と属性を使用してプラグインを DOM に表示できるということです。 の形式でこのコンポーネントを再利用することもできます。後でリンクを使用して関数を定義します

var height;
var maxheight;
ログイン後にコピー

これら 2 つの変数 1 つはこのときの折り畳み後の高さ (これは展開と折り畳みの過程で常に変化し、最終的に折り畳み後の minheight に等しくなります)、およびテキストを完全に展開したときの高さです

function textfold() {
          height = angular.element(&#39;#textfold&#39;).height();
          maxheight = angular.element(&#39;#textfold&#39;).height();
        }
        scope.$watch(&#39;designer.des&#39;, function(data) {
          if (data) {
            textfold();
            scope.more();
          }
        })
ログイン後にコピー

この 2 つ この文は実際には非常に重要です。テキストの高さを取得するときは、テキストの変化 (テキストが完全にレンダリングされた後の高さ) をキャプチャする必要があるため、scope.$ を使用します。 design.des の変更をキャプチャするために監視します。データが空でないとき、つまりテキストがレンダリングされた後、コールバック関数 textfold を実行して、現在のテキストの高さを取得します。レンダリング後のテキストの高さを取得するためにこのメソッドを一時的に試してみました

コールバックの代わりに順次実行した場合

if (data) {
            textfold();
          }
ログイン後にコピー

はspanタグのデフォルトの高さのみを取得します

ちょっとしたトリックを追加することもできますここに、scope.more();

angular.element(&#39;#textfold&#39;).height()
ログイン後にコピー


を追加します。この方法でページを作成できます。レンダリング後、最初に展開してから折りたたむと、ページに入るとデフォルトで折りたたまれた状態になります。プログラムでは、この効果を記述するとき、通常、テキストを展開して高さを取得し、その後、折りたたまれた状態に戻るようにします

var isExtend = true;次のscope.moreを最初の分岐の折りたたみ状態にします

if (data) {
            textfold();
            scope.more();
          }
ログイン後にコピー

この文は再帰文で、実際にはjQueryのanimateのテキストボックス展開アニメーションの実装に相当しますが、ここでは継続的に状態を判断するために再帰を利用しています。そして高さの値を変更します

そしてscope.isMoreを変更して変更します...もっと見る...または折りたたむ

ここではDOM操作を使用します


setTimeout(function() {
                scope.more();
              }, 1);
ログイン後にコピー

もう1文追加するのが最善です

document.getElementById(&#39;textfold&#39;).style.height = height + "px";
ログイン後にコピー

でDOMの変更を取得します

実際、一般的なアイデアは非常にシンプルで、他の場所も理解しやすいので、誰もが自分で試すことができます。

関連する推奨事項:

css2D 特殊効果の変換 -- テキスト折りたたみ効果_html/css_WEB-ITnose

JavaScript 互換の IE6 折りたたみおよび展開エフェクトの実装ケース

折りたたみに関するおすすめ記事

以上がAngular テキストの折りたたみおよび展開効果の簡単な実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

pptで丸い写真とテキストを作成する方法 pptで丸い写真とテキストを作成する方法 Mar 26, 2024 am 10:23 AM

まず、PPT で円を描き、テキスト ボックスを挿入してテキストの内容を入力します。最後に、テキストボックスの塗りつぶしと輪郭を「なし」に設定すれば、円形の絵と文字の制作が完了です。

Wordでテキストにドットを追加するにはどうすればよいですか? Wordでテキストにドットを追加するにはどうすればよいですか? Mar 19, 2024 pm 08:04 PM

日常的に Word 文書を作成するとき、特にテスト問題がある場合、文書内の特定の単語の下にドットを追加する必要があることがあります。コンテンツのこの部分を強調するために、エディターが Word でテキストにドットを追加する方法のヒントを共有します。 1. 空白の Word 文書を開きます。 2. たとえば、「テキストにドットを追加する方法」という単語の下にドットを追加します。 3. まず、マウスの左ボタンで「テキストにドットを追加する方法」という単語を選択します。将来その単語にドットを追加したい場合は、まずマウスの左ボタンを使用して単語を選択する必要があることに注意してください。 。今日はこれらの単語に点を追加するので、いくつかの単語を選択しました。これらの単語を選択して右クリックし、ポップアップ機能ボックスで [フォント] をクリックします。 4. するとこのようなものが表示されます

Google Pixel 9 Pro Fold スマートフォン ケースを露出した状態: 6.4 インチの外側スクリーン、8.02 インチの内側スクリーン Google Pixel 9 Pro Fold スマートフォン ケースを露出した状態: 6.4 インチの外側スクリーン、8.02 インチの内側スクリーン Jun 25, 2024 pm 02:35 PM

6月25日のニュースによると、情報源のytechbは昨日(6月24日)ブログ投稿を公開し、Google Pixel 9 Pro Fold携帯電話ケースのレンダリングを共有し、この折りたたみ式スクリーンの背面のデザインを再度示しました。以前のニュースによると、Googleは今年10月にPixel 9シリーズの携帯電話を発売する予定で、Pixel 9シリーズの3つの携帯電話に加えて、Pixel FoldもPixel 9シリーズに含まれ、正式にPixel 9と名付けられる予定です。プロフォールド。今回公開された携帯電話ケースはアクセサリーメーカーのTorro社のもので、同社の英国および米国のオンラインストアでは製品の携帯電話ケースが掲載されており、携帯電話のデザインとディスプレイサイズが公開されている。このページには、多数の Pixel 9 Pro Fold 電話ケースのレンダリングが表示されます

Ubuntu 24.04 に Angular をインストールする方法 Ubuntu 24.04 に Angular をインストールする方法 Mar 23, 2024 pm 12:20 PM

Angular.js は、動的アプリケーションを作成するための無料でアクセスできる JavaScript プラットフォームです。 HTML の構文をテンプレート言語として拡張することで、アプリケーションのさまざまな側面を迅速かつ明確に表現できます。 Angular.js は、コードの作成、更新、テストに役立つさまざまなツールを提供します。さらに、ルーティングやフォーム管理などの多くの機能も提供します。このガイドでは、Ubuntu24 に Angular をインストールする方法について説明します。まず、Node.js をインストールする必要があります。 Node.js は、ChromeV8 エンジンに基づく JavaScript 実行環境で、サーバー側で JavaScript コードを実行できます。ウブにいるために

サムスンの1万元折りたたみ携帯電話W25が明らかに:5メガピクセルの画面下フロントカメラとより薄いボディ サムスンの1万元折りたたみ携帯電話W25が明らかに:5メガピクセルの画面下フロントカメラとより薄いボディ Aug 23, 2024 pm 12:43 PM

8月23日のニュースによると、サムスンは新しい折りたたみ式携帯電話W25を発売する予定で、9月末に発表される予定で、それに対応して画面下のフロントカメラと本体の厚さが改良される予定だという。報道によると、Samsung W25(コードネームQ6A)には5メガピクセルの画面下カメラが搭載される予定で、これはGalaxy Z Foldシリーズの4メガピクセルのカメラよりも改良されています。さらに、W25 の外部スクリーンフロントカメラと超広角カメラは、それぞれ 1,000 万画素と 1,200 万画素になると予想されています。デザイン面では、W25は折りたたんだ状態での厚さが約10mmと、標準のGalaxy Z Fold 6より約2mm薄い。画面に関しては、W25の外部画面は6.5インチ、内部画面は8インチですが、Galaxy Z Fold6の外部画面は6.3インチ、内部画面は8インチです。

Angular のサーバーサイド レンダリング (SSR) について説明する記事 Angular のサーバーサイド レンダリング (SSR) について説明する記事 Dec 27, 2022 pm 07:24 PM

Angular Universal をご存知ですか?これは、Web サイトがより優れた SEO サポートを提供するのに役立ちます。

フロントエンド開発に PHP と Angular を使用する方法 フロントエンド開発に PHP と Angular を使用する方法 May 11, 2023 pm 04:04 PM

インターネットの急速な発展に伴い、フロントエンド開発テクノロジーも常に改善され、反復されています。 PHP と Angular は、フロントエンド開発で広く使用されている 2 つのテクノロジーです。 PHP は、フォームの処理、動的ページの生成、アクセス許可の管理などのタスクを処理できるサーバー側スクリプト言語です。 Angular は、単一ページ アプリケーションの開発やコンポーネント化された Web アプリケーションの構築に使用できる JavaScript フレームワークです。この記事では、PHPとAngularをフロントエンド開発に使用する方法と、それらを組み合わせる方法を紹介します。

Samsung Galaxy Z Flip 6モデルが初公開:より狭いベゼル、折り目はまだ存在 Samsung Galaxy Z Flip 6モデルが初公開:より狭いベゼル、折り目はまだ存在 Jun 22, 2024 am 03:28 AM

6月21日のニュースによると、海外メディアは最近、Samsung Galaxy Z Flip 6のモデル写真をインターネット上で公開した。写真によると、Samsung Galaxy Z Flip 6の境界線がさらに狭くなることがわかります。これは、折りたたんだ状態での携帯電話の幅が減少する可能性があり、より快適なグリップと携帯性も提供することを意味します。さらに、前世代のZFlip5と比較して、Galaxy ZFlip6のモデルはより正方形になり、背面のカメラモジュールがより目立つようになり、新しいカメラセンサーが使用されると予想されます。ただし、正面から見ると、端末の折り目はまだ比較的明らかですが、リークされたモデルが模型端末であることを考慮すると、実際の端末とは多少の違いがある可能性があるため、参考程度に留めてください。性能構成的にはGalaxy

See all articles