将div堆叠在一个页面中并在它们之间移动

时间:2013-07-13 09:57:50

标签: css html relativelayout

此图大致代表我要做的事情。左上角的第二个矩形表示视口。这意味着每个div应该覆盖整个视口,其他三个都不应该是可见的。

Stacking divs full page

所以我使用了这个css:

body  {overflow : hidden;}

#page {width:200%;
       position : absolute;}

#page div {width: 50%;
       position:relative;
       height: 100%;}

接下来,我将锚标记放在div中以便在它们之间导航。但它不起作用。我到第二个div好了,但我不能去任何其他div。我知道这可以通过jquery来解决,但我想用纯HTML和CSS来做,只使用jquery来设置过渡动画。

我该怎么做?

以下是JSFIDDLE

2 个答案:

答案 0 :(得分:0)

这是一个关于你在说什么的工作小提琴:

http://jsfiddle.net/X4URc/3/

我使用了html:

<div class='container'>
    <div class='navbar'>
        <div align='center'> <a class='menu1 menu-item'>Item 1</a>
 <a class='menu2 menu-item'>Item 2</a>
 <a class='menu3 menu-item'>Item 3</a>
 <a class='menu4 menu-item'>Item 4</a>

        </div>
    </div>
    <div class='content'>
        <ul class='content-container'>
            <li class='contents content1'>Content 1</li>
            <li class='contents content2'>Content 2</li>
            <li class='contents content3'>Content 3</li>
            <li class='contents content4'>Content 4</li>
        </ul>
    </div>
</div>

CSS:

.menu-item {
    background: black;
    color: white;
    padding: 15px;
    cursor: pointer;
}
.menu-item:hover {
    background: white;
    color: black;
}
.menu-item:not(.menu1) {
    margin-left: -8px;
}
.navbar {
    background: black;
    padding: 15px;
    width: 700px;
}
.container {
    background: white;
    width: 730px;
    margin: 0 auto;
}
.content1 {
    margin-left: -40px;
}
.contents {
    padding-bottom: 400px;
    padding-right: 668px;
    height: 500px;
    background: red;
    list-style-type: none;
    display: inline;
}
.contents:not(.content1) {
    margin-left: -4px;
}
body {
    background: #ccc;
}
.content {
    width: 730px;
    background: white;
    overflow: hidden;
}
.content-container {
    width: 9999999px;
    height: 500px;
}

Jquery的:

$('.menu1').click(function(){
    $('.content1').css({'margin-left' : '-40px'});
});
$('.menu2').click(function(){
    $('.content1').css({'margin-left' : '-770px'});
});
$('.menu3').click(function(){
    $('.content1').css({'margin-left' : '-1500px'});
});
$('.menu4').click(function(){
    $('.content1').css({'margin-left' : '-2230px'});
});
// for more add -730px every time
//If you don't want animations change .animate() to .css()

我没有使用很多div,而是使用隐藏溢出的div,然后将其设置为显示:inline;

答案 1 :(得分:0)

一个好的方法可能是ScrollTo http://flesler.com/jquery/scrollTo/