可访问和动态的动画信息框

时间:2011-07-11 12:00:25

标签: javascript jquery

我已经开始使用example并添加到代码中来实现它:

  • 动态高度
  • 关闭JS后可访问

我这样做了吗?这适用于大多数浏览器吗?

工作版本可见here

原件:

$('#example-links a').hover(function(){
    var index = $("#example-links a").index(this);
    $('#example-content').animate({"marginTop" : -index*220 + "px"}); // multiply by height+top/bottom padding/margin/border
});

我修改过的代码,与上面相比似乎有点长:

var maxHeight = 0, container_maxHeight = 0;
var example_content = $("#example-content");
var example_div = example_content.children("div");

example_div.each(function() {   
    if($(this).height() > maxHeight) {
        maxHeight = $(this).height();
        container_maxHeight = $(this).outerHeight(true);
    }
});
example_div.height(maxHeight);

$("#example-content-container").css({
    "overflow":"hidden",
    "height": container_maxHeight+"px"
}); 

$('#example-links a').bind('click mouseover', function(e){
    var index = $("#example-links a").removeClass("active").index(this);
    $(this).addClass("active");
    example_content.stop().animate({"marginTop" : -index*container_maxHeight + "px"});
    e.preventDefault();
});

我绑定了点击和鼠标悬停,因为我希望它通过鼠标悬停工作,但我也希望它在没有鼠标来激活悬停的手机上浏览时工作。

1 个答案:

答案 0 :(得分:2)

一切似乎都很好,如果JS关闭的话,我唯一能添加它以使其更易于访问的是部分ID。你可以check it here

对于每个部分,您都会在包装div中添加一个ID,然后在您链接到该ID的侧链接上添加。

我会更多地清理你的代码:

(function($){
    $(document).ready(function(){   
        var maxHeight = 0, container_maxHeight = 0,
            example_content = $("#example-content"),
            example_div = example_content.children("div");

        example_div.each(function() {   
            var $section = $(this);
            if($section.height() > maxHeight) {
                maxHeight = $section.height();
                container_maxHeight = $section.outerHeight(true);
            }
        });
        example_div.height(maxHeight);

        $("#example-content-container").height(container_maxHeight);        

        var $tabs = $('#example-links a');
        $tabs.bind('click mouseover', function(e){
            var index = $tabs.removeClass("active").index(this);
            $(this).addClass("active");
            example_content.stop().animate({"marginTop" : -index*container_maxHeight + "px"});
            e.preventDefault();
        });                            
    });
})(jQuery);