Лента навигации (Navbar) плавающее положение закрылков

Может ли кто-нибудь предложить мне, как мне избавиться от пробела после навигационной панели ленты в следующей скрипке: http://jsfiddle.net/BC3FL/?

Я знаю, почему он создан, но не могу понять, как этого избежать, за исключением предоставления фиксированных отрицательных полей элементам ниже полосы.

Кроме того, я попробовал абсолютную позицию для закрылков, но это не будет работать с разными браузерами, так как высота и ширина варьируются. И overflow:hidden с другим контейнером тоже не будет работать: http://jsfiddle.net/KBs42/ так как створки должны быть над панелью навигации.

И основной код скрипки будет:

<div id="navigation_container">
<!-- the left side of the fork effect -->
<div class="l-triangle-top"></div>
<div class="l-triangle-bottom"></div>
<!-- the right side of the fork effect -->
<div class="r-triangle-top"></div>
<div class="r-triangle-bottom"></div>
<!-- the ribbon body -->
<div class="rectangle">
<!-- the navigation links -->
<ul id="navigation2">
   <li><a href="index.html"> Home</a></li>
   <li><a href="intro.html"> About</a></li>
   <li><a href="client.html"> Clients</a></li>
   <li><a href="catg.html"> Products</a></li>
   <li><a href="mailto:[email protected]"> Contact</a></li>
</ul>
<!-- end the ribbon body -->
</div>
</div>
<!-- end container --> 
<div style="clear:both;"></div>
<div id="wrap">
<p>HEY</p>
</div> 
</div>

И CSS:

#navigation_container {
 margin: 0 auto;
 width: 1080px;
 overflow:hidden;
 height:80px;
 padding: auto;
}
#navigation2 li {
        list-style: none;
        display: block;
        float: left;
  margin: 1em 0.8em;
}
#navigation2 li a {
        text-shadow: 0 2px 1px rgba(0,0,0,0.5);
        display: block;
        text-decoration: none;
        color: #f0f0f0;
        font-size: 1.6em;
        margin: 0;
        line-height: 28px;
}
#navigation2 li.active a:hover,
#navigation2 li a:hover {
        margin-top: 2px;
}

#navigation2 li.active {
        font-style: italic;
}
#navigation2 li.active a {
}
.rectangle {
   background: #e5592e;
   height: 62px;
   width:920px;
   margin: 0 auto;
   position: relative;
   -moz-box-shadow: 0px 0px 4px rgba(0,0,0,0.55);
   -webkit-box-shadow: 0px 0px 4px rgba(0,0,0,0.55);
   box-shadow: 0px 0px 4px rgba(0,0,0,0.55);

   -webkit-border-radius: 2px;
    -moz-border-radius: 2px;
 border-radius: 2px;

   z-index: 500; /* the stack order: foreground */
}
.l-triangle-top {
    border-color: #D9542B transparent transparent;
    border-style: solid;
    border-width: 50px;
    float: left;
    height: 0;
    left: 30px;
    position: relative;
    top: 10px;
    width: 0;
}

.l-triangle-bottom {
    border-color: transparent transparent #D9542B;
    border-style: solid;
    border-width: 50px;
    float: left;
    height: 0;
    left: -68px;
    position: relative;
    top: -35px;
    width: 0;
}
.r-triangle-top {
    border-color: #D9542B transparent transparent;
    border-style: solid;
    border-width: 50px;
    float: right;
    height: 0;
    position: relative;
    right: 30px;
    top: 10px;
    width: 0;
}
.r-triangle-bottom {
    border-color: transparent transparent #D9542B;
    border-style: solid;
    border-width: 50px;
    float: right;
    height: 0;
    position: relative;
    right: -68px;
    top: -35px;
    width: 0;
}
</style>

Большое спасибо. Любые предложения/критика приветствуются.


person Aakash Thakkar    schedule 17.07.2013    source источник


Ответы (1)


Я бы дал вашему контейнерному элементу относительное положение, а затем установил треугольные части в абсолютное позиционирование.

#navigation_container {
    position: relative;
}
.l-triangle-top {
    position: absolute;
    left: -50px;
    top: -5px;
}
.l-triangle-bottom: {
    position: absolute;
    left: -50px;
    top: -45px;
}
.r-triangle-top {
    position: absolute;
    right: -50px;
    top: -5px;
}
.r-triangle-bottom: {
    position: absolute;
    right: -50px;
    top: -45px;
}

Это не позволит вашим треугольным элементам занимать место и смещать ваш контент вниз.

person Chad    schedule 17.07.2013
comment
Я не понимаю, как это решит проблему с устройством/разрешением/положением заслонок для разных размеров экрана. С абсолютными значениями заслонки ленты будут отображаться на одинаковом расстоянии сверху/слева/справа для разных размеров экрана или это будет другим? - person Aakash Thakkar; 17.07.2013
comment
Если вы установите контейнер как относительный, абсолютно позиционированные элементы внутри него будут абсолютными только до первого относительного контейнера, также известного как родительский. - person Chad; 17.07.2013
comment
О, спасибо большое! Попробую :) - person Aakash Thakkar; 17.07.2013