Rumah hujung hadapan web tutorial js 多功能旋转木马轮播实例

多功能旋转木马轮播实例

Nov 05, 2016 pm 03:05 PM
JavaScript css html

今天项目需要用到旋转木马轮播功能,需要显示个可以切换的选项,这几个选项也许是图片,也许是文字,也许是一个iframe页面,也有可能是图文混排,还可能需要支持调用接口数据,需要显示多条信息,最少3条,最多不限,可能有10条,可能有10000条,于是就有了下面这个实现方法,看上去已经很完美了(样式和具体显示图片、文字或者是iframe页面、图文混排、调用接口数据等请自行在此实例基础上调试)

1.png

需要说明的是预先显示:2   1   9,是因为一共有9张图片,默认显示第一张在中间,往右是2,背后那张是3,不过背后那张无需进行设置。这是视觉初始的效果,可根据自己需要调整。

 

carrousel.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>旋转木马轮播</title>
<style type="text/css">
html, body {
    width: 100%;
    height: 100%;
}
.carrousel .arrow_left {
    background: #000;
    left: 20px;
}
.carrousel .arrow_right {
    background: #000;
    right: 20px;
}
.carrousel .arrow_left, .carrousel .arrow_right {
    position: absolute;
    top: 50%;
    width: 50px;
    line-height: 50px;
    height: 50px;
    text-align: center;
    color: #FFF;
    cursor: pointer;
}
.carrousel .back {
    z-index: 1;
    opacity: 0.3;
    margin: auto;
    width: 10%;
    height: 60px;
    left: 45%;
}
.carrousel .left {
    left: 10%;
}
.carrousel .right {
    right: 10%;
}
.carrousel .left, .carrousel .right {
    top: 53%;
    width: 60px;
    height: 60px;
    z-index: 2;
    opacity: 0.5;
}
.carrousel .front {
    left: 45%;
    top: 50%;
    margin: auto;
    width: 10%;
    height: 100px;
    z-index: 3;
    opacity: 1;
}
.carrousel .front, .carrousel .right, .carrousel .back, .carrousel .left, .carrousel .content {
    position: absolute;
    background: #666;
    text-align: center;
    color: #FFF;
    font-size: 20px;
}
.carrousel .content {
    width: 100%;
    top: 80%;
    text-align: center;
    color: #fff;
    margin: auto;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.1.js"></script>
<script type="text/javascript">
//页面加载完成后
$(document).ready(function(e) {

    //复制一个旋转木马轮播
    var a = carrousel;

    //初始化
    a.init($("#carrousel_a"), [
        ["1", "这是第一张图或内容", "1.jpg"],
        ["2", "这是第二张图或内容", "2.jpg"],
        ["3", "这是第三张图或内容", "3.jpg"],
        ["4", "这是第四张图或内容", "4.jpg"],
        ["5", "这是第五张图或内容", "5.jpg"],
        ["6", "这是第六张图或内容", "6.jpg"],
        ["7", "这是第七张图或内容", "7.jpg"],
        ["8", "这是第八张图或内容", "8.jpg"],
        ["9", "这是第九张图或内容", "9.jpg"]
    ]);

    //左边箭头点击
    $("#carrousel_a .arrow_left").click(function() {
        a.rotate("left");
    });

    //右边箭头点击
    $("#carrousel_a .arrow_right").click(function() {
        a.rotate("right");
    });

});

/**
 * carrousel.js - v1.0.0 (2016-11-5)
 *
 * 旋转木马轮播
 * by tie. qq:2185987263
 *
 * Copyright (C) 2016, tie.
 * All rights reserved.
 *
 **/

var carrousel = {

    //>3~n
    data: [],

    obj: null,

    //初始化
    data_count: 0,
    init: function(obj, data) {

        var self = this;

        self.obj = obj;
        self.data = data;

        //左边图片计数器
        self.left_img_count = self.data.length - 1;

        //右边图片计数器
        self.right_img_count = 2;

        //数据计数器
        self.data_count = 0;

        //文字或图片
        self.obj.find(".left").html(self.data[1][0]);
        //car_back的top一定要是最大得
        self.obj.find(".back").css({
            "top": self.obj.find(".left").offset().top + 1
        });
        self.obj.find(".right").html(self.data[self.left_img_count][0][0]);
        self.obj.find(".front").html(self.data[0][0]);
        self.obj.find(".content").html(self.data[0][1]);
    },

    //往左旋转
    left_img_count: null,
    left_img_up: function() {

        var self = this;

        self.left_img_count--;
        if (self.left_img_count < 0) {
            self.left_img_count = self.data.length - 1;
        }

        var t, id;
        self.obj.find(".is_horse").each(function(i) {
            if (i > 0) {
                if ($(this).offset().top > t) {
                    id = $(this).attr("data-horse");
                    t = $(this).offset().top;
                }
            } else {
                id = $(this).attr("data-horse");
                t = $(this).offset().top;
            }
        });

        self.obj.find("." + id).html(self.data[self.left_img_count][0]);
        if (self.left_img_count <= 0) {
            self.left_img_count = self.data.length;
        }

        self.right_img_count--;
        if (self.right_img_count <= 0) {
            self.right_img_count = self.data.length;
        }

        self.show_content("left");

    },

    //往右旋转
    right_img_count: null,
    right_img_up: function() {

        var self = this;

        self.left_img_count++;
        if (self.left_img_count >= self.data.length) {
            self.left_img_count = 0;
        }
        if (self.right_img_count >= self.data.length) {
            self.right_img_count = 0;
        }

        var t, id;
        self.obj.find(".is_horse").each(function(i) {
            if (i > 0) {
                if ($(this).offset().top > t) {
                    id = $(this).attr("data-horse");
                    t = $(this).offset().top;
                }
            } else {
                id = $(this).attr("data-horse");
                t = $(this).offset().top;
            }
        });

        self.obj.find("." + id).html(self.data[self.right_img_count][0]);

        self.right_img_count++;

        self.show_content("right");
    },

    //显示内容
    show_content: function(direction) {

        var self = this;

        if (direction == "left") {
            self.data_count--;
            if (self.data_count < 0) {
                self.data_count = self.data.length - 1;
            }
        }

        if (direction == "right") {
            self.data_count++;
            if (self.data_count >= self.data.length) {
                self.data_count = 0;
            }
        }

        self.obj.find(".content").animate({
            opacity: 0
        }, 500, &#39;&#39;, function() {
            self.obj.find(".content").html(self.data[self.data_count][1]).animate({
                opacity: 1
            }, 500);
        });
    },

    //旋转
    direction_lock: false,
    rotate: function(direction) {

        var self = this;

        if (self.direction_lock) {
            return false;
        }
        self.direction_lock = true;

        var ol = self.obj.find(".left"),
            ob = self.obj.find(".back"),
            or = self.obj.find(".right"),
            of = self.obj.find(".front"),
            t1 = "opacity";
        t2 = "z-index";

        var l_l = ol.offset().left,
            l_t = ol.offset().top,
            l_w = ol.width(),
            l_h = ol.height(),
            l_o = ol.css(t1),
            l_z = ol.css(t2),

            r_l = or.offset().left,
            r_t = or.offset().top,
            r_w = or.width(),
            r_h = or.height(),
            r_o = or.css(t1),
            r_z = or.css(t2),

            b_l = ob.offset().left,
            b_t = ob.offset().top,
            b_w = ob.width(),
            b_h = ob.height(),
            b_o = ob.css(t1),
            b_z = ob.css(t2),

            f_l = of.offset().left,
            f_t = of.offset().top,
            f_w = of.width(),
            f_h = of.height(),
            f_o = of.css(t1),
            f_z = of.css(t2);

        var _l_l, _l_t, _l_w, _l_h, _r_l, _r_t, _r_w, _r_h, _b_l, _b_t, _b_w, _b_h, _f_l, _f_t, _f_w, _f_h;

        if (direction == "left") {
            self.left_img_up();
            _f_l = l_l, _f_t = l_t, _f_w = l_w, _f_h = l_h, _f_o = l_o, _f_z = l_z;
            _b_l = r_l, _b_t = r_t, _b_w = r_w, _b_h = r_h, _b_o = r_o, _b_z = r_z;
            _r_l = f_l, _r_t = f_t, _r_w = f_w, _r_h = f_h, _r_o = f_o, _r_z = f_z;
            _l_l = b_l, _l_t = b_t, _l_w = b_w, _l_h = b_h, _l_o = b_o, _l_z = b_z;
        }
        if (direction == "right") {
            self.right_img_up();
            _f_l = r_l, _f_t = r_t, _f_w = r_w, _f_h = r_h, _f_o = r_o, _f_z = r_z;
            _b_l = l_l, _b_t = l_t, _b_w = l_w, _b_h = l_h, _b_o = l_o, _b_z = l_z;
            _r_l = b_l, _r_t = b_t, _r_w = b_w, _r_h = b_h, _r_o = b_o, _r_z = b_z;
            _l_l = f_l, _l_t = f_t, _l_w = f_w, _l_h = f_h, _l_o = f_o, _l_z = f_z;
        }
        ol.animate({
            width: _l_w,
            height: _l_h,
            left: _l_l,
            top: _l_t,
            opacity: _l_o,
            zIndex: _l_z
        }, 500);
        ob.animate({
            width: _b_w,
            height: _b_h,
            left: _b_l,
            top: _b_t,
            opacity: _b_o,
            zIndex: _b_z
        }, 500);
        or.animate({
            width: _r_w,
            height: _r_h,
            left: _r_l,
            top: _r_t,
            opacity: _r_o,
            zIndex: _r_z
        }, 500);
        of.animate({
            width: _f_w,
            height: _f_h,
            left: _f_l,
            top: _f_t,
            opacity: _f_o,
            zIndex: _f_z
        }, 500, &#39;&#39;, function() {
            self.direction_lock = false;
        });
    }
}
</script>
</head>

<body>
<div id="carrousel_a" class="carrousel">
  <div class="arrow_left"><</div>
  <div class="arrow_right">></div>
  <div class="left is_horse" data-horse="left"></div>
  <div class="back is_horse" data-horse="back"></div>
  <div class="right is_horse" data-horse="right"></div>
  <div class="front is_horse" data-horse="front"></div>
  <div class="content"></div>
</div>
</body>
</html>
Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan butang bootstrap Cara menggunakan butang bootstrap Apr 07, 2025 pm 03:09 PM

Bagaimana cara menggunakan butang bootstrap? Perkenalkan CSS bootstrap untuk membuat elemen butang dan tambahkan kelas butang bootstrap untuk menambah teks butang

Cara mengubah saiz bootstrap Cara mengubah saiz bootstrap Apr 07, 2025 pm 03:18 PM

Untuk menyesuaikan saiz unsur-unsur dalam bootstrap, anda boleh menggunakan kelas dimensi, yang termasuk: menyesuaikan lebar: .col-, .w-, .mw-adjust ketinggian: .h-, .min-h-, .max-h-

Cara melihat tarikh bootstrap Cara melihat tarikh bootstrap Apr 07, 2025 pm 03:03 PM

Jawapan: Anda boleh menggunakan komponen pemetik tarikh bootstrap untuk melihat tarikh di halaman. Langkah -langkah: Memperkenalkan rangka kerja bootstrap. Buat kotak input pemilih Tarikh dalam HTML. Bootstrap secara automatik akan menambah gaya kepada pemilih. Gunakan JavaScript untuk mendapatkan tarikh yang dipilih.

Cara Menulis Garis Pecah Di Bootstrap Cara Menulis Garis Pecah Di Bootstrap Apr 07, 2025 pm 03:12 PM

Terdapat dua cara untuk membuat garis perpecahan bootstrap: menggunakan tag, yang mewujudkan garis perpecahan mendatar. Gunakan harta sempadan CSS untuk membuat garis perpecahan gaya tersuai.

Cara memasukkan gambar di bootstrap Cara memasukkan gambar di bootstrap Apr 07, 2025 pm 03:30 PM

Terdapat beberapa cara untuk memasukkan imej dalam bootstrap: masukkan imej secara langsung, menggunakan tag HTML IMG. Dengan komponen imej bootstrap, anda boleh memberikan imej yang responsif dan lebih banyak gaya. Tetapkan saiz imej, gunakan kelas IMG-cecair untuk membuat imej boleh disesuaikan. Tetapkan sempadan, menggunakan kelas IMG-Sempadan. Tetapkan sudut bulat dan gunakan kelas IMG-bulat. Tetapkan bayangan, gunakan kelas bayangan. Saiz semula dan letakkan imej, menggunakan gaya CSS. Menggunakan imej latar belakang, gunakan harta CSS imej latar belakang.

Cara Menyiapkan Kerangka untuk Bootstrap Cara Menyiapkan Kerangka untuk Bootstrap Apr 07, 2025 pm 03:27 PM

Untuk menubuhkan rangka kerja bootstrap, anda perlu mengikuti langkah -langkah ini: 1. Rujuk fail bootstrap melalui CDN; 2. Muat turun dan tuan rumah fail pada pelayan anda sendiri; 3. Sertakan fail bootstrap di HTML; 4. Menyusun sass/kurang seperti yang diperlukan; 5. Import fail tersuai (pilihan). Setelah persediaan selesai, anda boleh menggunakan sistem grid Bootstrap, komponen, dan gaya untuk membuat laman web dan aplikasi yang responsif.

Cara Mengesahkan Tarikh Bootstrap Cara Mengesahkan Tarikh Bootstrap Apr 07, 2025 pm 03:06 PM

Untuk mengesahkan tarikh dalam bootstrap, ikuti langkah -langkah ini: memperkenalkan skrip dan gaya yang diperlukan; memulakan komponen pemilih tarikh; Tetapkan atribut data-BV-tarikh untuk membolehkan pengesahan; Konfigurasikan peraturan pengesahan (seperti format tarikh, mesej ralat, dll.); Mengintegrasikan rangka kerja pengesahan bootstrap dan mengesahkan input tarikh secara automatik apabila borang dikemukakan.

Cara menggunakan bootstrap di vue Cara menggunakan bootstrap di vue Apr 07, 2025 pm 11:33 PM

Menggunakan bootstrap dalam vue.js dibahagikan kepada lima langkah: Pasang bootstrap. Import bootstrap di main.js. Gunakan komponen bootstrap secara langsung dalam templat. Pilihan: Gaya tersuai. Pilihan: Gunakan pemalam.

See all articles