IE8中的SlideUp()和SlideDown()效果

时间:2013-05-01 07:41:30

标签: jquery internet-explorer-8

我正在研究网络应用的原型。 在这个应用程序中,我在主窗口中有数据,底部有一个托盘,当用户点击标签时可以滑入和滑出。这是一个演示我正在谈论的内容的小提琴:http://jsfiddle.net/SetNN/2/

html:

<div id="DataPane">
<div id="VisibleContainer">
    <div class="handle">

    </div>
</div>
<div id="InvisibleContainer">
    <div class="handle">
    </div>
    <div class="dataContainer">
    </div>
</div>

css:

/* DATA PANE */
#DataPane {
  position: absolute;
  width: 100%;
  bottom: 0;
  opacity: 0.5;
  z-index: 20;
}
#DataPane .handle {
  width: 50px;
  margin: 0px auto 0px auto;
  background-color: #333333;
  text-align: center;
  cursor: pointer;
  -webkit-user-select: none;
  box-shadow: 4px 2px 11px rgba(50, 50, 50, 0.75);
}
#DataPane #VisibleContainer .handle {
  height: 20px;
  color: #ffffff;
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 0px;
  border-bottom-left-radius: 0px;
}
#DataPane #InvisibleContainer {
  display: none;
}
#DataPane #InvisibleContainer .handle {
  height: 5px;
  box-shadow: 4px 2px 11px rgba(50, 50, 50, 0.75);
}
#DataPane #InvisibleContainer .dataContainer {
  width: 99%;
  height: 49vh;
  margin: 0px auto 0px auto;
  background-color: #333333;
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 0px;
  border-bottom-left-radius: 0px;
  box-shadow: 4px 2px 11px rgba(50, 50, 50, 0.75);
}
#DataPane #InvisibleContainer .dataContainer #DataContainer {
  position: absolute;
  background-color: #ffffff;
}

随附的javascript

    var dataPaneMinimumOpacity;

$(document).ready(function () {
    // Initialise variables
    dataPaneMinimumOpacity = $("#DataPane").css('opacity');

    // Data pane
    $("#DataPane .handle").click(function () {
        var duration = 600;

        var invisibleContainer = $("#DataPane #InvisibleContainer");
        if ($(invisibleContainer).is(':visible')) {
            // In this case slideup() actually hides the container
            $(invisibleContainer).slideUp(duration, function () {
                $('#DataPane').fadeTo(duration / 2, dataPaneMinimumOpacity);
            });
        } else {
            $(invisibleContainer).slideDown(duration, function () {
                $('#DataPane').fadeTo(duration / 2, 1);
            });
        }
    })
});

与jquery 1.8.2一起使用。

客户端很可能要求它主要在IE8中工作......除了IE8之外,所有浏览器都能正常运行。 在IE8中,IETester和Explorer10都跳转到IE8模式,标签向上移动了一小部分然后停止。当我再次点击它时,它会移回原来的位置。

我错过了什么让IE8中的工作正常?

当然,另一个问题是jsFiddle本身不会在IE8中显示......

2 个答案:

答案 0 :(得分:1)

这在IE8中不起作用,因为高度是以单位(height: 49vh;)设置的,IE8浏览器不支持。如果我们将其更改为IE8支持的任何单元,那么它将正常工作。

refer to below link for more info

答案 1 :(得分:0)

将'top'css值和'overflow: hidden'设置为#DataPane,然后使用jQuery animate而不是slideUp / slideDown,如下所示:

if($('#DataPane').css('top') > 30) {
            $('#DataPane').stop(true).animate({top: '300px'}, function () {
            $('#DataPane').fadeTo(duration / 2, dataPaneMinimumOpacity);
        });
} else {

            $('#DataPane').stop(true).animate({top: '30px'}, function () {
            $('#DataPane').fadeTo(duration / 2, 1);
        });
}