1

会社用の CSS3 ドロップダウン メニューを作成していて、ちょっとした問題が発生しました。問題はワードプレスが原因であると最初に考えましたが、jsfiddleでナビゲーションを再作成した後、それが別のものであることがわかりました。

私はnav2つのサブメニューを持っています.サブメニューでは、疑似before要素を使用して上部に三角形を付けました. これは素晴らしい効果であり、テストした後、問題が見つかりました。liそれはうまく機能し、本当に滑らかに見えますが、との間の空白はかなり大きな問題を引き起こしています。その空白の間にホバーすると、ホバー状態ulではないためサブメニューが閉じます.li

私はcssが得意で、多くのオプションを試しましたが、それらはすべて同じ問題を引き起こします。誰にもアイデアはありますか?私はむしろそのデザイン要素に乗りたくないのですが、もし私がしなければならないなら、jQueryを使うつもりですか、それとも使うべきですか?

CSS

#top-menu {
  width: 100%;
  height: 50px;
  background: mediumSeaGreen;
}

#top-menu > ul {
  list-style-type: none;
  padding: 0;
  margin: 0 auto;
  width: 70%;
  clear: both;
}

  #top-menu > ul > li {
  float: left;
  width: 11.1%;
  background: #2b2b2b;
  display: block;
  height: 50px;
  line-height: 50px;
  text-align: center;
  color: #fff;
  -webkit-transition: all .5s ease;
  cursor: pointer;
}

#top-menu > ul > li:hover {
  background: mediumSeaGreen;
}

#top-menu > ul > li > ul {
  display: none;
  list-style-type: none;
  margin: 0;
  padding: 5px;
  background: mediumSeaGreen;
  position: relative;
  top: 10px;
  border-radius: 3px;
  box-shadow: 0 -1px 2px #2b2b2b;
}

#top-menu ul li ul:before {
  content: "";
  position: absolute;
  border-right: 10px solid transparent;
  border-left: 10px solid transparent;
  border-bottom: 10px solid mediumSeaGreen;
  top: -10px;
  left: 42%;
  display: block;
  z-index: 1002;
}

#top-menu > ul > li:hover > ul {
  display: block;
}

#top-menu > ul > li > ul > li {
  padding: 0;
  margin: 5px 0 5px 0;
  line-height: 18px;
  color: #2b2b2b;
}

jsフィドル

4

1 に答える 1

1

:after要素の後ろに透明な要素を配置でき:beforeます。想定される使用方法:afterではありませんが、かなりうまく機能しているようです

更新されたjsFiddle

#top-menu ul li ul:after {
    content: "";
    position: absolute;
    top:-10px;
    left:0px;
    height:10px;
    width:100%;
    display:block;
    z-index:1001;
}
于 2013-09-12T18:17:20.680 に答える