一个箭头悬停效果';s以导航链接框为中心


A arrow hover effect that's centered to the nav link boxes

我在Wordpress中创建了一个网站,该网站的链接周围有一个灰色框,当你将鼠标悬停在这些框上时,它们会变成蓝色,并从框中下拉一个箭头。我的问题是,它们是绝对放置的,所以如果导航链接更长或更短,箭头就不会居中到导航框。我能够用纯CSS来达到这个效果。这是我的密码。

HTML

<div id="nav">
            <div class="navwrapper">
                    <div class="main-nav">
                        <?php bones_main_nav(); // Adjust using Menus in Wordpress Admin ?>
                    </div>
                    <div class="clearfix"></div>
            </div>
        </div>

CSS

.main-nav ul a{
    color: #0f0f0f;
    text-decoration: none;
}

.main-nav ul li a{
    color: #0f0f0f;
    text-decoration: none;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    background-color: #efefef;
    padding:  10px;
}

.main-nav ul a:hover{
    color: #fff;
    text-decoration: none;
    background-color: #5dbbe0;
     -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
    position: relative;
}

.main-nav ul li {
    float: left;
    margin:  25px 0 0 15px;
}

.main-nav ul a:hover:after{  
    content: ' ';  
    position: absolute;  
    width: 0;  
    height: 0;  
    left: 18px;  
    top: 36px;
    text-align: center;
    border-width:10px 10px 0;
    border-style: solid;  
    border-color: #5dbbe0 transparent;  
    display: block;
}

当前使用三角形的问题之一是在内联元素中嵌套块元素

由于我们必须使用显示:块;为了形成CSS3三角形,我们还将display:block添加到父元素中。

我还将三角形的位置更改为位置:相对,因为我想将其相对于锚元素进行定位

最后使用边距:0 auto以水平对齐三角形。我假设你对每个锚使用相同的高度,假设这是你的导航,所以最后使用底部:-20px相应地调整三角形的垂直位置,例如

请在此处查看演示:http://jsfiddle.net/radialglo/Am48P/7/

我将a:hover:after更改为a:after,只是为了演示。

.main nav ul a{颜色:#0f0f;文字装饰:无;}.主导航ul li a{颜色:#0f0f;文字装饰:无;-webkit边界半径:10px;-moz边界半径:10px;边界半径:10px;背景颜色:#efefef;填充:10px;显示:块;}.main nav ul a:悬停{颜色:#fff;文字装饰:无;背景颜色:#5dbbe0;-webkit边界半径:10px;-moz边界半径:10px;边界半径:10px;位置:相对;}.主导航ul li{float:左;边距:25px 0 0 15px;列表样式:无;}.main nav ul a:在{内容:";/*位置:绝对*/位置:相对;底部:-20px;/*根据需要调整垂直高度*/宽度:0;高度:0;/*左:18px;*//*顶部:36px*/文本对齐:居中;边框宽度:10px 10px 0;边框样式:实心;边框颜色:#5dbbe0透明;边距:0自动;显示:块;}​