zoukankan      html  css  js  c++  java
  • 带视觉差的轮播图

     最终结果:

    代码:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            html {
                box-sizing: border-box;
                font-family: 'Open Sans', sans-serif;
            }
    
            *, *:before, *:after {
                box-sizing: inherit;
                margin: 0;
                padding: 0;
            }
    
            body {
                background-color: #000;
                overflow: hidden;
            }
            .cont {
                position: relative;
                height: 100vh;
                overflow: hidden;
            }
            .slider {
                position: relative;
                height: 100%;
                cursor: all-scroll;
            }
            .trans-select{
                -webkit-transform: translate3d(0, 0, 0);
                transform: translate3d(0, 0, 0);
                will-change: transform;
                -webkit-user-select: none;
                -moz-user-select: none;
                -ms-user-select: none;
                user-select: none;
            }
            .slide {
                position: absolute;
                top: 0;
                width: 100%;
                height: 100%;
                overflow: hidden;
            }
            .slide-1 {
                left: 0%;
            }
            .slide-2 {
                left: 100%;
            }
            .slide-3 {
                left: 200%;
            }
            .slide-darkbg {
                position: absolute;
                width: 100%;
                height: 100%;
                top: 0;
                left: 0;
                z-index: 10;
            }
            .slide-text-wrapper {
                z-index: 15;
            }
            .slide-sty{
                position: absolute;
                display: -webkit-box;   /*是老规范,要兼顾古董机子就加上它。*/
                display: -ms-flexbox;
                display: flex;            /*是新规范,老机子不支持的*/
                width: 100%; height: 100%;
                -webkit-box-align: center;
                -ms-flex-align: center;
                -webkit-box-pack: center;
                -ms-flex-pack: center;
                justify-content: center;
                align-items: center;
            }
            .slide-text-wrapper {
                z-index: 15;
            }
            .slide-letter{
                top: 0px;left: 0px;
                font-size: 50vw;
                font-weight: 800;
                color: #000;
                z-index: 2;
                -webkit-text-fill-color: transparent !important;
                -webkit-background-clip: text !important;
            }
            .slide-text {
                font-size: 8vw;
                font-weight: 800;
                text-transform: uppercase;
                letter-spacing: 12px;
                color: #fff;
                -webkit-user-select: none;
                -moz-user-select: none;
                -ms-user-select: none;
                user-select: none;
            }
            .slide-text:nth-child(odd) {
                z-index: 2;
            }
            .slide-text:nth-child(even) {
                z-index: 1;
            }
            .slide-darkbg:after {
                content: '';
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background-color: rgba(11, 15, 39, 0.83);
            }
            .cont .bg{
                -webkit-transform: translate3d(0, 0, 0);
                transform: translate3d(0, 0, 0);
                will-change: transform;
                background-position: 0px center, 0px center;
                background-size: cover;
                -webkit-filter: brightness(200%);
                filter: brightness(150%);
            }
            .bg-1{
                background: url("./test-img/1.jpg") center center no-repeat;
            }
            .bg-2 {
                background: url("./test-img/2.jpg") center center no-repeat;
            }
            .bg-3 {
                background: url("./test-img/3.jpg") center center no-repeat;
            }
            .slide-darkbg-1{
                left: 0%;
            }
            .slide-darkbg-2{
                left: -50%;
            }
            .slide-darkbg-3 {
                left: -100%;
            }
    
    
            .nav {
                position: absolute;
                bottom: 25px;
                left: 50%;
                -webkit-transform: translateX(-50%);
                transform: translateX(-50%);
                list-style-type: none;
                z-index: 10;
            }
            .nav-slide {
                position: relative;
                display: inline-block;
                width: 28px;
                height: 28px;
                border-radius: 50%;
                border: 2px solid #fff;
                margin-left: 10px;
                cursor: pointer;
            }
    
            .nav-slide:hover:after {
                -webkit-transform: translate(-50%, -50%) scale(1, 1);
                transform: translate(-50%, -50%) scale(1, 1);
                opacity: 1;
            }
            .nav-slide:after {
                content: '';
                position: absolute;
                top: 50%;
                left: 50%;
                width: 75%;
                height: 75%;
                border-radius: 50%;
                background-color: #fff;
                opacity: 0;
                -webkit-transform: translate(-50%, -50%) scale(0, 0);
                transform: translate(-50%, -50%) scale(0, 0);
                -webkit-transition: .3s;
                transition: .3s;
            }
            .nav-slide-1 {
                margin-left: 0;
            }
    
            .nav-active:after {
                -webkit-transform: translate(-50%, -50%) scale(1, 1);
                transform: translate(-50%, -50%) scale(1, 1);
                opacity: 1;
            }
    
            .slider.animation, .slider div{
                -webkit-transition: -webkit-transform 750ms ease-in-out;
                transition: transform 750ms ease-in-out;
            }
    
            .side-nav {
                position: absolute;
                width: 10%;
                height: 100%;
                top: 0;
                z-index: 20;
                cursor: pointer;
                opacity: 0;
                -webkit-transition: 300ms;
                transition: 300ms;
            }
            .side-nav:hover {
                opacity: .1;
            }
            .side-nav--right {
                right: 0;
                background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, #eed7ff 100%);
                background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, #eed7ff 100%);
            }
            .side-nav--left {
                left: 0;
                background-image: -webkit-linear-gradient(right, rgba(255, 255, 255, 0) 0%, #eed7ff 100%);
                background-image: linear-gradient(to left, rgba(255, 255, 255, 0) 0%, #eed7ff 100%);
            }
    
        </style>
    </head>
    <body>
        <div class="cont" id="cont">
            <div class="slider trans-select">
                <div class="slide slide-1" data-target="1">
                    <div class="slide-darkbg bg bg-1 slide-darkbg-1"></div>
                    <div class="slide-sty slide-text-wrapper">
                        <div class="slide-sty slide-letter bg bg-1 trans-select"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                    </div>
                </div>
                <div class="slide slide-2" data-target="2">
                    <div class="slide-darkbg bg bg-2 slide-darkbg-2"></div>
                    <div class="slide-sty slide-text-wrapper">
                        <div class="slide-sty slide-letter bg bg-2 trans-select"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                    </div>
                </div>
                <div class="slide slide-3" data-target="3">
                    <div class="slide-darkbg bg bg-3 slide-darkbg-3"></div>
                    <div class="slide-sty slide-text-wrapper">
                        <div class="slide-sty slide-letter bg bg-3 trans-select"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                        <div class="slide-text"></div>
                    </div>
                </div>
            </div>
            <ul class="nav">
                <li class="nav-slide nav-slide-1 nav-active" data-target="1"></li>
                <li class="nav-slide " data-target="2"></li>
                <li class="nav-slide " data-target="3"></li>
            </ul>
            <div data-target='right' class="side-nav side-nav--right"></div>
            <div data-target='left' class="side-nav side-nav--left"></div>
        </div>
    </body>
    <script src="js/jquery-1.11.3.js"></script>
    <script>
        'use strict';
        $(function(){
            var numOfBanner= 3,  // 轮播图个数
                 animSpd = 750;   // 动画延迟时间
            var toggleSlide=function(target){
                $('.nav .nav-slide').removeClass('nav-active');
                $('.nav li[data-target='+target+']').addClass('nav-active');
            };
            var slideBanner=function(target,direction){
                var $slider = $('.slider');
                $slider.addClass('animation');
                $slider.css({
                    'transform': 'translate3d(-' + (target - direction) * 100 + '%, 0, 0)'
                });
    
                $slider.find('.slide-darkbg').css({
                    'transform': 'translate3d(' + (target - direction) * 50 + '%, 0, 0)'
                });
    
                $slider.find('.slide-letter').css({
                    'transform': 'translate3d(0, 0, 0)'
                });
    
                $slider.find('.slide-text').css({
                    'transform': 'translate3d(0, 0, 0)'
                });
    
            };
            var navigateRight=function(curSlide){
                if (curSlide >= numOfBanner) return;
                slideBanner(curSlide,0);
                setTimeout(()=>{}, animSpd);
                toggleSlide(curSlide+1);
            };
            var navigateLeft=function(curSlide){
                if (curSlide <= 1) return;
                slideBanner(curSlide,2);
                setTimeout(()=>{}, animSpd);
                toggleSlide(curSlide-1);
            };
            $('#cont').on('click', '.nav-slide:not(.nav-active)', function () {
                var target =+$(this).attr('data-target');  //使用 + 将string 转换为number
    //             console.log(typeof target,target);
                toggleSlide(target);
                slideBanner(target,1);
    
            });
            $(document).on('click', '.side-nav', function () {
                var target = $(this).attr('data-target');
                var curSlide=+$('.nav .nav-active').attr('data-target');
                if (target === 'right') navigateRight(curSlide);
                if (target === 'left') navigateLeft(curSlide);
            });
        });
    
    </script>
    </html>
  • 相关阅读:
    JS学习之构造函数、原型、原型链
    JS学习之面向对象(面向对象的创建方法,new运算符的工作原理)
    JS学习之事件流
    JS学习之生命周期与垃圾回收机制
    关于在XP操作系统和IIS5.1环境下的MVC环境搭建之IIS错误
    VS2010、.net 4.0下MVC3开发中Code First开发模式的数据迁移小结
    关于MVC3框架下的Jquery异步请求函数的学习心得之一——$.post()
    关于ASP调用存储过程的经典资料转载
    关于windows环境下的IIS 500内部服务器错误的一种解决办法
    接VS2010+Net+MVC3+EF4.1环境下的Code First一文的补充说明
  • 原文地址:https://www.cnblogs.com/web-fusheng/p/6807495.html
Copyright © 2011-2022 走看看