【问题标题】:CSS to keep middle image in 100% width slideshow always in centerCSS 将中间图像保持在 100% 宽度的幻灯片中始终居中
【发布时间】:2012-08-24 09:36:36
【问题描述】:

我正在尝试制作一个看起来像这样的幻灯片

http://ge.tt/api/1/files/2AjKcVM/0/blob/x675?noinc=1

其中宽度为 100%,并保持向左或向右无限滚动,但无论浏览器分辨率如何,图像始终位于中心。这就是我到目前为止所得到的

http://fourcreeklandscape.com/index2.html

幻灯片图像的宽度为 800 像素,最左边的图像的左侧边距为 -25%……这看起来像是在 1280 像素的屏幕尺寸下工作……但看起来不像它假设的那样当我调整窗口大小时。

这是我正在使用的幻灯片代码

$(document).ready(function() {
    //move he last list item before the first item. The purpose of this is if the user clicks to slide left he will be able to see the last item.
    $('#carousel_ul li:first').before($('#carousel_ul li:last')); 


    //when user clicks the image for sliding right        
    $('#right_scroll img').click(function(){

        //get the width of the items ( i like making the jquery part dynamic, so if you change the width in the css you won't have o change it here too ) '
        var item_width = $('#carousel_ul li').outerWidth() + 10;

        //calculae the new left indent of the unordered list
        var left_indent = parseInt($('#carousel_ul').css('left')) - item_width;

        //make the sliding effect using jquery's anumate function '
        $('#carousel_ul:not(:animated)').animate({'left' : left_indent},500,function(){    

            //get the first list item and put it after the last list item (that's how the infinite effects is made) '
            $('#carousel_ul li:last').after($('#carousel_ul li:first')); 

            //and get the left indent to the default -210px
            $('#carousel_ul').css({'left' : '-210px'});
        }); 
    });

    //when user clicks the image for sliding left
    $('#left_scroll img').click(function(){

        var item_width = $('#carousel_ul li').outerWidth() + 10;

        /* same as for sliding right except that it's current left indent + the item width (for the sliding right it's - item_width) */
        var left_indent = parseInt($('#carousel_ul').css('left')) + item_width;

        $('#carousel_ul:not(:animated)').animate({'left' : left_indent},500,function(){    

        /* when sliding to left we are moving the last item before the first list item */            
        $('#carousel_ul li:first').before($('#carousel_ul li:last')); 

        /* and again, when we make that change we are setting the left indent of our unordered list to the default -210px */
        $('#carousel_ul').css({'left' : '-210px'});
        });


    });});

有什么想法吗?谢谢

【问题讨论】:

    标签: css slideshow


    【解决方案1】:

    您可以将此 CSS 放在 #carousel_ul 上

    left: 50%;
    margin-left: -1200px;
    

    只要确保它从左到右。唯一的问题是,如果有人的显示器宽度可能超过 2000 像素,当幻灯片第一次开始播放时,他们会在左边有点没有图像 - 但我认为这很少人。

    【讨论】:

    • 谢谢,它关闭了,但当你第一次点击左或右时它不会做这个奇怪的小跳跃......之后它似乎完美地工作了。
    • 你也需要从js中删除left:-210px,这整行:: $('#carousel_ul').css({'left' : '-210px'});
    • 似乎已经停止加载新的 div,因为我删除了它......我还尝试将 -210 替换为 %50,以便它与 css 匹配。没有运气
    • 你确定它没有被缓存吗?这没有任何意义。你能把这条线去掉吗,让我知道,让我看看?
    • 是的,我只是搞砸了一些东西,但现在看看它,我只是更新了它没有那行
    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多