【问题标题】:inline divs that adjust width automatically自动调整宽度的内联 div
【发布时间】:2013-05-17 16:06:47
【问题描述】:

如果是 2 个 div。一个是静态的,另一个是动态的。也就是说,一个 div 的宽度应该是 400px(这个我称之为静态 div,因为它具有静态宽度),另一个 div 应该占据其余宽度(这个我称之为动态 div,因为它具有动态宽度)。而且,动态 div 没有固定宽度,应该占据所有剩余部分,并且应该在静态 div 在左侧浮动的地方浮动。我的主要问题是在网站处于活动状态时拉伸浏览器时,出现了主要问题。我不希望 div 重叠或下降。我想调整动态 div 的宽度,使菜单保持不变。

我的示例代码:

<style type="text/css">
    body{
        margin:0px;
    }
    #wrap{
        width:100%;
        min-width:1000px;
    }
    #static{
        width:400px;
        float:left;
        background-color:#930; /* Just to differentiate DIV */
    }
    #dynamic{
        float:right;
        background-color:#CF0; /* Just to differentiate DIV */
    }
    .menus{
        display:inline-block;
        padding-left:5px;
        padding-right:5px;
            width:80px;
    }
</style>
<div id="wrap">
    <div id="static">
        Logo comes here
    </div>
    <div id="dynamic">
        <div class="menus">
            Menu1
        </div>
        <div class="menus">
            Menu1
        </div>
        <div class="menus">
            Menu1
        </div>
        <div class="menus">
            Menu1
        </div>
        <div class="menus">
            Menu1
        </div>
        <div class="menus">
            Menu1
        </div>
    </div>
</div>

在上面的代码中,菜单显示在离 logo 很远的地方,而我需要它们在 logo 旁边(但不应该向左浮动。)并且,应该调整动态 div 的宽度,以便显示它们不浪费空间。

如果这不是 CSS,那么请任何人建议我使用 JS/jQuery 代码。

非常感谢任何帮助。

【问题讨论】:

    标签: css html dynamic width


    【解决方案1】:

    只需从#dynamic 中删除float:right

    JS Bin demo


    要均匀分布菜单项,请执行以下操作:

    #dynamic
    {
        background-color:#CF0; /* Just to differentiate DIV */
        display:table;
        width: 100%;
    }
    
    .menus
    {
        display:table-cell;
        text-align:center;
    }
    

    JS Bin 演示:http://jsbin.com/emulux/2


    第三部分...

    在静态 div 上设置百分比宽度,如 20%,为动态 div 设置 80%:

    #static
    {
        float:left;
        background-color:#930; /* Just to differentiate DIV */
        width: 20%;
    }
    
    #dynamic
    {
        background-color:#CF0; /* Just to differentiate DIV */
        display:table;
        width: 80%;
    }
    
    .menus
    {
        display:table-cell;
        text-align:center;
    }
    

    JS Bin demo

    【讨论】:

    • 很酷,但是如何调整菜单以使它们具有相同的填充?
    • 相等的填充?你的意思是第一个菜单左边距?
    • 实际上并非如此,在您的 JSbin 菜单中看起来它们是左对齐的。我什至不需要它在中心对齐,但我需要它以这样一种方式对齐,即所有菜单都平等地占据每个菜单之间的空间,这样动态 Div 中就不会有浪费空间
    • 酷,你能告诉我如何实现它吗?
    • 酷,谢谢,但右侧仍有空间浪费。我需要菜单来覆盖动态 div 中的所有空间。
    【解决方案2】:

    这应该可以解决问题..

    DEMO

     #static{
            width:400px;
            float:left;
            background-color:#930; /* Just to differentiate DIV */
            display:inline; /*New Line */
        }
        #dynamic{
          /*  float:right;*/
            background-color:#CF0; /* Just to differentiate DIV */
            width:100%;
        }
    

    【讨论】:

    • 很酷,但是如何调整菜单以使它们具有相等的填充,在您的 JSbin 菜单中看起来它们是左对齐的。我什至不需要它在中心对齐,但我需要它以这样一种方式对齐,即所有菜单都平等地占据每个菜单之间的空间,这样动态 Div 中就不会有浪费空间
    • @RockStar 你想要它像jsfiddle.net/ZS2tH/2 吗?你说的额外空间是因为 width:80px;对于 CSS 中的菜单类如果这解决了您的问题,请接受作为答案
    • 我希望菜单从左到右展开并占据所有空间,并且应在收缩网站宽度时进行调整,并且不应同时重叠。在您的输出中,动态 div 的左侧或动态 div 的右侧都有浪费空间。我不想看到浪费空间。我需要菜单来覆盖所有动态 div 宽度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2011-03-22
    • 2015-06-30
    • 2015-09-05
    • 2023-04-03
    • 2012-10-23
    相关资源
    最近更新 更多