2011-08-11 8 views
6

私は、次のHTML(奇数の境界線があり、動的にする必要があります)

<ul id="header"> 
     <li class="dropdown"><span>Our Locations</span> 
      <ul> 
       <li><a href="">London</a></li> 
       <li><a href="">New York</a></li> 
      </ul> 
     </li> 
    <li class="dropdown"><span>Language Selector</span> 
     <ul> 
      <li><a href="">English</a></li> 
      <li><a href="">German</a></li> 
      <li><a href="">French</a></li> 
      <li><a href="">Chinese</a></li> 
      <li><a href="">Mandarin</a></li> 
     </ul> 
    </li> 
</ul> 

そして、どのメニューを取得しようとしていますがあります次のよう

enter image description here

は困難な背景の奇妙な形状とテキストは、サイトの翻訳に伴って変化するという事実に見えます。現時点では

私は次のJavaScript

(function ($) { 

    $.fn.dropDownMenu = function() { 
     $.each(this, function() { 
      var li = $(this); 
      li.hover(function() { 
       $(this).addClass("hover"); 
       $('ul:first', this).css('visibility', 'visible'); 
      }, function() { 
       $(this).removeClass("hover"); 
       $('ul:first', this).css('visibility', 'hidden'); 
      }); 
     }); 
    } 

    $(function() { 
     $(".dropdown").dropDownMenu(); 
    }); 

})(jQuery); 

を持って、私はおそらく働いて見ることができる唯一の方法は絶対に私のボックスに、zインデックスを与える(li.dropdownに含まれる)、内側ULを配置であります左/右/上の枠線を使用して2つのボックスの結合を取得し、次に余分なdivを追加して重なり合った親liをカバーするために、上の親liを追加します。もっと良い方法があるのだろうか?

+0

少ない労力で

は、私は、ネストされた<ul>

CSSの上境界線の一部をマスキングするために、高Zインデックスとのdivを追加しました私はあなたがCSSだけを使用して作業するためにドロップダウンを得ることができると思います。私はすぐにソリューションを投稿する時間がありません。 – qw3n

+0

@ qw3n境界線をカバーするために余分なdivを使って作業する純粋なhtml/cssソリューションを手に入れました。ボーダーイメージを使用してよりクリーンなソリューションを作成できたのであれば興味がありませんか?私は最近気がついたばかりです。 – Tom

+0

これは比較的よく知られていて、確かにクロスブラウザ互換ではないので、気にする必要はありません。提供されるソリューションは、おそらく最良のフォーマットです。また、あなたが望むようにボーダー画像を取得するだけでなく、 – qw3n

答えて

2

これを試してみるにはちょっと時間がかかりましたが、クロスブラウザではテストしていませんが、IE 9で動作します。

#header { 
    margin:0; 
    padding:6px 0 5px 0; 
    background-color:#FFFFFF; 
    list-style-type:none; 
} 

li.dropdown { 
    position:relative; 
    display:inline; 
    margin:0; 
    padding:0; 

} 

div.borderMask { 
    position:absolute; 
    display:none; 
    background-color:#FFFFFF; 
    padding:1px; 
    height:1px; 
    line-height:1px; 
    right:0px; 
    left:0px; 
    top:13px; 
    z-index:1000; 
} 

li.dropdown ul { 
    position:absolute; 
    display:none; 
    background-color:#FFFFFF; 
    border:solid 1px #CCCCCC; 
    width:150px; 
    right:-1px; 
    top:13px; 
} 

li.dropdown:hover { 
    background-color:#FFFFFF; 
    border-top:solid 1px #CCCCCC; 
    border-left:solid 1px #CCCCCC; 
    border-right:solid 1px #CCCCCC; 
} 

li.dropdown:hover ul { 
    display:inline; 
} 
li.dropdown:hover div.borderMask { 
    display:block; 
} 

HTML::

<ul id="header"> 
    <li class="dropdown"><span>Our Locations</span> 
     <div class="borderMask"></div> 
     <ul> 
      <li><a href="">London</a></li> 
      <li><a href="">New York</a></li> 
     </ul> 
    </li> 
    <li class="dropdown"><span>Language Selector</span> 
     <div class="borderMask"></div> 
     <ul> 
      <li><a href="">English</a></li> 
      <li><a href="">German</a></li> 
      <li><a href="">French</a></li> 
      <li><a href="">Chinese</a></li> 
      <li><a href="">Mandarin</a></li> 
     </ul> 
    </li> 
</ul> 
+0

ありがとう、私は私のために行われた完全な解決がかなり素敵な驚きだったとは思わなかった:) – Tom

関連する問題