调整窗口大小时右侧的 CSS 水平菜单项重叠

标签 css position css-float window-resize

我已经搜索过但无法找到解决方案。

我有一个 CSS 水平菜单,导航菜单左对齐,工具栏项右对齐。当浏览器窗口展开时看起来不错,但当它缩小时,右侧的工具栏与左侧的导航菜单项重叠。显然这是因为我已经正确定位了它,但我不确定如何解决这个问题。是否可以防止工具栏重叠,而是隐藏并生成水平滚动条?

请看我的 jsfiddle http://jsfiddle.net/e9etC/2/

HTML:

<div id="navcontainer">
<div id="menu">
    <ul>
        <li><a href="#">AAAAA</a></li>
        <li><a href="#">BBBBB</a>
            <ul>
                <li><a href="#">xxxxx</a></li>
                <li><a href="#">xxxx</a></li>
                <li><a href="#">dddd</a></li>
                <li><a class="menuparent" href="#">cccccc</a>
                    <ul>
                        <li><a href="#">1111</a></li>
                        <li><a href="#">2222</a></li>
                        <li><a href="#">333</a></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li><a href="#">CCCCC</a>
            <ul>
                <li><a href="#">SubMenu</a></li>
                <li><a href="#">SubMenu</a></li>
                <li><a href="#">SubMenu</a></li>
                <li><a class="menuparent" href="#">SubMenu</a>
                    <ul>
                        <li><a href="#">SubSubMenu</a></li>
                        <li><a href="#">SubSubMenu</a></li>
                    </ul>
                </li>
                <li><a href="#">SubMenu</a></li>
            </ul>
        </li>
        <li><a href="#">DDDDD</a>
            <ul>
                <li><a href="#">SubMenu</a></li>
                <li><a href="#">SubMenu</a></li>
            </ul>
        </li>
        <li><a href="#">EEEE</a>
            <ul>
                <li><a href="#">SubMenu</a></li>
                <li><a href="#">SubMenu</a></li>
                <li><a href="#">SubMenu</a></li>
                <li><a href="#">SubMenu</a></li>
            </ul>
        </li>
        <li><a href="#">GGGGG</a></li>
    </ul>
</div>
<div id="toolbar">
    <ul>
        <li class="currentclient"><a title="Most recently selected client" href="#">1234567: John Doe</a></li>
        <li>Client Search</li>
        <li><input name="cpc" title="Search by client code, names, email address, phone numbers or CSN." id="cpc" style="width: 150px;" type="text"/></li>
        <li><input name="btnCP" class="inputbutton" id="btnCP" type="button" value="Search"/></li>
    </ul>
</div>

CSS:

html, body
{
    padding: 0;
    margin: 0;
}

body
{
    font-size: 8pt;
    font-family: Arial, Helvetica, sans-serif;
    background-color: #eaeaea;
}

#navcontainer
{
    position: fixed;        
    top: 14px;
    left: 0;
    width:100%;
    height: 28px;
    background-color: #F5F5F5;
}

#navcontainer, #menu ul ul, #menu ul ul ul
{
    border-top: 1px solid #FFF;
    border-left: 1px solid #FFF;
    border-right: 1px solid #808080;
    border-bottom: 1px solid #808080;
}

#menu, #toolbar{

    padding:0;
    margin:0;
    position: absolute;
}
#menu ul, #toolbar ul{
    padding:0;
    margin:0;
}
#menu li, #toolbar li{
    position: relative;
    list-style: none;
    margin: 0;
    padding:0;
    white-space: nowrap;
} 

#menu li a, #toolbar li a{
    height: 28px;
    display: block;
    text-decoration:none;
    line-height: 28px;
    color: #000;
    padding: 0 10px;
    white-space: nowrap;
} 

#menu ul ul li a, #menu ul ul ul li a
{
    line-height: 20px;
    height: 20px;
}

#menu li a:hover{
    background-color: #A9A9A9;
    color: #fff;
} 
#menu ul ul, #menu ul ul ul {
    position: absolute;
    visibility: hidden;
}

#menu ul ul ul {
    left: 100%;
    top: 0;
    margin-top: -1px;
}

#menu ul li:hover > ul, #menu ul ul li:hover ul{
    visibility:visible;
}
#menu > ul > li > a {
    text-align:center;
}

#menu > ul, #toolbar > ul { 
    white-space: nowrap;
}
#menu > ul > li {
  display: inline-block;
  float: none;
  border-left: 1px solid #808080;
  margin: 0 -3px 0 0;
}
#menu ul li:first-child
{
    border-left: none;
}

#menu  a.menuparent
{
    background-image: url(greyarrow.gif);
    background-position: right center;
    background-repeat: no-repeat;
}

#toolbar
{
    right: 3px;
}

#toolbar > ul > li
{
    display: inline-block;
    float: none;
}
#toolbar .currentclient a {
    color: #1B70E0;
    text-decoration: underline;
}
.inputbutton
{
    border: solid 1px #8a9ab2;
    padding: 5px;
    padding-top: 0;
    cursor: pointer;
    height: 22px;
    background-color: #c6d2e7;
    color: #2a3341;
}

最佳答案

那是因为你已经为你的元素指定了 position: absolute。更改以下规则的定义将解决您的问题 Checkout this Jsfiddle

#menu, #toolbar{
    display: table-cell;
    width: 80%;
}

#toolbar{
    padding-right: 3px;
    text-align: right;
}

关于调整窗口大小时右侧的 CSS 水平菜单项重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16157680/

相关文章:

html - 在 IE 中 Bootstrap css

jquery - 重新定位网页上的 'absolute' 元素 - CSS

html - 两列布局,其中主要内容 DIV 的宽度是可变的(使用所有可用空间 100%)

html - 将 float 的 div 在其父级中向上移动

css - 在窗口两侧堆叠 3 个元素,使用 inline、flex、float 或其他方式使用 CSS 调整大小

html - 背景不透明度 :before and :after anchor

html - 在计算高度期间使用 calc()

javascript - 用于移动设备的 Html 导航栏菜单

html - 对于任何输入类型, Angular Material 输入标签始终 float

javascript - 使用javascript在对 Angular 线上的两个圆之间居中(x和y)svg元素