2

Zenサブテーマを使用するDrupal6では、カスタムスタイルシートはInternet Explorer 7を除いてどこでも美しく完璧です。これは:hoverバグのようで、リンクにカーソルを合わせるとメインコンテンツ領域が左側のサイドバーを飛び越えます(マージンの崩壊またはマージンのリセット?)。

min-heightの設定を試みました:すべて:hoverの要素と親要素で1%ですが、ホバー要素がゼロに定義されている「ie7specific.css」を指定することを最終的に決定した人は非常に多いです。InternetExplorer7ユーザーの幸運を祈ります。

ただし、myspecialsub_theme.infoファイルでは、myspecialsub_theme.cssは自動的にInternet Explorerに送信されるため、:hover要素が作成されます。Internet Explorer 7が特定のCSSを取得し、他のすべてのブラウザーが通常のCSSを取得するように指定する必要があります。

conditional-stylesheets[if gt IE 7][all][] = myspecialsub_theme.css
conditional-stylesheets[if IE 7][all][] = ie7specific.css
conditional-stylesheets[if lt IE 7][all][] = myspecialsub_theme.css
conditional-stylesheets[if !IE][all][] = myspecialsub_theme.css

Internet Explorerバージョンでは機能しますが、Firefoxはスタイルシートを取得していません。!IEが機能しないのはなぜですか?代わりに何を使用すればよいですか?

または、説明されている問題の別の解決策はありますか?

更新:私のコメントは下にうまく表示されませんでした、これが私が最終的に見つけた解決策です:

wikipedia.org/wiki/Conditional_commentに感謝します。

subtheme.info

; stylesheets[all][] = specific_subtheme.css
conditional-stylesheets[if gt IE 7][all][] = specific_subtheme.css
conditional-stylesheets[if IE 7][all][] = ie7specific.css
conditional-stylesheets[if lt IE 7][all][] = specific_subtheme.css

page.tpl.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language; ?>" lang="<?php print $language->language; ?>" dir="<?php print $language->dir; ?>">
<head>
    <title><?php print $head_title; ?></title>
    <meta http-equiv="X-UA-Compatible" content="IE=8" />
    <?php print $head; ?>
    <?php print $styles; ?>
    <![if !IE]>
        <link href="/sites/all/themes/specific_subtheme/specific_subtheme.css" rel="stylesheet">
    <![endif]>
    <?php print $scripts; ?>
</head>

クレイジーハァッ?

最終更新:これまでのところ、私はついに:hoverZenサブテーマのバグの原因を発見しました。div mainにはaが必要でzoom:1;あり、これらの条件付きスタイルシートは必要ありません。しかし、元の問題を解決できない場合は、そこに行きます。

4

4 に答える 4

2

更新:私は自分の質問に答えることができることに気づきました。レピュテーションポイントを求めていませんが、これを検討している他の人にとって正しい解決策を明確にしたいです。

wikipedia.org/wiki/Conditional_commentに感謝するソリューション

subtheme.info:

; stylesheets[all][] = specific_subtheme.css
conditional-stylesheets[if gt IE 7][all][] = specific_subtheme.css
conditional-stylesheets[if IE 7][all][] = ie7specific.css
conditional-stylesheets[if lt IE 7][all][] = specific_subtheme.css

page.tpl.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language; ?>" lang="<?php print $language->language; ?>" dir="<?php print $language->dir; ?>">
<head>
<title><?php print $head_title; ?></title>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<?php print $head; ?>
<?php print $styles; ?>
<![if !IE]>
<link href="/sites/all/themes/specific_subtheme/specific_subtheme.css" rel="stylesheet">
<![endif]>
<?php print $scripts; ?>
</head>

クレイジーハァッ?

AAAANDところで、IEの貼り付けで、drupal zenテーマを使用して、IE7のホバーセレクター/折りたたみマージンのバグを最終的に修正しました

javascript:alert(content.currentStyle.hasLayout)

ロケーションバーに移動してEnterキーを押すと、id = content要素にLayoutがあるかどうかがわかります(trueまたはfalse)。main divがfalseであることがわかるまで、コンテンツをmain-inner、primaryなどの他のID名に置き換え続けました。Zoom:1のプロパティを追加します。そのie7specific.cssにすべての問題を解決しました。

神はマイクロソフトを祝福します。

于 2009-11-19T21:15:59.510 に答える
0

!IEのみが条件付きスタイルシートをサポートしているため、私が理解しているようにIEは機能しません。

私がこれを処理する方法は、メインのスタイルシートで他のブラウザーのものを定義し、IEの条件で必要に応じてオーバーライドすることです。

あなたはこれを行うことができます:

 stylesheets[all][] = myspecialsub_theme.css
 conditional-stylesheets[if IE 7][all][] = ie7specific.css

もちろん、IE固有のものは、他の方法ではインポートされなかったものをオーバーライドするために追加の作業を行う必要がありますが、それはIEを使用することで得られるものです。

于 2009-07-18T01:32:12.057 に答える
0

条件文ステートメントは次のように出力する必要があります。

    <link rel="stylesheet" href="/sites/all/themes/style.css" 
type="text/css" media="screen, projection">
    <!--[if IE 7]>
    <link rel="stylesheet" href="/sites/all/themes/ie7.css" 
type="text/css" media="screen, projection">
    <![endif]-->

IEの問題を上書きできるように、通常のCSSの後にIEタグを配置することを忘れないでください。

また、メインのスタイルシートを条件付きステートメントでラップしません。

<!--[if !IE]><!-->
<h1>You are NOT using Internet Explorer</h1>
<!--<![endif]-->

最初に修正して完了することで、IE7をターゲットにするだけです。

乾杯!

于 2009-07-22T05:02:29.867 に答える
0

ベンが言うように、:hoverセレクターをでie7specific.cssオーバーライドしてみてください.selector:hover{property:none}。すべてのセレクターを一致させ、すべてのプロパティを通常の値に設定してください。それでも機能しない場合は、それら:hoverまたはその他のInternet Explorer以外の詳細を別のファイルに書き込み、ブラウザーを検出した後にJavaScriptを介してそれらをロードすることをお勧めします。http://docs.jquery.com/Utilities/jQuery.supportを試してください。

于 2009-11-10T17:59:40.783 に答える