【问题标题】:5000px+ Wide Horizontal Scrolling?5000px+ 宽水平滚动?
【发布时间】:2012-04-06 02:57:38
【问题描述】:

我正在建立这个网站,关于这个页面我基本上有两个问题: http://sites.publishyours.com.br/silviamecozzi/pt/obra/deserto_das_palmas.php

在链接上,您会看到一些不同尺寸的“将是”图像以及它的图例。 其中一些图像将达到 1700 像素以上,这是第一个问题和问题。

检查 html 和 css,您会看到一个 id 为“gallery”的 div,其中包含所有图像。它是绝对定位的,我将其宽度设置为 4800 像素(不足以容纳所有向左浮动的图像。如果将此宽度更改为 5000 像素,则足以容纳所有图像,一切都会好起来的应该是这样,但是……

问题01: 为什么我需要设置 div#gallery 宽度?我会有其他类似的部分,具有不同的图像/尺寸,我无法预览它需要多宽。我只是希望它尽可能宽,如果我以后需要添加更多图像,我希望它可以根据需要尽可能宽。

问题02: 首先请注意我如何将“画廊”div 的左侧位置设置为-150px。 好吧,一旦我解决了第一个问题,我可能会将“html”标签设置为 {overflow-x:hidden; }。并使用与网站一样宽的水平滚动条(+- 920px),在图像的正下方,我希望图像从“隐藏的右侧”滚动(使用 jQuery 滚动条),例如 { left: 0px; } 到“隐藏的左侧”,例如 { left: -3980px; } 的浏览器,反之亦然,因为用户使用滚动...此滚动将需要计算#gallery div 的宽度和所有...有人可以指点我一个 jQuery 插件来帮助我做到这一点?我正在考虑 jscrollpane (http://jscrollpane.kelvinluck.com) 但我真的不知道它是否可行。

感谢您的帮助!

【问题讨论】:

    标签: jquery html css horizontal-scrolling


    【解决方案1】:

    问题1:可以使用prenowrap来防止换行。只要您的html结构和css正确,您就不需要设置画廊宽度。

    问题 2:您可以使用 jQuery 中的 scrollLeft 属性来显示元素。你不需要插件。

    http://jsfiddle.net/3Tsfv/1

    然后使用 scrollLeft 属性将下一个元素动画化到视图中。此示例不处理边框情况,因此如果您单击左/右太多次,它将中断。不过,您应该很容易根据自己的需要对其进行修改。

    css

    body { white-space:nowrap; overflow: hidden; padding: 10px; }
    img { margin: 5px; border: 1px solid black; }
    img.active { border-color: orange; }
    div{ position: fixed; }​
    

    html

    <div><button id="left"><-</button><button id="right">-></button></div><br /><br />
    <img class="active" src="http://placehold.it/500x100/" /><img src="http://placehold.it/750x100/" /><img class="active" src="http://placehold.it/300x100/" /><img class="active" src="http://placehold.it/1000x100/" />
    

    jquery

    $('#left').click(function() {
        var $prev = $('.active').prev();
        $('.active').removeClass('active');
        $prev.addClass('active');   
        $('body').animate( { scrollLeft: $prev.offset().left }, 'slow');
    });
    
    $('#right').click(function() {
        var $next = $('.active').next();
        $('.active').removeClass('active');
        $next.addClass('active');   
        $('body').animate( { scrollLeft: $next.offset().left }, 'slow');
    });
    ​
    

    【讨论】:

    • 感谢您的宝贵时间和有用的答案!我刚刚在我的 CSS 中使用 nowrap; 解决了 Q-01 问题,我在这里给出第一个“反馈”。这是一个检查结果的测试页面:example我必须做一些测试,这就是我基本上必须使用的:#gallery { white-space: nowrap; } div holding all figure tags figure { display: inline-block; } 它没有't work with inline 现在我必须解决 jQuery 部分。将需要一个水平滚动条,因为一些 imgs 会很宽。简单的点击 btn 是不行的
    • 为了更好地解释为什么 btns 不能用于 imgs 导航,我将使用您自己的 jsfiddle example。当你到达 1000px 宽的 img 时,如果用户有一个小窗口,他将无法看到图像的右侧,当用户单击右侧 btn 时,img 的速度非常快,以至于他/她仍然将无法查看 img 详细信息。这就是为什么需要滚动条的原因。用户可以选择以他想要的方式查看 imgs。我什至可以稍后添加 btns,但确实需要滚动条。任何的想法?再次感谢!
    • 然后使用overflow-x 属性将图像容器设置为100% 吗? jsfiddle.net/3Tsfv/2
    • 再次感谢!这“几乎”是我所需要的。唯一的问题是这样做,100% 的宽度将与我为我的网站 (920 像素) 拥有的相同空间相关。我需要的是一个 920 像素宽的水平滚动条,我需要图像滚动浏览器窗口的 100% 宽度。
      如果窗口有 1600 像素,我需要一个 920 像素宽的滚动条,并且图像在所有1600像素;这就是为什么我在考虑一个 jquery 滚动条插件。这样,那些拥有大屏幕的人将能够使用其显示器分辨率看到更大的图像。你怎么看?有什么想法吗?
    • mrtsherman,我几乎得到了我需要的东西......它真的快完成了。我正在使用 jQuery UI 滑块,我正在抓住这个 example code 我只是不明白为什么它还没有工作......实际上它正在工作但处理程序没有在我拥有的“滑块空间”内“滑动”。 .. 我还检查了 css 以查看它是否是不可见/没有样式但没有...这是link,所以你可以看到它现在的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2012-07-13
    • 2013-07-06
    • 2012-04-05
    • 2010-11-18
    相关资源
    最近更新 更多