5

我正在开发网络应用程序的原型。在这个应用程序中,我在主窗口中有数据,底部有一个托盘,当用户单击选项卡时,它可以滑入和滑出。这是一个演示我在说什么的小提琴: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中不显示...

4

2 回答 2

1

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

有关更多信息,请参阅下面的链接

于 2013-05-01T10:21:45.510 回答
0

将 ' top' css value 和 ' 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);
        });
}
于 2013-05-01T09:32:38.890 回答