0

新しい Web サイトを開始するときに表示される VS 2010 の基本的な水平メニューを実装しました。ページは私のルートで問題なく表示されます。

/blog/ アプリケーション (blogengine.net) を作成したとき、いくつかの変更を加えました...そこに独自のロゴ、ファビコンなどを配置し、そこにメニューを配置しようとしました。他のスタイルシートの他のメニュー クラスと競合しているようには見えません。確認のために、コードとスタイルシートでクラスの名前を topmenu に変更しました。そして奇妙なことに、デザイン モードの VS では問題なく表示されます。

したがって、.css の競合がないことを確認するためにトリプル チェックを行ったので、コードは次のようになります。

            <div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
                IncludeStyleBlock="false" Orientation="Horizontal">
                <Items>
                    <asp:MenuItem NavigateUrl="http://rtn.org/Default.aspx" Text="Home" />
                    <asp:MenuItem NavigateUrl="http://rtn.org/About.aspx" Text="About RTN" />
                    <asp:MenuItem NavigateUrl="http://rtn.org/resources.aspx" Text="RTN Resources" />
                    <asp:MenuItem NavigateUrl="http://rtn.org/advertise.aspx" Text="Advertise with RTN" />
                    <asp:MenuItem NavigateUrl="http://rtn.org/donate.aspx" Text="Donate to RTN" />
                </Items>
            </asp:Menu>
        </div>

CSS は次のようになります。

div.hideSkiplink
{
background-color: #3a4f63;
width: 100%;
}

div.menu
{
padding: 4px 0px 4px 8px;
}

div.menu ul
{
list-style: none;
margin: 0px;
padding: 0px;
width: auto;
}

div.menu ul li a, div.menu ul li a:visited
{
background-color: #465c71;
border: 1px #4e667d solid;
color: #dde4ec;
display: block;
line-height: 1.35em;
padding: 4px 20px;
text-decoration: none;
white-space: nowrap;
}

div.menu ul li a:hover
{
background-color: #bfcbd6;
color: #465c71;
text-decoration: none;
}

div.menu ul li a:active
{
background-color: #465c71;
color: #cfdbe6;
text-decoration: none;
}

しかし、この図でわかるように、何らかの理由で、私のルート マスター ページにあるように、私の /blog/ サブディレクトリ マスター ページでは何らかの理由で display:block が機能していません。

メニュー

なぜこれが当てはまるのか、誰にも分かりますか?繰り返しますが、デザイン モードの VS では見栄えがします。ただ、アップロードしたところ、display:block が正しく動作しません。私は何時間もそれをいじりましたが、私の /blog/ サブディレクトリにあるはずのメニューを再現できません。どんな提案でも大歓迎です!

4

1 に答える 1

1

ほとんどの場合、これは正しい場所にリンクしていない CSS への相対リンクがあるために発生します。相対リンクが正しいサイト ルートにあるため、他のページではスタイルシートが正しく表示されます。ただし、サブドメインでは、ルートはそのサブドメインである可能性が高く、サイトの実際のルートではありません。

たとえば、リンクが通常の場合:

<link rel="stylesheet" type="text/css" href="css/mystyle.css">

リンクはhttp://yoursite.com/foo/css/style.cssを指しています。

ただし、ブログからリンクしている場合、相対リンクは同じですが、http://yoursite.com/blog/foo/css/style.cssにリンクしています。

これを修正するには、絶対リンクを挿入して、これが問題であることを確認してください。

 <link rel="stylesheet" type="text/css" href="http://yoursite.com/blog/foo/css/style.css">

試した後にうまくいく場合は、戻って、それらの相対リンクが正しい場所に移動していることと、十分に具体的であることを確認してください。

于 2012-12-31T20:07:59.553 に答える