1

私はとても混乱しています!ここに私が開発しているサイトがあります: Cancer Support site

私は2つの問題を抱えているようです...解決策を見つけようと何時間も費やしました..だから誰かが助けてくれることを本当に願っています.

問題 1 : ID=navactive を使用して、親メニュー項目が表示されている現在のページである場合、親メニュー項目をアクティブに保ちます。それはうまくいきます。しかし、私が CSS をコーディングした方法では、ID=navactive 親のマウスオーバー時にサブメニュー項目が最初に表示されたときに、サブメニュー項目がアクティブに見えるようにすることでエラーが発生しました。代わりに、サブメニュー項目は、実際にマウスオーバーされるまで、最初は非アクティブとして表示されます。サイトでは、「ホーム」ページが親メニューのアクティブなページであることがわかります。その上にマウスを置くと、2 つの子サブメニューが表示されます..しかし、それらはアクティブに表示されます。これらは非アクティブとして表示されるはずです。これは、「Our Work」親メニュー項目の上にマウスを置いたときにサブメニューが表示されるのと同じ方法です。

問題 2 : 孫のサブメニュー項目がまったく表示されない..「ホーム」と「私たちの仕事」の両方の親メニュー項目の下に、次の構成があります。

Top level menu (parent)
    Submenu 1 (child 1)
        Submenu 2 (grandchild 1)
    Submenu 3 (child 2)

代わりに、孫 1 が子 2 になる次のようなページに表示され、孫は表示されません (元の子 2 [サブメニュー 3] はありません)。

Top level menu (parent)
    Submenu 1 (child 1)
    Submenu 2 (child 2)

どんな提案でも大歓迎です!!! ありがとう!

ご参考までに、ナビゲーション メニュー セクションの CSS コードを次に示します。

#navcontainer 
{
    width: 711px;
    height: 25px;
    text-align: center;
    margin: 0px auto; /*Center container on page*/
    clear: both;
    background-color: #129F9F;
    border: 3px solid #FFFFFF;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    -o-border-radius: 5px;
    -ms-border-radius: 5px;
    border-radius: 5px; 

    /* IE10 Consumer Preview */ 
    background-image: -ms-linear-gradient(top, #16ACAC 0%, #0D6F6F 100%);

    /* Mozilla Firefox */ 
    background-image: -moz-linear-gradient(top, #16ACAC 0%, #0D6F6F 100%);

    /* Opera */ 
    background-image: -o-linear-gradient(top, #16ACAC 0%, #0D6F6F 100%);

    /* Webkit (Safari/Chrome 10) */ 
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #16ACAC), color-stop(1, #0D6F6F));

    /* Webkit (Chrome 11+) */ 
    background-image: -webkit-linear-gradient(top, #16ACAC 0%, #0D6F6F 100%);

    /* W3C Markup, IE10 Release Preview */ 
    background-image: linear-gradient(to bottom, #16ACAC 0%, #0D6F6F 100%); 
}
.main_menu
{
    height: 24px;
    line-height: 24px;
    font-size: 12px;
    position: relative;
}
.main_menu ul
{
    padding: 0px 0px 0px 35px;  /* padding on left to get nav menu to center.. since it has a float left to make it display properly*/
    list-style: none;
}
.main_menu ul li
{
    padding: 0;
    margin: 0;
    border-right: 2px solid #129F9F;
    float: left;
}
.main_menu ul li.navcontact  /* to stop right border at end of nav line */
{
    padding: 0;
    margin: 0;
    border-right: none;
    float: left;
}
.main_menu ul li a
{
    color: #FFF;
    display: block;
    text-decoration: none;
    padding: 0 15px;
}
.main_menu ul > li:hover > a, #navactive a:link, #navactive a:visited, #navactive > ul > li > a:hover 
{
    text-decoration: none;
    color: #EAA339;
    /* IE10 Consumer Preview */ 
    background-image: -ms-linear-gradient(top, #0D6F6F 0%, #16ACAC 100%);

    /* Mozilla Firefox */ 
    background-image: -moz-linear-gradient(top, #0D6F6F 0%, #16ACAC 100%);

    /* Opera */ 
    background-image: -o-linear-gradient(top, #0D6F6F 0%, #16ACAC 100%);

    /* Webkit (Safari/Chrome 10) */ 
    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #0D6F6F), color-stop(1, #16ACAC));

    /* Webkit (Chrome 11+) */ 
    background-image: -webkit-linear-gradient(top, #0D6F6F 0%, #16ACAC 100%);

    /* W3C Markup, IE10 Release Preview */ 
    background-image: linear-gradient(to bottom, #0D6F6F 0%, #16ACAC 100%); 
}
.main_menu ul li ul
{
    display: none;
    width: auto;
    position: absolute;
    padding: 0px;
    margin: 0px;
}
.main_menu ul li:hover ul
{
    display: block;
    position: absolute;
    margin: 0;
    padding: 0;
}
.main_menu ul li:hover li
{
    float: none;
    list-style: none;
    margin: 0px;
}
.main_menu ul li:hover li
{
    font-size: 12px;
    height: 24px;
    background: #54C4C4;
    /* border-top: 1px solid #129F9F; */ 
    border: 1px solid #FFFFFF;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    -o-border-radius: 5px;
    -ms-border-radius: 5px;
    border-radius: 5px; 
}
.main_menu ul li:hover li a
{
    font-size: 11px;
    color: #fff;
    padding: 0px;
    display: block;
    width: 150px;
}
.main_menu ul li li a:hover
{
    font-size: 11px;
    height: 24px;
    color:#EAA339;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    -o-border-radius: 5px;
    -ms-border-radius: 5px;
    border-radius: 5px; 
}

HTMLコードは次のとおりです。

    <div id="navcontainer">
  <div class="main_menu">  
      <ul>
        <li id="navactive"><a href="index.asp" title="Cancer Support for Families Foundation is a community funded, community focused cancer charity.">Home</a>
          <ul>
            <li><a href="CSFF_presentation.pdf" title="Presentation about CSS in PDF format">submenu 1</a>
              <ul>
                <li><a href="CSFF_presentation.pdf" title="Presentation about CSS in PDF format">submenu 2</a></li>
              </ul>
            </li>
            <li><a href="CSFF_presentation.pdf" title="Presentation about CSS in PDF format">submenu 3</a></li>
          </ul>
        </li>
        <li><a href="what_is_csff.asp" title="Supporting families in financial need who are living with cancer.">What is CSFF</a>
          <ul>
            <li><a href="CSFF_presentation.pdf" title="Presentation about CSS in PDF format">submenu 4</a></li>
          </ul>
        </li>
        <li><a href="make_a_donation.asp" title="CSFF supporters can fund the charitable support programs, community experiences and fundraising events.">Make a Donation</a></li>
        <li><a href="our_work.asp" title="Individuals and families battling cancer need more financial support. CSFF can help.">Our Work</a>
          <ul>
            <li><a href="CSFF_presentation.pdf" title="Presentation about CSS in PDF format">submenu 5</a>
              <ul>
                <li><a href="CSFF_presentation.pdf" title="Presentation about CSS in PDF format">submenu 6</a></li>
              </ul>
            </li>
            <li><a href="CSFF_presentation.pdf" title="Presentation about CSS in PDF format">submenu 7</a></li>
          </ul>
        </li>
        <li><a href="our_events.asp" title="Local communities come together in a relaxed family friendly environment to support those living with cancer.">Events Outline</a></li>
        <li class="navcontact"><a href="contact_csff.asp" title="Contact CSFF to help those in need.">Contact Us</a></li>
      </ul>
  </div>
</div>
4

2 に答える 2

0

この問題が発生する理由は、CSS と、HTML コードの構造が原因です。これがあなたの問題です -

.main_menu ul > li:hover > a, #navactive a:link, #navactive a:visited, #navactive > ul > li > a:hover 
{
 STYLES
}

上記の CSS コードの「#navactive a:link」部分を、アクティブなリンクを処理する別のクラスに変更するだけです。現在、「navactive」div 内のすべてのリンクは、このクラスで指定されたスタイルを継承します。これが、サブ メニュー テキストが白ではなく黄色で表示される理由です。私が言ったように、上記の CSS コードを別のクラスに変更します。たとえば、「#navactive .current」

次に、HTML コードを次のように変更します。

<div id="navcontainer">
 <div class="main_menu">  
  <ul>
    <li id="navactive"><a class="current" href="index.asp" title="Cancer Support for
Families Foundation is a community funded, community focused cancer charity.">Home</a>

それでうまくいくはずです!もちろん、私はそれをテストできませんでしたが、問題があればお知らせください。また、ヒントとして、Chrome の「Inspect Element」機能を使用すると、この種の問題に直面したときに非常に役立ちます。

于 2013-01-14T01:29:52.860 に答える
0

CSSの問題1:

.main_menu ul > li:hover > a, #navactive a:link, #navactive a:visited, #navactive > ul > li > a:hover

#navactive a:visited と #navactive a: リンクに > を入れる必要があるため、次のようになります。

.main_menu ul > li:hover > a, #navactive > a:link, #navactive > a:visited, #navactive > ul > li > a:hover

">" は、子要素のみを指示することを意味します

于 2013-01-14T01:34:54.643 に答える