クロムではなくサファリのためのCSSハックはありますか?


183

クロムではなくサファリのみのcssハックを見つけようとしているのですが、どちらもWebkitブラウザーですが、クロムとサファリのdiv配置に問題があり、それぞれ表示が異なります。

私はこれを使用しようとしましたが、それはクロムにも影響します、

@media screen and (-webkit-min-device-pixel-ratio:0) { 
  #safari { display: block; } 
} 

誰かがサファリに適用される別のものを知っていますか?


CSSを使用しない場合は、JavaScriptを使用する必要があります。stackoverflow.com/questions/5899783/detect-safari-using-jquery
クリスチャン

私は、壊れやすくてハッキリした解決策よりも、実際の問題にもっと興味があります。それはどこかで(まだ)利用できますか?
Matijs 2018年

「動作しない」と投稿している人のために-テストしているSafariのバージョンを知る必要があることを理解してください。すべてのバージョンに「包括的」なSafariソリューションはありません。あなたは投稿にその情報を提供する必要があります。そうしないと、誰もあなたが解決策を見つけるのを助けることができません。
ジェフクレイトン

Safariのバージョンによってニーズは異なります。実際の例については、こちらを確認してください:browserstrangeness.bitbucket.io/css_hacks.html#safari [Or the Mirror] browserstrangeness.github.io/css_hacks.html#safari
Jeff Clayton

回答:


357
  • カタリナ&サファリ13に更新(2020年初頭に更新)*

注:フィルターとコンパイラー(SASSエンジンなど)は、標準の「クロスブラウザー」コードを想定しています-このようなCSSハッキングではありません。つまり、ハッキングは、ハッキングとは異なるため、ハッキングを書き換えたり、破壊したり、削除したりします。これの多くは非標準のコードであり、単一のブラウザバージョンのみをターゲットにするように細心の注意を払って作成されており、変更された場合は機能しません。それらと一緒に使用したい場合は、フィルターまたはコンパイラーの後で、選択したCSSハックをロードする必要があります。これは当たり前のように思えるかもしれませんが、この目的のために設計されていないソフトウェアを使ってハッキングを取り消すことに気付いていない人々の間で、多くの混乱がありました。

Safariはバージョン6.1から変更されました。

注:iOS(少なくともiOSバージョン6.1以降)でChrome(そして現在はFirefoxも)を使用していて、ハックのどれもChromeとSafariを分離していないように見えるのは、iOSバージョンのChromeが原因です。 Safariエンジンを使用しています。ChromeではなくSafariのハックを使用します。詳細はこちら:https : //allthingsd.com/20120628/googles-chrome-for-ios-is-more-like-a-chrome-plated-apple/ iOS向けFirefoxは2015年秋にリリースされました。また、 Safariハックはありますが、Firefoxのものはなく、iOS Chromeと同じです。

また、1つ以上のハックを試し、それらを機能させるのに問題がある場合は、サンプルコード(より良いテストページ)を投稿してください-試みているハックと、どのブラウザ(正確なバージョン!)あなたが使用しているデバイスと同様に使用しています。その追加情報がないと、私や他の誰かがあなたを支援することは不可能です。

多くの場合、これは単純な修正または欠落したセミコロンです。CSSでは、CSSエラーだけではなく、通常、スタイルシートにコードがリストされる順序または問題です。ここでテストサイトでハックをテストしてください。それがそこで機能する場合、それはハックが実際にセットアップで機能していることを意味しますが、解決する必要がある別のものです。ここの人々は本当に助けが大好きで、少なくともあなたを正しい方向に向けています。

テストサイト:

https://browserstrangeness.bitbucket.io/css_hacks.html#safari

そしてミラー!

https://browserstrangeness.github.io/css_hacks.html#safari

ここで邪魔にならないのは、Safariの最新バージョンに使用するハックです。

これは現在のSafariバージョンをカバーし、純粋なSafariのみなので、最初に試してみてください。

これはまだSafari 13(2020年初頭)で正常に動作します。

/* Safari 7.1+ */

_::-webkit-full-page-media, _:future, :root .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

6.1以降のバージョンをカバーするには、現時点では次のペアのcssハックを使用する必要があります。6.1〜10.0用のものは10.1以上を処理するものと一緒に使用します。

それで-これが私がSafari 10.1+のために作成したものです:

ここでは二重のメディアクエリが重要です。削除しないでください。

/* Safari 10.1+ */

@media not all and (min-resolution:.001dpcm) { @media {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

SCSSまたは他のツールセットがネストされたメディアクエリに問題がある場合は、これを試してください。

/* Safari 10.1+ (alternate method) */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

次のバージョンは6.1〜10.0で機能しますが、10.1では機能しません(2017年3月下旬更新)

このハックは、他の複数のハックを組み合わせることによって、何ヶ月にもわたってテストと実験を行って作成しました。

注:上記のように、二重のメディアクエリは偶然ではありません。メディアクエリのネストを処理できない多くの古いブラウザが除外されています。-andの後にスペースがないことも重要です。結局のところ、これはハックです...そして、現時点で6.1以降のすべての新しいSafariバージョンで機能する唯一の方法です。また、以下のコメントに記載されているように、ハッキングは非標準のcssであり、フィルターの後で適用する必要があることに注意してください。SASSエンジンなどのフィルターは、完全に書き換え/元に戻すか、完全に削除します。

上記のように、テストページをチェックして、そのまま(変更なしで)機能することを確認してください

そしてここにコードがあります:

/* Safari 6.1-10.0 (not 10.1) */

@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) 
{ @media {
    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

より「バージョン固有」のSafari CSSについては、以下をお読みください。

/* Safari 11+ */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (stroke-color:transparent) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

Safari 11.0の1つ:

/* Safari 11.0 (not 11.1) */

html >> * .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

Safari 10.0用:

/* Safari 10.0 (not 10.1) */

_::-webkit-:host:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

10.1でわずかに変更された作品(のみ)

/* Safari 10.1 */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (not (stroke-color:transparent)) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

Safari 10.0(iOS以外のデバイス):

/* Safari 10.0 (not 10.1) but not on iOS */

_::-webkit-:-webkit-full-screen:host:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

Safari 9 CSSハック:

Safari 9.0以降では、シンプルな機能クエリハックがサポートされています。

@supports (-webkit-hyphens:none)
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

Safari 9.0以降の簡単なアンダースコアハック:

_:not(a,b), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

Safari 9.0以降用のもう1つ:

/* Safari 9+ */

_:default:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

そして、他のサポート機能クエリも:

/* Safari 9+ */

@supports (-webkit-marquee-repetition:infinite) and (object-fit:fill) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}

Safari 9.0-10.0用の1つ:

/* Safari 9.0-10.0 (not 10.1) */

_::-webkit-:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

Safari 9に機能検出が含まれるようになったので、これを使用できます...

/* Safari 9 */

@supports (overflow:-webkit-marquee) and (justify-content:inherit) 
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

iOSデバイスのみをターゲットに設定します。先に述べたように、iOS上のChromeはSafariをルートとしているので、もちろんこれも当てはまります。

/* Safari 9.0 (iOS Only) */

@supports (-webkit-text-size-adjust:none) and (not (-ms-ime-align:auto))
and (not (-moz-appearance:none))
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

Safari 9.0以降用ですが、iOSデバイス用ではありません。

/* Safari 9+ (non-iOS) */

_:default:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

そして、Safari 9.0-10.0用ですが、iOSデバイス用ではありません。

/* Safari 9.0-10.0 (not 10.1) (non-iOS) */

_:-webkit-full-screen:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

以下は6.1-7.0と7.1+を分離するハックです。これらも正しい結果を得るために複数のハックの組み合わせを必要としました:

/* Safari 6.1-7.0 */

@media screen and (-webkit-min-device-pixel-ratio:0) and (min-color-index:0)
{  
   .safari_only {(;

      color:#0000FF; 
      background-color:#CCCCCC; 

    );}
}

iOSデバイスをブロックする方法を指摘してきたので、iOS以外のデバイスを対象とするSafari 6.1+ハックの修正バージョンを次に示します。

/* Safari 6.1-10.0 (not 10.1) (non-iOS) */

@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) 
{ @media {
    _:-webkit-full-screen, .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

それらを使用するには:

<div class="safari_only">This text will be Blue in Safari</div>

通常、この質問のように、人々がSafariのハックについて尋ねる理由は、ほとんどがGoogle Chromeからそれを分離することに関するものです(これもiOSではありません!)代替を投稿することが重要な場合があります。必要な場合に備えて、ここで提供します。

ここに基本があります。Chromeの特定のバージョンがたくさんあるかどうかをもう一度テストページで確認してください。Chromeはバージョン45で、DevとCanaryのバージョンは現在バージョン47までです。

私がbrowserhacksに置いた古いメディアクエリコンボは、Chrome 29以降でのみ機能します。

/* Chrome 29+ */

@media screen and (-webkit-min-device-pixel-ratio:0) and (min-resolution:.001dpcm)
{
    .chrome_only {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

@supports機能のクエリは、Chrome 29以降でも適切に機能します。以下のChrome 28以降で使用していたものの修正バージョンです。Safari 9、今後のFirefoxブラウザー、およびMicrosoft Edgeブラウザーは、このブラウザーでは選択されません。

/* Chrome 29+ */

@supports (-webkit-appearance:none) and (not (overflow:-webkit-marquee))
and (not (-ms-ime-align:auto)) and (not (-moz-appearance:none))
{
    .chrome_only {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

以前は、Chrome 28以降はターゲティングが簡単でした。これは、他のCSSコードのブロック(元々はCSSハックとして意図されていなかった)に含まれているのを見てブラウザハックに送信し、それが何をするのかを理解したので、目的のために関連部分を抽出しました:

[注:]以下の古い方法では、上記のアップデートなしでSafari 9とMicrosoft Edgeブラウザーを撮影しています。FirefoxとMicrosoft Edgeの次期バージョンでは、プログラミングに複数の-webkit- CSSコードのサポートが追加され、EdgeとSafari 9の両方で@supports機能検出のサポートが追加されました。ChromeとFirefoxには以前、@ supportsが含まれていました。

/* Chrome 28+, Now Also Safari 9+, Firefox, and Microsoft Edge */

@supports (-webkit-appearance:none) 
{
    .chrome_and_safari {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

Chromeバージョン22〜28のブロック(古いバージョンをサポートするために必要な場合)も、上に投稿したSafariコンボハックをひねってターゲットに設定できます。

/* Chrome 22-28 */

@media screen and(-webkit-min-device-pixel-ratio:0)
{
    .chrome_only {-chrome-:only(;

       color:#0000FF; 
       background-color:#CCCCCC; 

    );}
}

NOTE: If you are new, change class name but leave this the same-> {-chrome-:only(;

上記のSafari CSSフォーマットハックと同様に、これらは次のように使用できます。

<div class="chrome_only">This text will be Blue in Chrome</div>

したがって、この投稿で検索する必要はありません。ここに私のライブテストページがあります。

https://browserstrangeness.bitbucket.io/css_hacks.html#safari

[または鏡]

https://browserstrangeness.github.io/css_hacks.html#safari

テストページには他にも多くのものがあり、特にChromeとSafariを区別するのに役立つバージョンベースのほか、Firefox、Microsoft Edge、Internet Explorer Webブラウザーの多くのハックもあります。

注:何かがうまくいかない場合は、最初にテストページを確認してください。ただし、コードの例と、誰かが手助けしようとしているハッキングの例を入力してください。


9
テストページは素晴らしいと言いたいだけです。これで、任意のデバイスを使用してそのサイトにアクセスし、適用可能なCSSルールを確認できます
duyn9uyen 2014年

1
これはiPhoneまたはiPadのSafariに適用されますか?
Greg Rozmarynowycz 2014年

1
実際、私は上記の例と(; property:value;);の組み合わせを使用して自分の質問を解決しました。以下、それはうまくいきました!
mydoglixu 14

1
この回答の冒頭にあるSafari 6.1以降のハックは、Sassコンパイラでエラーをスローします。それを解決する方法はありますか?
Blackbird

2
@Blackbird申し訳ありませんが、ハックをコンパイルまたはフィルタリングすることはできません。そのまま使用する必要があります。(コンパイル後にそれらを完成したcssファイルに追加します。)それらが非標準であるという事実が動作する理由です。
Jeff Clayton

89

ChromeからSafari 5以降をフィルタリングする方法があります。

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    /* Safari and Chrome */
    .myClass {
     color:red;
    }

    /* Safari only override */
    ::i-block-chrome,.myClass {
     color:blue;
    }
}

3
jeffclayton.wordpress.com/2014/07/22/…-私は多くの作業を行っており(私はbrowserhacks.comのcssハックをテストして作成しています)、テストページを参照しています:browserstrangeness.bitbucket.org/css_hacks.html#webkit
Jeffクレイトン

注:iOSでは[iOS 7でテスト済み]、Chromeバージョンは実際にはSafariエンジンを実行しているため、iPadまたはiPhoneではSafariハックを使用します。他のデバイスでは、それらは異なります。
ジェフクレイトン

それで、基本的に答えのコードはSafari 5.0と6.0で動作し、6.1 +では動作しませんか?
Nic Cottrell 2014年

正確に言うと、:: i-block-chrome、.myClass {}構成では、Safari 5.1-6.0だけでなく、Chrome 10-24(古いバージョンのChromeは実際には使用されていないため、言及する価値はありません)だけが許可されます。 -Safariのハックはそのように機能する傾向があります。1つのバッチは5.1〜6.0を処理し、別のバッチは6.1〜7.0を処理し、新しいバッチは7.1〜8.0を処理します。彼らは、以前の '.1'リリースに非常に近い次の数値バージョンに進むことを決定するまで、多くのものを更新しているようです。
ジェフクレイトン

2013年のこの回答の時点では、Safari 6.1がリリースされたばかりだったため、ブラウザーが変更されたことを十分に理解していないため、これが現時点で最も正確なブラウザーでした。新しいものが必要な場合は、以下の私の答えを確認してください。これは、提供された時点では素晴らしい答えでした。しかし時間は変わったので、私はこれを更新として自分の作品を投稿しました。6.1-7.0と7.1-8.0を作成するのに数か月かかりました。結果を気に入っていただければ幸いです。ほとんどの場合、バージョン8.1がリリースされたときに、そのパターンに従うと、別のハックが必要になります。再び時間だけが教えてくれます。
Jeff Clayton

21

サラリのみ

.yourClass:not(:root:root){ 
    /* ^_^ */ 
}

8
説明を追加しますか?文字通りroot:rootと入力しますか?
Nubtacular 2014

1
これは、Safari 3.x(およびChromeバージョン1.0のみですが、現在は30代なのでChrome 1.0を使用していません...)
Jeff Clayton 14

これは現在Safari 9.0もターゲットにしているため、完全な統計情報が更新されました:/ * Chrome 1.0、Safari 3.X、Safari 9.0+ * /
Jeff Clayton

4
:not(:root:root)セレクタは、(ここで、CSSセレクタ3仕様に無効従う:not()単純なセレクタを含むことができ、すなわち、1つのタイプセレクタ、又は 1つのID 又は一つのクラスまたは CSSセレクタ4(1つの擬似クラス)が、完全に有効記載:not()のリストを受け付けセレクター)。現在、SafariのみがCSSセレクター4の構文を理解していることは事実ですが、このソリューションは将来を見据えたものではありません。
Ilya Streltsyn 16

2
非常に少数のハックは将来の証明ではありません(そして多くの実際の標準コードはバージョン変更によるものではありません)。最良の計画は、CSSハックを使用する場合は、一時的な修正としてのみ使用して、より公式なクロスブラウザー更新を行う時間を購入することです。
ジェフクレイトン

14

このハック100%は、Safari 5.1-6.0でのみ機能します。私はそれを成功裏にテストしたところです。

@media only screen and (-webkit-min-device-pixel-ratio: 1) {
     ::i-block-chrome, .yourcssrule {
        your css property
    }
}

3
このハックは、実際にはChromeとSafariの両方のバージョンが対象です。これにより、Chrome 10-24(誰も使用しないため、Chromeがブロックされたと記載されている理由)とSafari 5.1-6.0のみが許可されます。ただし、Safari 6.1以降では機能しません。当時、その種のより良いハックはありませんでした。
Jeff Clayton、

1
@ veronica-lotti、これも私にとってはうまくいきました。あなたは私の頭痛を取り除きます。ありがとう
Andhi Irawan

人-注意してください。これらのコメントが説明しているのは、過去数年のバージョンのSafariでは機能せず、古いバージョンでのみ機能する方法です。それが実際に意味することは、インターネット上のほとんどの人があなたが探している結果ではなく、古いコンピュータを持っている人だけであることです。これは、現在のオペレーティングシステムでは機能しません。この時点で、ほとんどの人は(Windows XPのみの時代に現在のあった、ない6.0および下げる。)バージョン12以降を持っている
ジェフ・クレイトン

8

Safari 7.0以下のハックを実装したいが7.1以降は実装しない場合-以下を使用:

.myclass { (;property: value;); }
.myclass { [;property: value;]; }

私はこれをSafari 7で試してみましたが、機能させることができませんでした。万が一、実例を教えてもらえますか?
ジューシーな

@Juicy:browserhacks.comでこれらのライブテストがあります-これらはSafari 7以下、およびChrome 28以下で動作します。(別の投稿iOS 7と8で述べたように、他の人もChromeのSafariエンジンを使用しているため、iPadのChromeとSafariはどちらも本当にSafariです)
Jeff Clayton

Safari 7.0ではなく、Safari 7.1で試していた可能性があります。7.0以前では有効であり、7.1以降では無効です。この回答が投稿されたとき、7.0はSafariの最新バージョンだったので、当時はそれが本当でした。
ジェフクレイトン

Safari for Windowsで動作します(バージョン5.1.7(7534.57.2))
jave.web 2015年

Mac用のSafari(バージョン6.0.2(7536.26.17))の作品
マーリン

6

(.myClass)のクラスを置き換えます

/ * Safariのみ* / .myClass:not(:root:root){ enter code here }


これはSafariにとって適切なものです。それが対象とする他の唯一のブラウザはChrome 1です(もう誰もChome 1を使用していません)
Jeff Clayton

最新のMacを使用していない人のための正確な仕様:Chrome 1、Safari 3.X、Safari 9.0+(Safari 4-8以外)
Jeff Clayton

これはSafari 7+の最新バージョンで動作し、私が知る限り、受け入れられる答えであるはずです。
Jason Engage

これは、Safariのブラウザハックをたくさん試した結果、ようやく機能しました。
FairyQueen

4

ちなみに、モバイルでSafariをターゲットにする必要があるだけの場合は、このハックにメディアクエリを追加するだけです。

@media screen and (max-width: 767px) {
    _::-webkit-full-page-media, _:future, :root .safari_only {
        padding: 10px; //or any property you need
    }
}

また、ターゲットにする要素に.safari_onlyクラスを追加することを忘れないでください。例:

<div class='safari_only'> This div will have a padding:10px in a mobile with Safari  </div>

4

私は次の方法を使いたいです:

var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
if (isSafari) { 
  $('head').append('<link rel="stylesheet" type="text/css" href="path/to/safari.css">') 
};

このJavaScriptハック方法では、JQueryパッケージがインストールされている必要があります。
ジェフクレイトン

これは非常に悪い習慣と見なされ、ブラウザのスニッフィングは非常にエラーが発生しやすく、偽陽性の山につながります。これを行わないでください。メディアクエリのスニッフィングは非常にダーティですが、非常に小さな変更では許容できる可能性があります。
Wannes

3

このSafariのみのフィルターを使用すると、Safari(iOSおよびMac)をターゲットにできますが、Chrome(およびその他のブラウザー)は除外されます。

@supports (-webkit-backdrop-filter: blur(1px)) {
  .safari-only {
    background-color: rgb(76,80,84);
  }
}

2

ステップ1:https : //modernizr.com/を使用する

ステップ2:htmlクラス.regionsを使用してSafariのみを選択する

a { color: blue; }
html.regions a { color: green; }

Modernizrは、現在のブラウザーがサポートしているものに基づいて、HTMLクラスをDOMに追加します。Safariはリージョンhttp://caniuse.com/#feat=css-regionsをサポートしていますが、他のブラウザーは(まだ)サポートしていません。この方法は、IEの異なるバージョンを選択する場合にも非常に効果的です。力があなたと共にありますように。


1
modernizrは、ブラウザーを識別するWebサイトの優れたjavascriptアドオンであり、優れたツールです!-このハックは、他のブラウザーがリージョン機能をサポートすることを決定するまで(他のユーザーと同様に)機能します
Jeff Clayton

1
CSSリージョンはサポートされなくなりました。
1stthomas

2
リージョンを使用すると、iOSでSafari 6.1から11および7.1から11.2をターゲットにすることができますが、それだけでもすでに優れています。
lowtechsun 2018

@lowtechsun-これに関するあなたの統計を投稿するのに最適です。ハックは、ターゲットとするブラウザーの知識としてのみ有効です。
ジェフクレイトン

2

こんにちは私はこれを作りました、そしてそれは私のために働きました

@media(max-width: 1920px){
    @media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 5.5% !important;
        }
    }
}

@media(max-width: 1680px){
    @media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 15% !important;
        }

    }
}

@media(max-width: 1600px){
    @media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 18% !important;
        }

    }
}


@media (max-width: 1440px) {
@media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 24.5% !important;
        }

    }

}


@media (max-width: 1024px) {
@media not all and (min-resolution:.001dpcm) {
    @media {
        .photo_row2 {
            margin-left: -11% !important;
        }

    }

}

これは、レスポンシブビューを使用したWebサイトの複数のデバイス設定でのハックの優れた使用法です。
ジェフクレイトン

2

注: iOSのみで十分な場合(Safariデスクトップを犠牲にしてもかまわない場合)、これは機能します。

    @supports (-webkit-overflow-scrolling: touch) {
    /* CSS specific to iOS devices */ 
    }

1

メディアクエリハックを使用して、他のブラウザーからSafari 6.1-7.0を選択できます。

@media \\0 screen {}

免責事項:このハッキングは、古いChromeバージョン(2013年7月より前)も対象としています。


新しいSafariでは機能しません。ただし、この統計は外科的です。Safari6.1-7.0、Chrome 22-28はまだ便利です。
Jeff Clayton

0

これは機能します:

@media not all and (min-resolution:.001dpcm) { 
  @media {
    /* your code for Safari Desktop & Mobile */
    body {
      background-color: red;
      color: blue;
    }
    /* end */
  }
}

0

最後に、少しJavaScriptを使用してそれを実現します。

if (navigator.vendor.startsWith('Apple'))
    document.documentElement.classList.add('on-apple');

次に、私のCSSでAppleブラウザエンジンをターゲットにすると、セレクタは次のようになります。

.on-apple .my-class{
    ...
}

0

https://stackoverflow.com/a/17637937/3174065 ここでは回答がありますが、このメソッドはJSをいくつか使用します。使用する場合は、必ずjsをフッターに入れてください。これを適切に起動するには、ボディを完全にロードする必要があります。ヘッドに配置すると、ボディがロードされる前に起動するため、エラーが発生します。

次に、ボディに.safariクラスを追加しますが、これはSafariでのみであり、CSSのターゲット設定が非常に簡単になります。


-1

サファリで100%動作します。

@media screen and (-webkit-min-device-pixel-ratio:0) 
{
::i-block-chrome, Class Name {your styles}
}

これは、Safariの古いバージョン(6.1以降)では機能しません。
ジェフクレイトン

-1

私はテストし、それは私のために働いた

@media only screen and (-webkit-min-device-pixel-ratio: 1) {
 ::i-block-chrome, .myClass {
    height: 1070px !important;
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.