为了账号安全,请及时绑定邮箱和手机立即绑定

我按照您的步骤写的,但是没有出现效果

现在就是没有预览图这块有了,但是幻灯片这块的图片和标题都不显示


正在回答

1 回答

给你看我的代码,可以运行

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html">
    <title>Preview Slideshow</title>
    <style type="text/css">
        *{
            padding: 0;
            margin: 0;
        }
        body{
            padding: 50px 0;
            background-color:#FFF;
            font-size: 14px;
            font-family: 'Avenir Next';
            color:#555;
            -webkit-font-smoothing: antialiased;
        }
        .slider .main .main-i,
        .slider .main,
        .slider{
            width: 100%;
            height: 400px;
            position: relative;
        }
        /*幻灯片区域*/
        .slider .main{
            overflow: hidden;
        }
        /*每一个幻灯片的样式*/
        .slider .main .main-i img{
            width: 100%;
            position: absolute;
            left: 0;
            top: 50%;
            z-index: 1;
        }

        .slider .main .main-i .caption{
            position: absolute;
            right: 50%;
            top: 30%;
            z-index: 9;
        }
        .slider .main .main-i .caption h2{
            font-size: 40px;
            line-height: 50px;
            color: #B5B5B5;
            text-align: right;
        }
        .slider .main .main-i .caption h3{
            font-size: 70px;
            line-height: 70px;
            color: #000000;
            text-align: right;
            font-family: 'Open Sans Condensed';
        }
        /*控制按钮区域*/
        .slider .ctrl{
            width: 100%;
            height: 13px;
            line-height: 13px;
            text-align: center;
            position: absolute;
            left: 0;
            bottom: -13px;
        }
        .slider .ctrl .ctrl-i{
            position: relative;
            display: inline-block;
            width: 150px;
            height: 13px;
            background-color: #666;
            box-shadow: 0 1px 1px rgba(0,0,0,.3);
            margin-left: 1px;
        }
        
        .slider .ctrl .ctrl-i img{
            width: 100%;
            position: absolute;
            left: 0;
            bottom: 50px;
            z-index: 1;
            opacity: 0;
            -webkit-transition: all .2s;
        }
        /*hover 到控制按钮的样式*/
        .slider .ctrl .ctrl-i:hover{
            background-color: #F0F0F0;
        }
        .slider .ctrl .ctrl-i:hover img{
            bottom: 13px;
            -webkit-box-reflect: below 0px -webkit-gradient(
                    linear,
                    left top,
                    left bottom,
                    from(transparent),
                    color-stop(50%,transparent),
                    to(rgba(255,255,255,.3))
                );
            opacity: 1;
        }
        /*active 当前展现的状态*/
        .slider .ctrl .ctrl-i_active:hover,
        .slider .ctrl .ctrl-i_active{
            background-color: #000;
        }
        .slider .ctrl .ctrl-i_active:hover img{
            opacity: 0;
        }
        /*幻灯片切换样式*/
        .slider .main .main-i{
            opacity: 0;
            position: absolute;
            right: 50%;
            top: 0;
            -webkit-transition: all .5s;
            z-index: 2;
        }
        .slider .main .main-i_right{
            right: -50%;
        }
        .slider .main .main-i h2{
            margin-right: 45px;
        }
        .slider .main .main-i h3{
            margin-right: -45px;
        }
        .slider .main .main-i h2,
        .slider .main .main-i h3{
            opacity: 0;
            -webkit-transition: all 1s .8s;
        }
        #main_background,
        .slider .main .main-i_active{
            opacity: 1;
            right: 0;
            z-index: 2;
        }
        #main_background{
            z-index: 1;
        }
        .slider .main .main-i_active h2,
        .slider .main .main-i_active h3{
            margin-right: 0;
            opacity: 1;
        }
        .slider .main .main-i .caption{
            margin-right: 13%;
        }

    </style>
</head>
<body>
<div class="slider">
<!--0.修改VIEW->Temolate(关键字替换),增加template id-->
    <div class="main" id="template_main">
        <div class="main-i main-i_active {{css}}" id="main_{{index}}">
            <div class="caption">
                <h2>{{h2}}</h2>
                <h3>{{h3}}</h3>
            </div>
            <img src="img/{{index}}.jpg" class="picture">
        </div>
    </div>
    <div class="ctrl" id="template_ctrl">
        <a href="javascript:switchSlider({{index}});" class="ctrl-i" id="ctrl_{{index}}">
            <img src="img/{{index}}.jpg">
        </a>
    </div>
</div>
<script type="text/javascript">

    //1.数据定义(实际生产环境中,应由后台给出)
    var data = [
        {img:1,h2:'Creative',h3:'DUET'},
        {img:2,h2:'Friendly',h3:'DEVIL'},
        {img:3,h2:'Tranquilent',h3:'COMPATRIOT'},
        {img:4,h2:'Insecure',h3:'HUSSLER'},
        {img:5,h2:'loving',h3:'REBEL'},
        {img:6,h2:'Passionate',h3:'SEEKER'},
        {img:7,h2:'Crazy',h3:'PRIEND'}
    ];
    
    //2.通用函数
    var g = function(id){
        if (id.substr(0,1)=='.') {
            return document.getElementsByClassName(id.substr(1));
        };
        return document.getElementById(id);
    }

    //3.添加幻灯片的操作,(所有幻灯片&对应的按钮)
    function addSliders(){
        //3.1 获取模板
        var tpl_main = g('template_main').innerHTML.replace(/^\s*/, '').replace(/\s*$/, '');
        var tpl_ctrl = g('template_ctrl').innerHTML.replace(/^\s*/, '').replace(/\s*$/, '');
        //3.2 定义最终输出HTML的变量
        var out_main = [];
        var out_ctrl = [];
        //3.3 遍历所有数据,构建最终输出的HTML
        for(var i =0;i<data.length;i++){
            var _html_main = tpl_main
            .replace(/{{index}}/g,data[i].img )
            .replace(/{{h2}}/g,data[i].h2)
            .replace(/{{h3}}/g,data[i].h3 )
            .replace(/{{css}}/g, ['','main-i_right'][i%2]);
            var _html_ctrl = tpl_ctrl.replace(/{{index}}/g, data[i].img);
            out_main.push(_html_main);
            out_ctrl.push(_html_ctrl);
        }
        //3.4把html回写到对应的Dom里
        g('template_main').innerHTML = out_main.join('');
        g('template_ctrl').innerHTML = out_ctrl.join('');
        //7.增加#main_background
        g('template_main').innerHTML +=tpl_main
            .replace(/{{index}}/g,'{{index}}' )
            .replace(/{{h2}}/g,'')
            .replace(/{{h3}}/g,' ' );;
        g('main_{{index}}').id = 'main_background';

    }

    //5.幻灯片切换
    function switchSlider (n) {
        //5.1获得要展现的幻灯片&控制按钮 DOM
        var main = g('main_'+n);
        var ctrl = g('ctrl_'+n);
        
        //5.2获得所有的幻灯片以及控制按钮
        var clear_main = g('.main-i');
        var clear_ctrl = g('.ctrl-i');
        //5.3清除他们的样式
        for(var i=0;i<clear_ctrl.length;i++){
            clear_main[i].className = clear_main[i].className.replace('main-i_active', '');
            clear_ctrl[i].className = clear_ctrl[i].className.replace('ctrl-i_active', '');
        }
        //5.4为当前按钮和幻灯片附加样式
        main.className +=' main-i_active';
        ctrl.className +=' ctrl-i_active';
        //7.2切换时,复制上一张幻灯片到main_background中
        setTimeout(function(){
            g('main_background').innerHTML = main.innerHTML;
        },1000);
        
    }

    //6.动态调整图片的margin-top使其垂直居中
    function movePictures(){
        var pictures = g('.picture');
        for(var i = 0;i < pictures.length;i++){
            pictures[i].style.marginTop = (-1*pictures[i].clientHeight/2)+'px';
        }
    }

    //4.定义何时处理幻灯片输出
    window.onload = function(){
        addSliders();
        switchSlider(1);
        setTimeout(function(){
            movePictures();
        },100);
        
    }
</script>
</body>
</html>

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我按照您的步骤写的,但是没有出现效果

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信