このチュートリアルでは、AngularJSを使用してスライドショープラグインを構築し、よりクリーンで簡潔なコードベースのためにjQueryを避けています。 これを実現するために、Angularディレクティブとアニメーションを活用します。 AngularJSの指令に精通していることが想定されています
JQueryベースのソリューションと比較して、
コードを減らしました。という名前の孤立したAngularJSディレクティブを作成することから始めます
は、親のスコープとの競合を防ぐために分離されています。属性は、親スコープから画像オブジェクトの配列を受信します。アニメーションのサポートにはslider
が含まれています。
var sliderApp = angular.module('sliderApp', ['ngAnimate']); // Note: ngAnimate included sliderApp.directive('slider', function($timeout) { return { restrict: 'AE', replace: true, scope: { images: '=' }, link: function(scope, elem, attrs) { scope.currentIndex = 0; scope.next = function() { scope.currentIndex = (scope.currentIndex + 1) % scope.images.length; }; scope.prev = function() { scope.currentIndex = (scope.currentIndex - 1 + scope.images.length) % scope.images.length; }; scope.$watch('currentIndex', function() { scope.images.forEach(function(image) { image.visible = false; }); scope.images[scope.currentIndex].visible = true; }); var timer; var sliderFunc = function() { timer = $timeout(function() { scope.next(); timer = $timeout(sliderFunc, 5000); // Adjust interval as needed }, 5000); }; sliderFunc(); scope.$on('$destroy', function() { $timeout.cancel(timer); }); }, templateUrl: 'templates/templateurl.html' }; });
ステップ2:画像データコントローラーscope
images
ngAnimate
コントローラーは画像データを提供します:
ステップ3:ディレクティブテンプレート(
)sliderApp.controller('SliderController', function($scope) { $scope.images = [ { src: 'img1.png', title: 'Pic 1' }, { src: 'img2.jpg', title: 'Pic 2' }, { src: 'img3.jpg', title: 'Pic 3' }, { src: 'img4.png', title: 'Pic 4' }, { src: 'img5.png', title: 'Pic 5' } ]; });
を使用して画像を表示します
templates/templateurl.html
ステップ4:cssアニメーション
ng-repeat
スムーズな遷移のためにCSSを追加します(必要に応じてタイミングを調整します):
<div class="slider"> <div class="slide" ng-repeat="image in images" ng-show="image.visible"> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/" class="lazy" alt="Creating a Slide Show Plugin With AngularJS - SitePoint" /> <p>{{image.title}}</p> </div> <div class="arrows"> <a href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b" ng-click="prev()"><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174018895287877.png" class="lazy" alt="Creating a Slide Show Plugin With AngularJS - SitePoint" /></a> <a href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b" ng-click="next()"><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174018895383537.png" class="lazy" alt="Creating a Slide Show Plugin With AngularJS - SitePoint" /></a> </div> </div>
ステップ5:ディレクティブの使用
メインのHTMLには、指令とコントローラーを含めます:
.slide.ng-hide-add, .slide.ng-hide-remove { transition: opacity 0.5s linear; } .slide.ng-hide-add.ng-hide-add-active, .slide.ng-hide-remove { opacity: 0; } .slide.ng-hide-add, .slide.ng-hide-remove.ng-hide-remove-active { opacity: 1; }
スライダーをスタイリングするために必要なCSSを含めることを忘れないでください。 この強化された例には、自動スライドショー機能とエラー処理の改善が含まれます。 プレースホルダーの画像パスを実際の画像URLに置き換えることを忘れないでください。 アクセシビリティのために属性が追加されます
以上がAngularjsを使用したスライドショープラグインを作成 - SitePointの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。