angularjs1 制作自定义轮播图(汉字导航)

本来想用swiper插件的,可是需求居然说要汉字当导航栏这就没办法了,只能自己写。

directive

// 自定义指令: Home页面的轮播图
app.directive(‘swiperImg‘, ["$interval", function ($interval) {
    return {
        restrict: ‘E‘,
        replace: true,
        scope: { imgList: "=", tabList: "=", autoplay : "="},
        template: ‘<div class="swiper-container"><ul class="swiper-wrapper" >‘ +
        ‘<li class="swiper-wrapper-items" ng-repeat="item in imgList" ng-class="{ imgActive : isSelImg(item) }"><img ng-src="{{item.src}}" /></li>‘ +
        ‘</ul><ul class="swiper-pagination"><li class="pagination-item" ng-repeat="item in tabList" ng-mouseover="hoverTab($index)" ng-mouseleave="leaveTab($index)" ng-class="{ imgActive : isSelImg(item) }">{{ item.name }}</li></ul></div>‘,
        link: function ($scope, elem, attr) {
            var i = 0;
            var imgInterval;
            $scope.hoverTab = function (index) {
                $scope.hoverImg = index;
                $scope.isSelImg(index);
                i = index;
                $interval.cancel(imgInterval);
            }
            $scope.leaveTab = function (index) {
                imgInterval = $interval(function () {
                    if (i == $scope.imgList.length) {
                        i = 0;
                    }
                    $scope.hoverImg = i;
                    $scope.isSelImg(i);
                    i++;
                }, $scope.autoplay);
            }
            imgInterval = $interval(function () {
                if (i > 3) {
                    i = 0;
                }
                $scope.hoverImg = i;
                $scope.isSelImg(i);
                i++;
            }, $scope.autoplay);
            $scope.isSelImg = function (item) {
                return $scope.hoverImg == item.id;
            }
            $scope.hoverImg = i;
            $scope.isSelImg(i);
        }
    };
}]);

CSS

.swiper-container {
    margin: 0 auto;
    position: relative;
    overflow: hidden;
    z-index: 1;
    width: 100%;
    height: 100%;
}
.swiper-wrapper{
    height: 200px;
    width: 100%;
}
.swiper-wrapper-items {
    height: 100%;
    position: absolute;
    width: 100%;
    opacity: 0;
    transition: opacity .8s;
    -moz-transition: opacity .8s;
    -webkit-transition: opacity .8s;
    -o-transition: opacity .8s;
}
.imgActive.swiper-wrapper-items {
    opacity: 1;
}
.swiper-container img {
    width: 100%;
    height: 100%;
}

.swiper-pagination {
    display: box;
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    bottom: 0 !important;
    position: absolute;
    left: 0;
    right: 0;
    text-align: center;
    z-index: 12;
}

.pagination-item:first-child {
    background-color: rgba(60,141,188,0.5);
}

.pagination-item:nth-child(2) {
    background-color: rgba(202,64,64,0.5);
}

.pagination-item:nth-child(3) {
    background-color: rgba(255,134,4,0.5);
}

.pagination-item:last-child {
    background-color: rgba(34,172,56,0.5);
}
.imgActive.pagination-item:first-child {
    background-color: rgba(60,141,188,1);
}
.imgActive.pagination-item:nth-child(2) {
    background-color: rgba(202,64,64,1);
}
.imgActive.pagination-item:nth-child(3) {
    background-color: rgba(255,134,4,1);
}
.imgActive.pagination-item:last-child {
    background-color: rgba(34,172,56,1);
}
.pagination-item {
    -webkit-box-flex: 1;
    -moz-box-flex: 1;
    -webkit-flex: 1;
    -ms-flex: 1;
    flex: 1;
    -webkit-user-select: none; /* Chrome all / Safari all /opera15+*/
    -moz-user-select: none; /* Firefox all */
    -ms-user-select: none; /* IE 10+ */
    user-select: none;
    cursor: pointer;
    color: #fff;
    padding: 10px;
    transition: all .8s;
    -moz-transition: all .8s;
    -webkit-transition: all .8s;
    -o-transition: all .8s;
}

引用

<swiper-img img-list="imgList" tab-list="tabList" autoplay="autoplay"></swiper-img>

控制器

$scope.tabList = [{ id: 0, name: "开拓创新" }, { id: 1, name: "高效务实" }, { id: 2, name: "利益客户" }, { id: 3, name: "成就员工" }];
        $scope.imgList = [{ id: 0, src: "@Url.Content("~/Content/images/u3.jpg")" }, { id: 1, src: "@Url.Content("~/Content/images/bg1.png")" },
            { id: 2, src: "@Url.Content("~/Content/images/bg2.png")" }, { id: 3, src: "@Url.Content("~/Content/images/bg3.png")" }];
        $scope.autoplay = 5000;

tabList 是汉字导航栏

imgList 是图片链接数组

autoplay 是切换时间

效果图

好的,完成了。

时间: 2024-11-08 10:22:10

angularjs1 制作自定义轮播图(汉字导航)的相关文章

Objective-C UI之自定义轮播图控件

下面我们自定义一个轮播图类ImageLoop继承于UIView,类ImageLoop中包含一个UIScrollView和UIPageControl,其中定义三个属性: pageControll,position,currentPage可以自定义pageControl样式,也可以使用position控制播放方向,或者设置从下标为currentPage的图片开始播放 下面是ImageLoop的接口文件: #import <UIKit/UIKit.h> typedef enum{Left,Right

小程序自定义轮播图

话不多说,上图上代码. wxml <view style="white-space: nowrap;" class="box" bindtouchstart="touchstart" bindtouchmove="touchmove" bindtouchend="touchend"> <view class="club" animation="{{animat

vue element 框架 自定义轮播图,点击上下翻图,并让图片居中

1.素材展示窗口,左侧预览滚动区域按分辨率做一屏最大预览数量做均分(超过最大预览数量是滚动条滑动) 2.左侧预览滚动区域增加浅灰色底色要求与滚动条颜色区分 3.预览滚动区域单个区域高度固定,素材图按比例缩放 4.素材图展示大图上下顶部及底部区域增加上下翻页箭头,点击有按压效果 5.预览的素材大图为左侧预览区域居中的素材,上下翻页,滚动区域居中素材跟随翻滚  以上是需求,下面贴代码 轮播图效果 template 1 <el-dialog class="material-dialog"

如何使用微信小程序制作banner轮播图?

在前端工程师的工作中,banner是必不可少的,那缺少了DOM的小程序是如何实现banner图的呢?如同其他的框架封装了不同的banner图的方法,小程序也封装了banner的方法,来让我一一道来: 一:准备工作 我用两张图吧,如下所示: 1.jpg                                                                                       2.jpg 二:编写xsml代码(即html) 在这里我们要是用<swipe

使用JQuery制作幻灯片(轮播图)

1.首先看一下目录结构 images文件夹放所需要播放的图片. js文件夹放jquery库和main.js 2.html代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <title>JQuery slideShow</title> 6 <style> 7 *{margin: 0;

Android开发之ViewPager实现轮播图(轮播广告)效果的自定义View

最近开发中需要做一个类似京东首页那样的广告轮播效果,于是采用ViewPager自己自定义了一个轮播图效果的View. 主要原理就是利用定时任务器定时切换ViewPager的页面. 效果图如下: 主页面布局实现如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&

android ViewPager实现的轮播图广告自定义视图,网络获取图片和数据

public class SlideShowAdView extends FrameLayout { //轮播图图片数量    private static int IMAGE_COUNT = 3;    //自动轮播的时间间隔    private final static int TIME_INTERVAL = 5;    //自动轮播启用开关    private final static boolean isAutoPlay = false;       //自定义轮播图的资源ID   

Android——ViewPager和内部view之间的事件分发及轮播图

viewpager 在滑动的过程中是如何触发view身上的事件的,换句话说,viewpager在滑动的过程中到底是滑动的它里面的view,还是滑动的viewpager本身? 一.示例代码: 1.自定义ViewPager:MyViewPager,重新dispatchTouchEvent方法,添加一些事件处理的log信息. package com.example.viewpagerdemo; import android.content.Context; import android.support

photoSlider-原生js移动开发轮播图、相册滑动插件

详细内容请点击 在线预览   立即下载 使用方法: 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" href="css/photoSlider.min.css" /><script src="js/photoSlider.min.js" type="text/javascript" charset="utf-8&q