L'effet de pliage et d'expansion de texte angulaire est également une fonction très intéressante. Cet article présente principalement l'analyse principale des composants de pliage et d'expansion de texte angulaire. L'éditeur pense que c'est plutôt bon. référence. J'espère que cela pourra aider tout le monde.
J'ai écrit un composant de pliage de texte angulaire. Ce composant peut en fait être utilisé dans de nombreux endroits. L'effet est le suivant
L'effet étendu
.
L'effet après le pliage
Mettez tout le code en premier Lorsque vous l'utilisez, il vous suffit de le mettre en premier. pour ajouter ce dont vous avez besoin Remplacez simplement le texte affiché {{designer.des}} par les données qui doivent être liées à votre routeur
.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; } } } } } })
Mon analyse phrase par phrase ci-dessous L'idée de ce composant
Tout d'abord, il doit s'agir de définir le modèle et le mode d'utilisation du composant angulaire
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>',
EA est , le plug-in peut être affiché dans le DOM à l'aide d'éléments et d'attributs, soit sous la forme
var height; var maxheight;
Une de ces deux variables est la hauteur après le pliage à ce moment (c'est après l'expansion. Elle change continuellement pendant le processus de pliage. Après le pliage final, elle est égale à la hauteur minimale obtenue lorsqu'un texte est complètement développé
<🎜). >
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(); }
<. 🎜>, puis exécutez la fonction de rappel textfold pour obtenir la hauteur du texte actuel. J'ai temporairement essayé cette méthode pour obtenir la hauteur après le rendu
Si elle est exécutée séquentiellement au lieu de rappel<🎜. >
angular.element('#textfold').height()
Vous pouvez également ajouter une petite astuce ici , ajoutez une phrase scope.more();
if (data) { textfold(); scope.more(); }
setTimeout(function() { scope.more(); }, 1);
document.getElementById('textfold').style.height = height + "px";
scope.$apply();
En fait, l’idée générale est très simple et d’autres parties sont également faciles à comprendre. Vous pouvez l’essayer.
Recommandations associées :
transformation d'effets spéciaux CSS2D - pliage de texte effect_html/css_WEB-ITnoseJavaScript compatible avec IE6 fermer Exemples de mise en œuvre des effets de pliage et de dépliage
Articles recommandés sur le pliage
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!