【问题标题】:horizontal menu with 4 equally spaced elements具有 4 个等距元素的水平菜单
【发布时间】:2015-06-04 23:48:01
【问题描述】:

我想创建一个包含 4 个等距元素的水平菜单。菜单必须始终贴在浏览器底部。

棘手的部分是,第一个元素字符串必须从左边距开始,最后一个元素字符串必须在右边距结束。

它们之间的字符串应该是等距的。菜单的宽度应该是可伸缩的。 这是迄今为止我最接近的解决方案,它不准确:/

/UPDATE/ 集合应该从浏览器屏幕的边缘开始,而联系人应该在浏览器屏幕的右边缘结束。 (所以边距我的意思是浏览器非常边缘......)

演示:https://jsfiddle.net/t8kn1nch/

你有什么想法吗?

HTML:

            <div id="navigation">
                <div id="collection">collection</div>
                <div id="shopabout">
                    <div id="shop">shop</div>
                    <div id="about">about</div>
                </div>
                <div id="contact">contact</div>
            </div>

CSS:

#navigation{
position: absolute;
bottom: 0;
width: 100%;
}

#navigation div{
display: inline-block;
}

#navigation #collection{
float: left;
}

#navigation #shopabout{
width: 100%;
display: inline;

}
#navigation #shop{
width: calc(100%/1.8);
text-align: center;
}
#navigation #about{
display: inline;
}
#navigation #contact{
float: right;
}

【问题讨论】:

    标签: css menu navigation


    【解决方案1】:

    查看 jsfiddle 的工作解决方案:

    https://jsfiddle.net/45n3d6hs/2/

    CSS:

    #navigation {
        position: absolute;
        bottom: 0;
        width: 100%;
    }
    #navigation #collection, #navigation #contact {
        width: 25%;
        float:left;
    }
    #navigation #shop, #navigation #about {
        width: 50%;
        float: left;
    }
    #navigation #shopabout {
        width: 50%;
        float: left;
    }
    

    【讨论】:

    • 嗨 dcardoso!谢谢你的代码。缺少的部分与 Aramil Rey 和 HelloWorld 的其他解决方案相同。集合应从浏览器屏幕的边缘开始,联系人应在浏览器屏幕的右边缘结束。
    • 您可以将#navigation 设置为使用超过100% 的父级宽度并像这样使用它:width: 120%; margin-left: -10%... margin-left 应该是您增加的宽度的一半。不是一个完美的解决方案,否则我会使用 jscript 作为解决方法。
    【解决方案2】:

    尽管您可以使用一些解决方法,但这里的正确解决方案是使用flexbox

    #navigation {
        position: absolute;
        bottom: 0;
        width: 100%;
        display: flex;
        flex-direction: row;
        align-items: stretch;
    }
    #collection, #contact {
        width: 25%;
    }
    #contact {
        text-align: right;
    }
    #shopabout {
        width: 50%;
    
        display: flex;
        flex-direction: row;    
    }
    #shop, #about {
        width: 50%;
        text-align:center;
    }
    

    这是我的fiddle,如果您需要解决方案,请告诉我。

    【讨论】:

    • 谢谢,但元素应该在同一行中并排(等间距)。集合应从浏览器屏幕的边缘开始,联系人应在浏览器屏幕的右边缘结束。
    • 我在我的解决方案中包含了这个要求。还是我理解错了?你能不能,我不知道,添加你想要完成的图像,因为我真的很困惑?
    【解决方案3】:

    类似THIS?

    * {
      margin: 0 0 0 0;
    }
    body {
      background-color: black;
    }
    #navigation {
      width: 100%;
    }
    #navigation > div {
      display: inline-block;
      width: 25%;
      text-align: center;
      background-color: red;
    }
    #navigation > div:first-child, #navigation > div:last-child {
      background-color: brown;
    }
    <div id="navigation">
      <div id="collection">
        collection</div><div id="shop">
        shop</div><div id="about">
        about</div><div id="contact">
        contact</div>
    </div>

    这里的技巧是使用 HTML,使用display: inline-block 使 div 之间的空间可以像一个元素一样被读取,一个空格键。 div 之间的任何空白都会破坏这种布局,因为每个 div 占用 25% 的宽度!

    【讨论】:

    • 这几乎就是我的意思!缺少的部分与 HelloWorld 的代码中的字符串相同,因此“Collection”应该从浏览器屏幕的边缘开始。对不起,我没有在我的问题中正确描述它!我要更新它。哦,谢谢你的帮助:)
    • div“collection”从body的最开始开始,contact的div在最后结束!文本只是居中对齐!
    • 我更改了第一个和最后一个 div 的颜色,因此 #navigation div 的宽度为 100%,每个子 div 占据屏幕的 25% - 运行此全屏以澄清更进一步。
    【解决方案4】:

    好的,试试这个 CSS。

    #navigation{
        position: fixed;
        bottom: 0;
        width: 100%;
    }
    
    #collection {
        width:25%;
    }
    
    #contact {
        width:25%;
    }
    
    #shopabout {
        width:50%;
    }
    
    #shop,
    #about {
        width:50%;
    }
    
    #navigation div{
        display: inline-block;
        text-align:center;
        float:left;
    }
    
    #navigation #contact {
        text-align:right;
    }
    
    #navigation #collection {
        text-align:left;
    }
    

    【讨论】:

    • 它看起来和我想象的差不多,但是缺少了棘手的部分!字符串不是从屏幕边缘开始的。抱歉,“从边缘开始”可能描述不准确:/,我的意思是它真的从浏览器屏幕的边缘开始。
    猜你喜欢
    • 2010-11-15
    • 2011-04-20
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多