Angular のテキストの折りたたみと展開の効果も非常に興味深い機能です。この記事では主に Angular のテキストの折りたたみと展開のコンポーネントの原理分析を紹介します。これが非常に優れていると思います。皆さんのお役に立てれば幸いです。
この種のコンポーネントは実際にさまざまな場所で使用できます
展開されたエフェクト
.directive('textfold', function() { return { restrict: 'EA', template: '<p style="font-size: 14px; border-left:5px solid #dddddd; padding: 15px; padding-bottom: 10px; margin-bottom: 15px; margin-top: 15px;">' + '<span id="textfold" style="display:block; overflow:hidden;">{{designer.des}}</span>' + '<br />' + '<span style="color: #1bb7ac; position: relative; bottom: 10px;" ng-click="more(this)">{{isMore}}</span>' + '</p>', link: function(scope, element, attrs) { var height; var maxheight; function textfold() { height = angular.element('#textfold').height(); maxheight = angular.element('#textfold').height(); } scope.$watch('designer.des', function(data) { if (data) { textfold(); } }) var isExtend = true; scope.isMore = "折叠"; scope.more = function() { var minheight = 23; if (isExtend) { if (height >= minheight) { document.getElementById('textfold').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('textfold').style.height = height + "px"; setTimeout(function() { scope.more(); }, 1); height += 10; } else { scope.isMore = "折叠"; scope.$apply(); isExtend = !isExtend; height -= 10; } } } } } })
restrict: 'EA', template: '<p style="font-size: 14px; border-left:5px solid #dddddd; padding: 15px; padding-bottom: 10px; margin-bottom: 15px; margin-top: 15px;">' + '<span id="textfold" style="display:block; overflow:hidden;">{{designer.des}}</span>' + '<br />' + '<span style="color: #1bb7ac; position: relative; bottom: 10px;" ng-click="more(this)">{{isMore}}</span>' + '</p>',
var height; var maxheight;
function textfold() { height = angular.element('#textfold').height(); maxheight = angular.element('#textfold').height(); } scope.$watch('designer.des', function(data) { if (data) { textfold(); scope.more(); } })
コールバックの代わりに順次実行した場合
if (data) { textfold(); }
はspanタグのデフォルトの高さのみを取得します
ちょっとしたトリックを追加することもできますここに、scope.more();
angular.element('#textfold').height()
if (data) { textfold(); scope.more(); }
そしてscope.isMoreを変更して変更します...もっと見る...または折りたたむ
ここではDOM操作を使用しますsetTimeout(function() { scope.more(); }, 1);
もう1文追加するのが最善です
document.getElementById('textfold').style.height = height + "px";
でDOMの変更を取得します
css2D 特殊効果の変換 -- テキスト折りたたみ効果_html/css_WEB-ITnose
JavaScript 互換の IE6 折りたたみおよび展開エフェクトの実装ケース
以上がAngular テキストの折りたたみおよび展開効果の簡単な実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。