2

CSS と HTML でフライアウト メニューを作成しようとしています。基本的に、ホバーするとその下にリストが表示される単一のボタンを表示したいと思います。フライアウト リストは、ボタンの右側に配置する必要があります。例えば

           ////////////
           // BUTTON //
           ////////////
///////////////////////
//  FLYOUT OPTION    //
///////////////////////

私はいくつかの例に従い、次のjsFiddleを作成しました - http://jsfiddle.net/JT5gs/

ただし、.filtersnav ul ルールのマージン値を使用して、フライアウト メニューを別のフォームに配置する方法がわかりません。例えば

.filtersnav ul {
    margin:0px 0px 0px -165px;

これは、フライアウトを表示するメイン ボタンの幅がわかっている場合に機能しますが、サイトにローカライズを追加して、ボタン内のテキストが変更される可能性があるため、ボタンを任意の長さにする必要があります。

私の質問を明確にするために、ボタンの幅が未定の場合、フライアウト メニューをボタンの右側に配置することは可能ですか? JsFiddle は、メニューが右に正しく配置されている 1 つのフライアウト メニューを示していますが、2 番目のフライアウト (長いテキスト値を含むボタン) は正しく配置されていません。

4

1 に答える 1

1

タグを付けposition: relativeて、タグのマージンの代わりにli設定します:right: 0ul

.filtersnav {
  background:#eeeeee;
  font-size:12px;
  font-family:verdana,sans-serif;
  font-weight:bold;
  z-index:1000;
  padding:0;
}
.filtersnav, .filtersnav ul {
  float:right;
  list-style:none;
  margin:0px;
  border: 1px solid #CCCCCC;
  min-width: 75px;
  padding:0;
  background-color: #EEEEEE;
  font-weight:bold;
  z-index:1000;
}
.filtersnav span {
  display:block;
  color:#000000;
  text-decoration:none;
  padding:3px 10px;
  cursor:pointer;
}
.filtersnav li {
  position: relative;
  float:left;
  padding:0;
  background:#eeeeee url('../images/Down.png') no-repeat 97% center;
}
.filtersnav ul {
  position:absolute;
  left:-999em;
  height:auto;
  width:280px;
  font-weight:normal;
  right: 0;
  line-height:1;
  border:0;
  border-top:1px solid #CCCCCC;
  padding:0;
}
.filtersnav li li {
  width:280px;
  border-bottom:1px solid #CCCCCC;
  border-left:1px solid #CCCCCC;
  border-right:1px solid #CCCCCC;
  font-weight:bold;
  font-family:verdana,sans-serif;
  background:#eeeeee;
}
.filtersnav li li span {
  padding:10px 10px;
  width:260px;
  font-size:12px;
  color:#000000;
}
.filtersnav li ul ul {
  margin:-33px 0 0 -281px;
  padding:0px;
  max-height:262px;
  overflow-x: hidden;
  overflow-y: auto;
}

.filtersnav li li:hover{
  background:#145197;
}
.filtersnav li ul li:hover span, .filtersnav li ul li li:hover span, .filtersnav li ul li li li:hover span, .filtersnav li ul li li li:hover span {
  color:#ffffff;
}
.filtersnav li:hover span, .filtersnav li.sfhover span {
  color:#ffffff;
}
.filtersnav li:hover li span, .filtersnav li li:hover li span, .filtersnav li li li:hover li span, .filtersnav li li li li:hover li span {
  color:#000000;
}
.filtersnav li:hover ul ul, .filtersnav li:hover ul ul ul, .filtersnav li:hover ul ul ul ul, .filtersnav li.sfhover ul ul, .filtersnav li.sfhover ul ul ul, .filtersnav li.sfhover ul ul ul ul {
  left:-999em;
}
.filtersnav li:hover ul, .filtersnav li li:hover ul, .filtersnav li li li:hover ul, .filtersnav li li li li:hover ul, .filtersnav li.sfhover ul, .filtersnav li li.sfhover ul, .filtersnav li li li.sfhover ul, .filtersnav li li li li.sfhover ul {
  left:auto;
  background:#eeeeee;
}
.filtersnav li:hover, .filtersnav li.sfhover {
  background:#145197 url('../images/DownSel.png') no-repeat 97% center;
}
.filtersnav li li:hover img {
  filter:Invert;
}    
.filtersnavSelected {
  background-color:#FCBF44
}
<ul class="filtersnav">
  <li>
    <span>Another Flyout Menu &nbsp; &nbsp;</span>
    <ul>
      <li>
        <span>Option</span>
        <ul>
          <li><span>Sub Option</span></li>
        </ul>
      </li>
    </ul>
  </li>
</ul> 

<ul class="filtersnav" style="margin-right:25px;">
  <li>
    <span>Flyout Menu &nbsp; &nbsp;</span>
    <ul>
      <li>
        <span>Option</span>
        <ul>
          <li><span>Sub Option</span></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

于 2012-08-03T09:17:23.273 に答える