首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >overflow:hidden breaks滑块

overflow:hidden breaks滑块
EN

Stack Overflow用户
提问于 2012-02-24 13:49:48
回答 1查看 1.6K关注 0票数 3

我有一个滑块,当你点击一个链接时,它会在div之间来回跳动。它一直在工作,直到你添加了overflow: hidden,然后一切都崩溃了!

我创建了一个供任何人查看的demo。您将注意到它可以工作,但是尝试将overflow: hidden添加到.clickWrapper div以隐藏滑入的div,它就会崩溃。当你点击你想要的div时,它会滚动过其他的div。

http://jsfiddle.net/z67tZ/

代码语言:javascript
复制
$(function() {
    $(".clickIt a").click(function() {
        var linked = $(this).attr("href");
        var pos = $(linked).position();
        $(".clickSlider").stop().animate({
            left: -pos.left,
        }, 500);
    });
});
代码语言:javascript
复制
<div id="wrapper">
    <div class="clickIt">
        <a href="#one">one</a>
        <a href="#two">two</a>
        <a href="#three">three</a>
    </div>
    <div class="clickWrapper">
        <div class="clickSlider">
            <div id="one">one</div>
            <div id="two">two</div>
            <div id="three">three</div>
        </div>
    </div>
</div>
代码语言:javascript
复制
#wrapper {margin: 0 auto; width: 200px;  }
.clickWrapper {background:red; position:relative; overflow:hidden; background-color: #CCC; height: 200px; }
.clickSlider { position: relative; width: 600px; }
#one, #two, #three { float: left; width: 200px; }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-24 13:57:34

尝试阻止默认哈希更改,如下所示:

代码语言:javascript
复制
$(".clickIt a").click( function (e) {
    e.preventDefault();
    var linked = $(this).attr("href"),
        pos = $(linked).position().left;

    $(".clickSlider").stop().animate({left: -pos}, 500 );
});

FIDDLE

我不完全确定为什么会发生这种情况?

我的两个缺点是,它是浏览器的本机函数,它尝试滚动到任何与href属性匹配的锚点,当前面有一个散列时,单击该锚点。

当页面试图向下滚动到与href具有相同锚点的元素时,这会导致位置混乱。

当使用href值和href值,并且href值与滚动之外的元素ID匹配时,添加preventDefault (或者返回false,即使这里不需要停止任何传播)总是一个好主意,以避免像这样的怪异bug。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9426046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档