0

メディアの表示に ShadowBox を使用しています。プロパティshowOverlayがあり、必要ないため false に設定しました。問題は、CSS の Visibility がhiddenに設定されているにもかかわらず、ShadowBox がモーダル ダイアログであるかのように背景にアクセスできないことです。Chrome と Mozilla では、可視に変更され、モーダルになります。hiddenに戻すと、手動で機能します。

しかし、Chrome および Mozilla ブラウザーの sourcepage/cssで常に表示されるように設定されているのはなぜですか????

ここに私のCSS の ShadowBox があります:

#sb-container {
    position: fixed;
    margin: 0;
    padding: 0;
    top: 0;
    left: 0;
    z-index: 999;
    text-align: left;
    visibility: hidden;
    display: block;
}

#sb-overlay {
    position: relative;
    height: 100%;
    width: 100%;
    visibility:hidden;
}

#sb-wrapper {
    position: absolute;
    visibility: hidden;
    width: 100px;
}

それがChrome と Mozilla の機能です。エクスプローラーで動作します! **ここに画像の説明を入力**

4

4 に答える 4

1

インライン スタイル ( にあるものelement.style) は、スタイルシートで定義された CSS スタイルよりも「優先度」が高くなります。

できること:

  • 可能であれば、実際にはインライン スタイルを避けることをお勧めします。せいぜい特異性を最小限に抑えて要素をスタイルします。そうすれば、後で簡単にオーバーライドできます。

    JS ( someElement.style.someStyleHere) によるスタイルの変更もインライン スタイルとしてカウントされることに注意してください。

  • スタイルを動的に変更する場合は、CSS クラスでスタイルを定義し、JS を使用してこれらのクラスをターゲット要素に動的に追加または削除することをお勧めします。

    jQuery に精通している場合は、addClassおよびremoveClassが参照している関数です。もちろん、要素の を解析する独自の関数を考え出し、そのclassNameクラスを追加または削除することもできます。

  • インライン スタイルを回避できない場合 (使用しているフレームワークが原因で)、!importantスタイルシートで定義されたスタイルに配置することで、インライン スタイルをオーバーライドできます。これは少し性急で、通常はインライン スタイルを覆す最後の手段として使用されます。

于 2013-10-30T12:31:57.477 に答える
0

使ってみてvisibility: hidden !important;

于 2013-10-30T12:36:34.377 に答える
0

これは、 CSS 固有性と呼ばれる CSS の非常に単純で興味深い概念です。

ルールをオーバーライドする場合に適用する CSS ルールをブラウザに定義します。

あなたの場合、インライン CSS スタイルを html 要素に適用しました。優先度が最も高いため、外部の .css ファイルへの書き込みは無視されます。

これを回避するには、html コードからすべてのインライン css を削除し、それらを外部 css ファイルに組み込むようにしてください。または、すでに多くの人が示唆しているように、「!important」を最大限に活用できます。

これで問題が解決することを願っています。

于 2013-10-30T12:39:41.020 に答える
0

スクリーンショットに基づいて、要素の属性の内部visiblity: visibleとして設定されているように見えます。この属性は、スタイルシート内の内容を常にオーバーライドします。stylestylestyle

于 2013-10-30T12:31:42.047 に答える