滚动时如何使可滚动div内的中间div保持在顶部

时间:2014-04-23 11:55:10

标签: html menu

我有一个标题(div),菜单(div)&容器内的内容(div)(可滚动的div)。

我想设置菜单只在向下滚动容器内部时(滚动div)!!!.

这是我的代码:

<div id="wrapper">
  <div id="LangBar"/>
  <div id="LeftFloat"/>
  <div class="main" id="sb">**this is the CONTAINER (SCROLLABLE DIV)**
    <div id="header">**this is the HEADER (DIV)**</div>
    <div id="menu">**this is the MENU (DIV)**</div>
    <div class="section">**this is the CONTENT (DIV)**</div>
    <div id="footer"/>
  </div>
  <div id="RightFloat"/>
</div>

这是我的JSFIDDLE

2 个答案:

答案 0 :(得分:0)

请参阅我的代码:http://jsfiddle.net/aisinvon/4pEBm/5

因为只有在向下滚动时才需要菜单操作,我们可以使用jquery来完成它。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>JS Bin</title>
    <style type="text/css">
    .section {
        height:1000px;
        background: #ccc;
    }
    .main{
        height: 500px;
        overflow: scroll;
    }
    .fixed {
        position:fixed;
        top:0;
        left:0;
    }
    </style>
</head>

<body>
    <div id="wrapper">
        <div id="LangBar" />
        <div id="LeftFloat" />
        <div class="main" id="sb">**this is the CONTAINER (SCROLLABLE DIV)**
            <div id="header">**this is the HEADER (DIV)**</div>
            <div id="menu">**this is the MENU (DIV)**</div>
            <div class="section">**this is the CONTENT (DIV)**</div>
            <div id="footer" />
        </div>
        <div id="RightFloat" />

        <script type="text/javascript" src="http://cdn.staticfile.org/jquery/1.8.3/jquery.min.js"></script>
        <script type="text/javascript">
        $(function() {
            var $menu = $('#menu'),
                menuTop = $menu.offset().top;
            $('#sb').scroll(function() {
                var scrollTop = $('#sb').scrollTop();
                if (scrollTop > menuTop) {
                    $menu.addClass('fixed');
                } else {
                    $menu.removeClass('fixed');
                }

            });
        });
        </script>
    </div>
</body>

</html>

答案 1 :(得分:0)

绝对位置3个元素并设置溢出:自动为中间的一个像这个小提琴。 http://jsfiddle.net/majinnaibu/p47mU/

CSS

html, body, #wrapper{
    height: 100%;
    width: 100%;
    padding: 0px;
    margin: 0px;
}

#wrapper{
    background: #0f0;
}

#header{
    position: absolute;
    top: 0px;
    left: 0px;
    right: 0px;
    height: 50px;
    background: rgba(255,0,0,0.5);
}

#footer{
    position: absolute;
    height: 50px;
    bottom: 0px;
    left: 0px;
    right: 0px;
    background: rgba(0,0,255,0.5);
}

#content{
    position: absolute;
    overflow: auto;
    top: 50px;
    bottom: 50px;
}

HTML

    <div id="wrapper">
    <div id="header">
        Header Content
    </div>
    <div id="content">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus convallis neque ut turpis volutpat pretium. Donec luctus vel lectus eget condimentum. Aliquam interdum dignissim neque, eu pulvinar erat porta sit amet. Nam urna lectus, rhoncus eu ante ac, lobortis pretium velit. Phasellus vestibulum quam in elit dapibus imperdiet. Integer lobortis nec dolor sit amet accumsan. Sed nec faucibus mi, scelerisque mollis erat. Vivamus eu sapien ornare, posuere mi nec, mollis metus. Aenean convallis est ipsum, eget dignissim leo tincidunt eget. Praesent malesuada dolor vel lacus malesuada, at fermentum nunc eleifend. Integer est metus, dapibus sit amet enim in, posuere aliquam lorem. Vivamus convallis neque at odio convallis, ut sodales erat ultricies. Quisque et enim ac enim imperdiet consectetur. Etiam eget lectus nec lorem congue dictum. Nulla facilisi.

        Quisque ligula dolor, pharetra et ante nec, blandit interdum risus. Mauris ultrices malesuada sem, a luctus diam auctor in. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque purus magna, laoreet id malesuada non, blandit sed diam. Vivamus blandit faucibus mattis. Aliquam semper faucibus erat eu mollis. Donec eleifend leo lacus, sed aliquet nisi consequat ac.

        Morbi dictum pharetra feugiat. In nec turpis dolor. Mauris consectetur hendrerit scelerisque. Aenean eleifend dui ac augue varius porttitor at a leo. Fusce semper mollis vulputate. Praesent libero enim, congue eget tellus vitae, mattis tempor turpis. Fusce cursus ligula quam, eget iaculis leo ullamcorper eget. Nam laoreet quam pulvinar, egestas justo id, cursus eros. Pellentesque congue porttitor pretium.

        Suspendisse mattis sapien sed magna tempus ultrices. Nullam porta sagittis nulla ut venenatis. Nulla faucibus elementum elementum. Integer sed consectetur elit, quis elementum dolor. Donec dapibus aliquam orci eu pretium. Aliquam vel fermentum nunc. Duis augue mauris, semper at neque ac, aliquet mattis augue. Suspendisse pulvinar vehicula semper. Aenean purus orci, pharetra vel sollicitudin quis, tincidunt ac dolor.

        Duis nibh tellus, iaculis vel venenatis sed, condimentum ac est. Sed ac imperdiet neque. Phasellus et euismod lorem. Nunc hendrerit orci mattis, tincidunt quam vel, varius mauris. Phasellus venenatis malesuada congue. Nam ut nunc eros. Nulla facilisi. Pellentesque facilisis massa a tortor imperdiet ullamcorper eget convallis nisl. Suspendisse potenti. Nam a congue est. Praesent id ante dui. In hac habitasse platea dictumst. Sed eget metus sit amet arcu pellentesque molestie ac eget mauris. Nullam adipiscing odio at interdum porttitor. Proin magna mi, facilisis ac rhoncus ac, gravida ut lacus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus convallis neque ut turpis volutpat pretium. Donec luctus vel lectus eget condimentum. Aliquam interdum dignissim neque, eu pulvinar erat porta sit amet. Nam urna lectus, rhoncus eu ante ac, lobortis pretium velit. Phasellus vestibulum quam in elit dapibus imperdiet. Integer lobortis nec dolor sit amet accumsan. Sed nec faucibus mi, scelerisque mollis erat. Vivamus eu sapien ornare, posuere mi nec, mollis metus. Aenean convallis est ipsum, eget dignissim leo tincidunt eget. Praesent malesuada dolor vel lacus malesuada, at fermentum nunc eleifend. Integer est metus, dapibus sit amet enim in, posuere aliquam lorem. Vivamus convallis neque at odio convallis, ut sodales erat ultricies. Quisque et enim ac enim imperdiet consectetur. Etiam eget lectus nec lorem congue dictum. Nulla facilisi.

        Quisque ligula dolor, pharetra et ante nec, blandit interdum risus. Mauris ultrices malesuada sem, a luctus diam auctor in. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque purus magna, laoreet id malesuada non, blandit sed diam. Vivamus blandit faucibus mattis. Aliquam semper faucibus erat eu mollis. Donec eleifend leo lacus, sed aliquet nisi consequat ac.

        Morbi dictum pharetra feugiat. In nec turpis dolor. Mauris consectetur hendrerit scelerisque. Aenean eleifend dui ac augue varius porttitor at a leo. Fusce semper mollis vulputate. Praesent libero enim, congue eget tellus vitae, mattis tempor turpis. Fusce cursus ligula quam, eget iaculis leo ullamcorper eget. Nam laoreet quam pulvinar, egestas justo id, cursus eros. Pellentesque congue porttitor pretium.

        Suspendisse mattis sapien sed magna tempus ultrices. Nullam porta sagittis nulla ut venenatis. Nulla faucibus elementum elementum. Integer sed consectetur elit, quis elementum dolor. Donec dapibus aliquam orci eu pretium. Aliquam vel fermentum nunc. Duis augue mauris, semper at neque ac, aliquet mattis augue. Suspendisse pulvinar vehicula semper. Aenean purus orci, pharetra vel sollicitudin quis, tincidunt ac dolor.

        Duis nibh tellus, iaculis vel venenatis sed, condimentum ac est. Sed ac imperdiet neque. Phasellus et euismod lorem. Nunc hendrerit orci mattis, tincidunt quam vel, varius mauris. Phasellus venenatis malesuada congue. Nam ut nunc eros. Nulla facilisi. Pellentesque facilisis massa a tortor imperdiet ullamcorper eget convallis nisl. Suspendisse potenti. Nam a congue est. Praesent id ante dui. In hac habitasse platea dictumst. Sed eget metus sit amet arcu pellentesque molestie ac eget mauris. Nullam adipiscing odio at interdum porttitor. Proin magna mi, facilisis ac rhoncus ac, gravida ut lacus.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus convallis neque ut turpis volutpat pretium. Donec luctus vel lectus eget condimentum. Aliquam interdum dignissim neque, eu pulvinar erat porta sit amet. Nam urna lectus, rhoncus eu ante ac, lobortis pretium velit. Phasellus vestibulum quam in elit dapibus imperdiet. Integer lobortis nec dolor sit amet accumsan. Sed nec faucibus mi, scelerisque mollis erat. Vivamus eu sapien ornare, posuere mi nec, mollis metus. Aenean convallis est ipsum, eget dignissim leo tincidunt eget. Praesent malesuada dolor vel lacus malesuada, at fermentum nunc eleifend. Integer est metus, dapibus sit amet enim in, posuere aliquam lorem. Vivamus convallis neque at odio convallis, ut sodales erat ultricies. Quisque et enim ac enim imperdiet consectetur. Etiam eget lectus nec lorem congue dictum. Nulla facilisi.

        Quisque ligula dolor, pharetra et ante nec, blandit interdum risus. Mauris ultrices malesuada sem, a luctus diam auctor in. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque purus magna, laoreet id malesuada non, blandit sed diam. Vivamus blandit faucibus mattis. Aliquam semper faucibus erat eu mollis. Donec eleifend leo lacus, sed aliquet nisi consequat ac.

        Morbi dictum pharetra feugiat. In nec turpis dolor. Mauris consectetur hendrerit scelerisque. Aenean eleifend dui ac augue varius porttitor at a leo. Fusce semper mollis vulputate. Praesent libero enim, congue eget tellus vitae, mattis tempor turpis. Fusce cursus ligula quam, eget iaculis leo ullamcorper eget. Nam laoreet quam pulvinar, egestas justo id, cursus eros. Pellentesque congue porttitor pretium.

        Suspendisse mattis sapien sed magna tempus ultrices. Nullam porta sagittis nulla ut venenatis. Nulla faucibus elementum elementum. Integer sed consectetur elit, quis elementum dolor. Donec dapibus aliquam orci eu pretium. Aliquam vel fermentum nunc. Duis augue mauris, semper at neque ac, aliquet mattis augue. Suspendisse pulvinar vehicula semper. Aenean purus orci, pharetra vel sollicitudin quis, tincidunt ac dolor.

        Duis nibh tellus, iaculis vel venenatis sed, condimentum ac est. Sed ac imperdiet neque. Phasellus et euismod lorem. Nunc hendrerit orci mattis, tincidunt quam vel, varius mauris. Phasellus venenatis malesuada congue. Nam ut nunc eros. Nulla facilisi. Pellentesque facilisis massa a tortor imperdiet ullamcorper eget convallis nisl. Suspendisse potenti. Nam a congue est. Praesent id ante dui. In hac habitasse platea dictumst. Sed eget metus sit amet arcu pellentesque molestie ac eget mauris. Nullam adipiscing odio at interdum porttitor. Proin magna mi, facilisis ac rhoncus ac, gravida ut lacus.
    </div>
    <div id="footer">
        Footer Content
    </div>
</div>