第一个孩子在CSS菜单中转移

时间:2015-04-04 13:57:08

标签: jquery html css css3

我已经应用a Tutorial来制作水平菜单,但我不知道为什么第一个(小)孩子与其他孩子不在同一条线上。

这是一个preview

<nav>

    <ul class="menu">
                <li id="home"><a href="#home" class="homeIcon">Acceuil</a></li>
                <li id="Bureau"><a href="#bureau">Bureau</a></li>
                <li id="actualites"><a href="#Act">Actualités</a></li>
                <li id="partenaires"><a href="#part">Partenaires</a></li>
                <li id="contact"><a href="#contact">Contact</a></li>
                <li id="Liens"><a href="#liens">Liens utiles</a></li>
                <li id="Liens"><a href="#liens">lien+subtitles</a>
                    <ul class="sousmenu">
                        <li id="Liens"><a href="#liens">Liens utiles</a></li>
                        <li id="Liens"><a href="#liens">Liens utiles</a></li>
                        <li id="Liens"><a href="#liens">Liens utiles</a></li>
                        <li id="Liens"><a href="#liens">Liens utiles</a></li>
                    </ul>
                </li>
    </ul>
</nav>

CSS:

.menu{

margin:0 auto;
padding:0;
list-style-type:none;
display:table;
position:relative;
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.6);
-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.6);
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.6);
margin-bottom: 50px;
white-space: nowrap;
}

.menu  > li{
/* Specifying a fallback color and we define CSS3 gradients for the major browsers: */


background-image: -webkit-gradient(linear,left top, left bottom,from(#fefefe), color-stop(0.5,#f0f0f0), color-stop(0.51, #e6e6e6));
background-image: -moz-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: -o-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: -ms-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);

border-right: 1px solid rgba(9, 9, 9, 0.125);

/* Adding a 1px inset highlight for a more polished efect: */

box-shadow: 1px -1px 0 rgba(255, 255, 255, 0.6) inset;
-moz-box-shadow: 1px -1px 0 rgba(255, 255, 255, 0.6) inset;
-webkit-box-shadow: 1px -1px 0 rgba(255, 255, 255, 0.6) inset;
position:relative;
display:inline-block;

list-style: none;

}

.menu >li +li {

width:200px;
text-align:center;
}
.menu li:after{


content:'.';
text-indent:-9999px;
overflow:hidden;
position:absolute;
width:100%;
height:100%;
top:0;
left:0;
z-index:1;
opacity:0;

/* Gradients! */

background-image:-webkit-gradient(linear, left top, right top,  from(rgba(168,168,168,0.5)),color-stop(0.5,rgba(168,168,168,0)), to(rgba(168,168,168,0.5)));
background-image:-moz-linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));
background-image:-o-linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));
background-image:-ms-linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));
background-image:linear-gradient(left, rgba(168,168,168,0.5), rgba(168,168,168,0) 50%, rgba(168,168,168,0.5));


box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff,1px 0 0 #a3a3a3,2px 0 0 #fff;
-moz-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff,1px 0 0 #a3a3a3,2px 0 0 #fff;
-webkit-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff,1px 0 0 #a3a3a3,2px 0 0 #fff;


-moz-transition:0.25s all;
-webkit-transition:0.25s all;
-o-transition:0.25s all;
transition:0.25s all;
}

.menu li:first-child{
border-radius: 4px 0 0 4px;
}

.menu li:first-child:after,
.menu li.selected:first-child:after{
box-shadow:1px 0 0 #a3a3a3,2px 0 0 #fff;
-moz-box-shadow:1px 0 0 #a3a3a3,2px 0 0 #fff;
-webkit-box-shadow:1px 0 0 #a3a3a3,2px 0 0 #fff;

border-radius:4px 0 0 4px;
}

.menu li:last-child{
border-radius: 0 4px 4px 0;
}


.menu li:last-child:after,
.menu li.selected:last-child:after{
box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff;
-moz-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff;
-webkit-box-shadow:-1px 0 0 #a3a3a3,-2px 0 0 #fff;

border-radius:0 4px 4px 0;
}

.menu li:hover:after,
.menu li.selected:after,
.menu li:target:after{

opacity:1;
}

.menu:hover li.selected:after,
.menu:hover li:target:after{
opacity:0;
}

.menu li.selected:hover:after,
.menu li:target:hover:after{
opacity:1 !important;
}

.menu li a{
color: #5d5d5d;
display: inline-block;
font-family: 'Montserrat', sans-serif;
font-weight:bold;
padding: 12px 35px 14px;
position: relative;
text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6);
z-index:2;
text-decoration:none !important;

}

.menu a.homeIcon{
background:url('img/rsz_home-icon.png') no-repeat center center;
overflow: hidden;
padding-left: 12px;
padding-right: 12px;
text-indent: -9999px;
width: 5%;

}
.sousmenu {
text-decoration:none;
list-style: none;
position:absolute;
visibility:hidden;
padding:0;
}
.menu  li:hover .sousmenu{
visibility:visible;
 }
.sousmenu li {

position:relative;
width:200px;
background-color: #f0f0f0;
background-image: -webkit-gradient(linear,left top, left bottom,from(#fefefe), color-stop(0.5,#f0f0f0), color-stop(0.51, #e6e6e6));
background-image: -moz-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: -o-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: -ms-linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
background-image: linear-gradient(#fefefe 0%, #f0f0f0 50%, #e6e6e6 51%);
  border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
}

感谢您的帮助,对不起我的英语不好

2 个答案:

答案 0 :(得分:1)

试试这个:

.menu >li +li {
  width: 200px;
  text-align: center;
  height: 100%;
}

.menu li:first-child {
  border-radius: 4px 0 0 4px;
  float: left;
}

答案 1 :(得分:1)

这是由于您添加到overflow:hidden;链接的.homeIcon属性,该属性也显示在inline-block中。将overflow属性设置为visible以外的任何值都会更改内联块元素的基线;见Why is this inline-block element pushed downward?

解决方案是要么不使用overflow:hidden(没有屏幕是9999px宽,所以这看起来像一个可行的选项),或者设置链接和baseline属性>列表项bottom,例如:https://jsfiddle.net/Mazala/5xo5L3xL/