html - CSS 下拉菜单边框和轻微偏移

标签 html css menu navbar dropdown

我需要制作以下下拉菜单: CSS dropdown menu SOLUTION .

我的代码没有正确完成工作: My (wrong) SOLUTION

我目前的代码:

.parent-menu li {
        display: block;
        text-transform: uppercase;
        border-bottom:none;
        border-top:none;
        padding:10px;
        border-right:none;
    }
    .sub-menu-caption, .upper-menu{
        border:1px solid red;
    }
    .parent-menu{
        width:100%;
    }
    .sub-menu {
        font-style: italic;
        display: none;
        width:170px;
        height:90px;
        position:absolute;
        background:black;
        margin:10px 0 0 -11px;
        font-size:1em;    
    }
    .sub-menu li{
        border-bottom:1px solid red;
        z-index: 1;
    }
    .sub-menu li:last-child {
        border-bottom: none;
    }
    .sub-menu-caption{
        left:auto;
        right:auto;
        text-align:center;
    }
    .sub-menu-caption:hover .sub-menu {
        display: block;
        border:solid red 1px;
        border-top:none;
        padding-bottom:5%;
    }
<nav id="main-menu" class="section">
        <ul class="parent-menu">
            <li class="sub-menu-caption">Automobiles
                <ul class="sub-menu">
                    <li><a href="https://auto.ferrari.com/en_US/sports-cars-models/car-range/812-superfast">812 Superfast</a></li>
                    <li><a href="https://auto.ferrari.com/en_US/sports-cars-models/car-range/gtc4lusso">GTC4Lusso</a></li>
                    <li><a href="https://auto.ferrari.com/en_US/sports-cars-models/car-range/ferrari-488-gtb">488 GTB</a></li>
                    <li><a href="https://auto.ferrari.com/en_US/sports-cars-models/car-range/488-spider">488 Spider</a></li>
                </ul>
            </li>
            <li class="upper-menu"><a href="https://auto.ferrari.com/en_US/owners/">services</a></li>
            <li class="upper-menu"><a href="https://preowned.ferrari.com/us">pre-owned</a></li>
            <li class="upper-menu"><a href="https://auto.ferrari.com/en_US/car-dealers/">Find a dealer</a></li>
            <li class="upper-menu"><a href="https://auto.ferrari.com/en_US/register/">my ferrari</a></li>
        </ul>
    </nav>

下拉菜单向右略微偏移,边框没有完全穿过:( 可能是什么问题呢?我该如何解决?不,我不为法拉利工作 :D 谢谢!

最佳答案

没关系。以不同方式调整 CSS 代码并找到正确的解决方案。

.parent-menu {
    overflow: hidden;
    background-color: black;
}
.parent-menu > li{
    padding: 10px;
    padding-left: 16px;
    padding-right: 16px;
    float: left;
    color: rgba(255,255,255,0.7);
    border-right: 1px solid rgba(255,0,0,0.5);
}

.parent-menu > :first-child {
    color: red;
    padding-left: 18px;
    padding-right: 18px;
    border-left: 1px solid rgba(255,0,0,0.5);
}

.sub-menu li{
    display: none;
    position: absolute;
    z-index:1;
}
.sub-menu {
    display:block;
    color: blue;
    float: left;
    text-align:left;
}
.sub-menu-caption:hover .sub-menu{
    display: block;
    position: absolute;
    top: 30px;
    left: 0px;
}   
.sub-menu-caption:hover .sub-menu li{
    display: block;
    position: static; 
    background-color: black;
    width: 100%;
    border: 1px solid rgba(255,0,0,0.5);
    border-top: 0;
    font-style: italic;
    font-size: 1em;
    padding-top: 5px;
    padding-bottom: 5px;
    padding-left: 10px; 
    padding-right: 3px;
}
.sub-menu-caption:hover .sub-menu :last-child{
    border-radius: 0px 0px 4px 4px;
}
.sub-menu-caption:hover .sub-menu :first-child{
    padding-top: 12px;
}

.sub-menu-caption:hover .sub-menu li a:hover{
    color: red;
}
#main-menu {
    top: 0;
    text-transform: uppercase;
    position: sticky;
    z-index:1;
    margin-bottom: 30px;
}

article {
    position: relative;
    width: 90%;
    margin: auto;
}
article.main-container > :first-child {
    font-variant: small-caps;
}

.parent-menu  a:link {
    text-decoration: none;
    font-weight: 400;
    color: rgba(255,255,255,0.7);
}
.parent-menu  a:visited {
    text-decoration: none;
    font-weight: 400;
    color: rgba(255,255,255,0.7);
}
.parent-menu  a:hover {
    text-decoration: underline;
    font-weight: 400;
    color: rgba(255,255,255,0.7);
}
.parent-menu a:active {
    text-decoration: none;
    font-weight: 400;
    color: rgba(255,255,255,0.7);
}
li.right-menu.upper-menu {
    background-color: rgba(255,0,0,0.5);
    float: right;
    background-clip: padding-box;
}

关于html - CSS 下拉菜单边框和轻微偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487654/

相关文章:

php - 为什么使用 Spry 菜单会杀死我的 <p> 标签?

html - 如何使用响应将此页脚与导航菜单内的底部对齐

html - 如何让我的菜单 div 充满全高而不滚动,但有一个滚动的内容 div

html - 3 列 Div 样式

javascript - 需要帮助使我的 HTML 和 CSS 代码更有效地实现导航效果

html - 导航栏中的垂直居中菜单

jquery - 使用jquery选择点击的Td右侧的所有兄弟tds

javascript - 使用键盘快捷键将文件上传到 HTML5 页面

javascript - 将背景滑入和滑出 View