在css中设置负底部属性会扩展到页面底部

时间:2016-05-02 19:38:32

标签: javascript html css css3 css-transitions

我试图在页面底部隐藏部分html元素,然后通过CSS3过渡单击向上滑动来显示整个事物。

通常,应该发生的是在页面下方延伸的元素部分只是隐藏但是,正在发生的是页面正在被扩展以显示元素的一部分。

我该如何解决这个问题?

继承我的代码:

HTML:

<div class="closed" id="slidePanel">
    <div id="slidePanel-tab">
            Stuff
    </div>
    <div id="slidePanel-contents">
        <ol>
            <li>stuff</li>
            <li>stuff</li>
        </ol>
    </div>
</div>

CSS:

#slidePanel {
    background-color: #e9e9e9;
    position: absolute;
    bottom: 0;
    left: calc(50% - 66px);   
    z-index: 2;
    min-width: 10%;
    min-height: 20%;
    border: 2px solid rgba(0, 0, 0, .05);

    -webkit-transition: bottom 0.5s ease-in-out;
    transition: bottom 0.5s ease-in-out;
}

#slidePanel.closed {
    bottom: calc(-20% + 20px);

    -webkit-transition: bottom 0.5s ease-in-out;
    transition: bottom 0.5s ease-in-out;
}

#slidePanel-tab {
    background-color: #d0d0d0;
}

$("#slidePanel-tab").click(function (evt) {
    $("#slidePanel").toggleClass("closed");

    evt.preventDefault();
});

以下是一个例子: https://jsfiddle.net/sd306pyr/

2 个答案:

答案 0 :(得分:1)

您可以将元素的位置设置为fixed

#slidePanel {
background-color: #e9e9e9;
position: fixed;
bottom: 0;
left: calc(50% - 66px);   
z-index: 2;
min-width: 10%;/*30%; */
min-height: 20%;
border: 2px solid rgba(0, 0, 0, .05); 
-webkit-transition: bottom 0.5s ease-in-out;
transition: bottom 0.5s ease-in-out;
}

请参阅小提琴:https://jsfiddle.net/sd306pyr/2/

您还可以按照问题的评论中的指示,将元素容器的overflow设置为hidden。无论你的DOM整体布局如何都能更好。

答案 1 :(得分:0)

转换完成后,您应该制作将显示设置为的javascript脚本,并将 body overflow设置为隐藏