
引用必要的文件<!-- add styles --> <link href="css/style.css" rel="stylesheet" type="text/css" /> <!-- add javascripts --> <script src="js/jquery-2.0.3.min.js"></script> <script src="js/angular.js"></script> <script src="js/angular-animate.min.js"></script> <script src="js/angular-touch.min.js"></script> <script src="js/app.js"></script>HTML<body ng-controller="MainCtrl"> <header> <a href="http://www.script-tutorials.com/demos/366/index.html" class="logo"><img src="images/logo.png" /></a> </header> <!-- slider container --> <div class="container slider"> <!-- enumerate all photos --> <img ng-repeat="photo in photos" class="slide" ng-swipe-right="showPrev()" ng-swipe-left="showNext()" ng-show="isActive($index)" ng-src="{{photo.src}}" /> <!-- prev / next controls --> <a class="arrow prev" href="#" ng-click="showPrev()"></a> <a class="arrow next" href="#" ng-click="showNext()"></a> <!-- extra navigation controls --> <ul class="nav"> <li ng-repeat="photo in photos" ng-class="{'active':isActive($index)}"> <img src="{{photo.src}}" alt="{{photo.desc}}" title="{{photo.desc}}" ng-click="showPhoto($index);" /> </li> </ul> </div></body>所有样式分为三个部分:风格的滑块和它的幻灯片,导航箭头样式和风格的缩略图导航栏:.arrow { cursor: pointer; display: block; height: 64px; margin-top: -35px; outline: medium none; position: absolute; top: 50%; width: 64px; z-index: 5;}.arrow.prev { background-image: url("../images/prev.png"); left: 20px; opacity: 0.2; transition: all 0.2s linear 0s;}.arrow.next { background-image: url("../images/next.png"); opacity: 0.2; right: 20px; transition: all 0.2s linear 0s;}.arrow.prev:hover{ opacity:1;}.arrow.next:hover{ opacity:1;}.nav { bottom: -4px; display: block; height: 48px; left: 0; margin: 0 auto; padding: 1em 0 0.8em; position: absolute; right: 0; text-align: center; width: 100%; z-index: 5;}.nav li { border: 5px solid #AAAAAA; border-radius: 5px; cursor: pointer; display: inline-block; height: 30px; margin: 0 8px; position: relative; width: 50px;}.nav li.active { border: 5px solid #FFFFFF;}.nav li img { width: 100%;}.slider { border: 15px solid #FFFFFF; border-radius: 5px; height: 500px; margin: 20px auto; position: relative; width: 800px; -webkit-perspective: 1000px; -moz-perspective: 1000px; -ms-perspective: 1000px; -o-perspective: 1000px; perspective: 1000px; -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d;}.slide { position: absolute; top: 0; left: 0;}.slide.ng-hide-add { opacity:1; -webkit-transition:1s linear all; -moz-transition:1s linear all; -o-transition:1s linear all; transition:1s linear all; -webkit-transform: rotateX(50deg) rotateY(30deg); -moz-transform: rotateX(50deg) rotateY(30deg); -ms-transform: rotateX(50deg) rotateY(30deg); -o-transform: rotateX(50deg) rotateY(30deg); transform: rotateX(50deg) rotateY(30deg); -webkit-transform-origin: right top 0; -moz-transform-origin: right top 0; -ms-transform-origin: right top 0; -o-transform-origin: right top 0; transform-origin: right top 0;}.slide.ng-hide-add.ng-hide-add-active { opacity:0;}.slide.ng-hide-remove { -webkit-transition:1s linear all; -moz-transition:1s linear all; -o-transition:1s linear all; transition:1s linear all; display:block!important; opacity:0;}.slide, .slide.ng-hide-remove.ng-hide-remove-active { opacity:1;}为了实现这个美丽的3 d之间的转换效果的幻灯片,我们使用CSS3转换效果与rotateX rotateY和preserve-3d父元素JS'use strict';angular.module('example366', ['ngAnimate', 'ngTouch']) .controller('MainCtrl', function ($scope) { // Set of Photos $scope.photos = [ {src: 'http://farm9.staticflickr.com/8042/7918423710_e6dd168d7c_b.jpg', desc: 'Image 01'}, {src: 'http://farm9.staticflickr.com/8449/7918424278_4835c85e7a_b.jpg', desc: 'Image 02'}, {src: 'http://farm9.staticflickr.com/8457/7918424412_bb641455c7_b.jpg', desc: 'Image 03'}, {src: 'http://farm9.staticflickr.com/8179/7918424842_c79f7e345c_b.jpg', desc: 'Image 04'}, {src: 'http://farm9.staticflickr.com/8315/7918425138_b739f0df53_b.jpg', desc: 'Image 05'}, {src: 'http://farm9.staticflickr.com/8461/7918425364_fe6753aa75_b.jpg', desc: 'Image 06'} ]; // initial image index $scope._Index = 0; // if a current image is the same as requested image $scope.isActive = function (index) { return $scope._Index === index; }; // show prev image $scope.showPrev = function () { $scope._Index = ($scope._Index > 0) ? --$scope._Index : $scope.photos.length - 1; }; // show next image $scope.showNext = function () { $scope._Index = ($scope._Index < $scope.photos.length - 1) ? ++$scope._Index : 0; }; // show a certain image $scope.showPhoto = function (index) { $scope._Index = index; };});