不同视图的2列布局:100%:0%,70%:30%,0%:100%



这是一个HTML/CSS结构/位置问题,它可能是一个快速,我只是错过了一些东西。已经用了好几天了…我想不明白。

我有一个信息的饲料,我在几乎全宽度显示,当我点击一个按钮,我想要第二个面板滑动从右边到~68/28的比例,如果我点击另一个按钮,右面板采取全宽度。

我尝试了一堆东西,相对位置,浮动…但我似乎不明白。理想情况下,使用CSS的"位置"属性,使动画平滑使用CSS3。

看起来我真的不擅长定位。

这是HTML,简单明了:

<div class="container">
    <div class="col-left">Some content here from left col</div>
    <div class="col-right">Some content ehre from right col</div>
</div>

和不起作用的CSS:

.container{
    position: absolute;
    left: 50px;
    padding: 0 40px;
    right: 0;
}
.col-left. col-left{
    position: relative;
    display: block;  
    top:0px;
    -webkit-transition: all 500ms ease;
    -moz-transition: all 500ms ease;
    -ms-transition: all 500ms ease;
    -o-transition: all 500ms ease;
    transition: all 500ms ease;
}
.col-left{
    left:0px;
}
.col-right{
     right: -100%;  
}
body.split .col-left{   
}
body.split .col-right{
}

Here is a Fiddle:

http://jsfiddle.net/5zG3q/21/(正如你所看到的,我已经在v21的小提琴和仍然不能弄清楚)

提前感谢你的帮助。

编辑经过一些调整,我得到了更接近我想要的东西,但感觉很脏……http://jsfiddle.net/5zG3q/23/

从@drew_w和其他帖子中获得灵感后,我想我找到了解决方案。我在col周围添加了一个两倍宽度的换行DIV。然后分母比,显然要除以2。然后我可以通过宽度和位置来制作动画。

.container {
    position: absolute;
    left: 60px;
    padding: 0 40px;
    right: 0;
    overflow:hidden;
    background:#e2e2e2;
}
.inner-container{
    display: block;
    width: 200%;
    overflow: hidden;
}
.col-left,  .col-right {
    display: inline-block;
    vertical-align: top;
    -webkit-transition: all 500ms ease;
    -moz-transition: all 500ms ease;
    -ms-transition: all 500ms ease;
    -o-transition: all 500ms ease;
    transition: all 500ms ease;
}
.col-left {
    width: 50%;
    background: green;
}
.col-right {
    margin-left: 10%;
    width: 29%;
    background: red;
}
body.split .col-left {
    width: 33%;
}
body.split .col-right {
    margin-left: 1%;
    width: 15%;
}
body.full .col-left {    
    width: 33%;
    margin-left: -33%;
}
body.full .col-right {
    margin-left: 0%;
    width: 50%;
}

必须添加一点JS,在主体中添加一个类:

$("body").on("click", "[data-toggle-view]", function () {    
    var $this = $(this);
    var $body = $("body");
    var view = $this.data("toggleView");
    $body.removeClass("split full");
    $body.addClass(view);
    return false;
});

小提琴:http://jsfiddle.net/5zG3q/23/

仍然感觉不太干净,但它有效。

最新更新