CSS布局:2列固定流体(再次)

时间:2011-04-01 17:27:44

标签: jquery css jstree

我正在尝试设置一个2列布局,其中左侧区域是固定的,主要内容是流畅的。我在这里看到了几个答案,这些答案往往有效。但是,当我在“left”区域中使用“jsTree”并在主/内容区域中使用jQuery UI选项卡时,会出现一些奇怪的行为。

HTML

<div id="main">
    <div id="left">
        <div id="tree">
        </div>
    </div>
    <div id="right">
        <ul>
            <li><a href="#a">A</a></li>
            <li><a href="#b">B</a></li>
            <li><a href="#c">C</a></li>
        </ul>
        <div id="a">
            <h3>A is here</h3>
        </div>
        <div id="b">
            <h3>B is here</h3>
        </div>
        <div id="c">
            <h3>C is here</h3>
        </div>
    </div>
</div>

CSS

#left {
    float: left;
    width: 200px;
    overflow: auto;
}

#right {
    margin: 0 0 0 200px;
}

的javascript

$(document).ready(function() {
    $('#right').tabs();
    $('#tree').jstree({
        "plugins" : [ "json_data", "themes"],
        "json_data" : {
            "data" : [
                { 
                    "data" : "A node", 
                    "children" : [ "Child 1", "Child 2" ]
                },
                { 
                    "attr" : { "id" : "li.node.id" }, 
                    "data" : { 
                        "title" : "Long format demo", 
                        "attr" : { "href" : "#" } 
                    } 
                }
            ]
        }, 
    });
});

我遇到的问题是,当我展开树(左侧)时,右边的标签开始变得时髦。包含标签的区域(我相信的元素)垂直增长。

请看这个示例:http://jsfiddle.net/codecraig/gBUw2/

3 个答案:

答案 0 :(得分:3)

Josiah说得对,但更好的解决方案是改变clear-fix技术的本质。 .ui-helper-clearfix执行此操作:

.ui-helper-clearfix::after {
    clear: both;
    content: '.';
    display: block;
    height: 0px;
    visibility: hidden;
}

问题是clear:both。您可以通过以下方式获得所需的清除而不会丢失全宽度块显示:

#right .ui-helper-clearfix {
    clear: none;
    overflow: hidden;
}

clear:both clear-fix 取代overflow:hidden clear-fix

http://jsfiddle.net/ambiguous/BkWWW/

答案 1 :(得分:1)

小部件标签页头有明确的解决方法。 updated fiddle。您可以使用非浮动布局修复此问题,或者像这样覆盖css:

#right .ui-helper-clearfix { display: inline-block; }

这使得标题不会扩展容器的整个宽度。

答案 2 :(得分:0)

您需要做的就是简单地调整您的CSS,如下所示:

#left {
    float: left;
    width: 23%;
    overflow: auto;
}

#right {
    float: left;
    width: 75%;
    display: block;
}

这也可以解决标签容器不会扩展全宽的问题。虽然您可以将#right的宽度百分比调整为您喜欢的任何内容。