c'è un hack CSS per Safari solo NON Chrome?


183

Sto cercando di trovare un hack CSS per Safari NON Chrome, so che si tratta di entrambi i browser webkit ma sto avendo problemi con gli allineamenti div in Chrome e Safari, ognuno viene visualizzato in modo diverso.

ho cercato di usare questo, ma influisce anche su Chrome,

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

qualcuno ne conosce un altro che si applica solo al safari, per favore?



Sarei più interessato al problema reale che a una soluzione fragile e confusa. È (ancora) disponibile da qualche parte?
Matijs,

Per le persone che pubblicano "non funziona", tieni presente che devi conoscere la versione di Safari che stai testando. Non esiste una soluzione Safari "catch-all" per ogni versione. È necessario fornire tali informazioni durante la pubblicazione o nessuno può aiutarvi a trovare una soluzione.
Jeff Clayton,

Versioni diverse di Safari hanno esigenze diverse - controlla qui esempi live: browserstrangeness.bitbucket.io/css_hacks.html#safari [O lo specchio] browserstrangeness.github.io/css_hacks.html#safari
Jeff Clayton

Risposte:


357
  • AGGIORNATO PER CATALINA E SAFARI 13 (aggiornamento inizio 2020) *

NOTA: filtri e compilatori (come il motore SASS) si aspettano un codice "cross-browser" standard - NON hack di CSS come questi, il che significa che riscriveranno, distruggeranno o rimuoveranno gli hack poiché non è ciò che fanno gli hack. Gran parte di questo è un codice non standard che è stato scrupolosamente realizzato per indirizzare solo le versioni del singolo browser e non può funzionare se vengono modificate. Se si desidera utilizzarlo con quelli, è necessario caricare l'hack CSS scelto DOPO qualsiasi filtro o compilatore . Questo può sembrare un dato di fatto, ma c'è stata molta confusione tra le persone che non si rendono conto che stanno annullando un hack eseguendolo attraverso tale software che non è stato progettato per questo scopo.

Safari è cambiato dalla versione 6.1, come molti hanno notato.

Nota: se stai utilizzando Chrome [e ora anche Firefox] su iOS (almeno nelle versioni iOS 6.1 e successive) e ti chiedi perché nessuno degli hack sembra separare Chrome da Safari, è perché la versione iOS di Chrome sta usando il motore Safari. Utilizza hack di Safari non quelli di Chrome. Maggiori informazioni qui: https://allthingsd.com/20120628/googles-chrome-for-ios-is-more-like-a-chrome-plated-apple/ Firefox per iOS è stato rilasciato nell'autunno 2015. Risponde anche a Safari Hacks, ma nessuno di Firefox, uguale a iOS Chrome.

ANCHE: Se hai provato uno o più hack e hai difficoltà a farli funzionare, ti preghiamo di pubblicare un codice di esempio (meglio ancora una pagina di prova) - l'hack che stai provando e quale browser (versione esatta!) stai usando così come il dispositivo che stai utilizzando. Senza tali informazioni aggiuntive, è impossibile per me o per chiunque altro qui aiutarti.

Spesso è una soluzione semplice o un punto e virgola mancante. Con CSS di solito è questo o un problema di quale ordine il codice è elencato nei fogli di stile, se non solo errori CSS. Si prega di testare gli hack qui sul sito di test. Se funziona lì, significa che l'hack funziona davvero per la tua configurazione, ma è qualcos'altro che deve essere risolto. Le persone qui adorano davvero aiutare, o almeno indirizzarti nella giusta direzione.

Il sito di prova:

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

E SPECCHIO!

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

Quello fuori mano qui sono gli hack da usare per le versioni più recenti di Safari.

Dovresti provarlo prima perché copre le attuali versioni di Safari ed è solo Safari puro:

Questo funziona ancora correttamente con Safari 13 (inizio 2020):

/* Safari 7.1+ */

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

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

}

Per coprire più versioni, 6.1 e successive, in questo momento devi usare la prossima coppia di hack css. Quello per 6.1-10.0 va con quello che gestisce 10.1 e versioni successive.

Quindi, eccone uno che ho elaborato per Safari 10.1+:

La query doppio supporto è importante qui, non rimuoverla.

/* Safari 10.1+ */

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

    .safari_only { 

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

    }
}}

Prova questo se SCSS o altri set di strumenti hanno problemi con la media query nidificata:

/* Safari 10.1+ (alternate method) */

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

    .safari_only { 

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

    }
}}

Il prossimo funziona per 6.1-10.0 ma non 10.1 (aggiornamento di fine marzo 2017)

Questo hack l'ho creato in molti mesi di test e sperimentazione combinando più altri hack.

NOTE: come sopra, la doppia query multimediale NON è un incidente: esclude molti browser meno recenti che non sono in grado di gestire l'annidamento delle query multimediali. - Anche lo spazio mancante dopo uno degli "e" è importante. Dopotutto, questo è un hack ... e l'unico che funziona per la versione 6.1 e tutte le versioni più recenti di Safari in questo momento. Inoltre, come indicato nei commenti seguenti, l'hacking è CSS non standard e deve essere applicato DOPO un filtro. Filtri come i motori SASS riscrivono / annullano o lo rimuovono completamente.

Come accennato in precedenza, controlla la mia pagina di test per vederlo funzionare così com'è (senza modifiche!)

Ed ecco il codice:

/* 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; 

    }
}}

Per ulteriori CSS Safari specifici per versione, continua a leggere di seguito.

/* Safari 11+ */

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

    .safari_only { 

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

    }
}}

Uno per Safari 11.0:

/* Safari 11.0 (not 11.1) */

html >> * .safari_only {

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

}

Uno per Safari 10.0:

/* Safari 10.0 (not 10.1) */

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

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

}

Opere leggermente modificate per 10.1 (solo):

/* 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 (dispositivi non 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; 

}

Hacks Safari 9 CSS:

Un semplice supporto per la funzione di hacking delle query per Safari 9.0 e versioni successive:

@supports (-webkit-hyphens:none)
{

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

}

Una semplice sottolineatura per Safari 9.0 e versioni successive:

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

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

}

Un altro per Safari 9.0 e versioni successive:

/* Safari 9+ */

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

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

}

e anche un'altra query sulle funzionalità di supporto:

/* Safari 9+ */

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

    .safari_only { 

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

    }
}

Uno per Safari 9.0-10.0:

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

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

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

}

Safari 9 ora include il rilevamento delle funzionalità in modo da poterlo utilizzare ora ...

/* Safari 9 */

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

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

}

Ora per colpire solo i dispositivi iOS. Come accennato in precedenza, poiché Chrome su iOS è radicato in Safari, ovviamente colpisce anche quello.

/* 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; 
  }

}

uno per Safari 9.0+ ma non per dispositivi iOS:

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

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

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

}

E uno per Safari 9.0-10.0 ma non per dispositivi iOS:

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

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

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

}

Di seguito sono riportati gli hack che separano la versione 6.1-7.0 e 7.1+ e che richiedono anche una combinazione di più hack per ottenere il risultato giusto:

/* 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; 

    );}
}

Da quando ho indicato il modo di bloccare i dispositivi iOS, ecco la versione modificata dell'hack Safari 6.1+ che si rivolge ai dispositivi non iOS:

/* 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; 

    }
}}

Per usarli:

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

Di solito [come in questa domanda] il motivo per cui le persone chiedono degli hack di Safari è principalmente riferito alla separazione da Google Chrome (di nuovo NON iOS!) Potrebbe essere importante pubblicare l'alternativa: come indirizzare Chrome separatamente anche da Safari, quindi Ve lo sto fornendo qui nel caso fosse necessario.

Ecco le basi, controlla ancora la mia pagina di test per molte versioni specifiche di Chrome, ma queste riguardano Chrome in generale. Chrome è la versione 45, le versioni Dev e Canary sono fino alla versione 47 in questo momento.

La mia vecchia combinazione di query multimediali che ho installato su browserhacks funziona ancora solo per Chrome 29+:

/* Chrome 29+ */

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

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

    }
}

Una query sulla funzione @supports funziona bene anche per Chrome 29+ ... una versione modificata di quella che stavamo usando per Chrome 28+ di seguito. Safari 9, i prossimi browser Firefox e il browser Microsoft Edge non vengono rilevati con questo:

/* 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; 

    }
}

In precedenza, Chrome 28 e versioni successive erano facili da indirizzare. Questo è quello che ho inviato a browserhacks dopo averlo visto incluso in un blocco di altro codice CSS (non originariamente inteso come un hack CSS) e realizzato cosa fa, quindi ho estratto la parte pertinente per i nostri scopi:

[NOTA:] Questo vecchio metodo qui sotto mostra ora Safari 9 e il browser Microsoft Edge senza l'aggiornamento sopra. Le prossime versioni di Firefox e Microsoft Edge hanno aggiunto il supporto per più codici CSS -webkit nella loro programmazione, e sia Edge che Safari 9 hanno aggiunto il supporto per il rilevamento delle funzionalità @supports. Chrome e Firefox includevano @supports in precedenza.

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

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

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

    }
}

Il blocco di versioni di Chrome 22-28 (se necessario per supportare versioni precedenti) è anche possibile indirizzare con una svolta ai miei hack combinati Safari che ho pubblicato sopra:

/* 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(;

Come gli hack di formattazione CSS Safari sopra, questi possono essere usati come segue:

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

Quindi non devi cercarlo in questo post, ecco di nuovo la mia pagina di test live:

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

[O lo specchio]

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

La pagina di test ha anche molti altri, in particolare basati sulla versione per aiutarti a distinguere ulteriormente tra Chrome e Safari, e anche molti hack per browser Web Firefox, Microsoft Edge e Internet Explorer.

NOTA: se qualcosa non funziona per te, controlla prima la pagina di test, ma fornisci il codice di esempio e QUALE hack stai tentando per chiunque ti aiuti.


9
Voglio solo dire che la pagina di test è fantastica. Ora posso navigare su quel sito con qualsiasi dispositivo e vedere quali regole CSS sono applicabili!
duyn9uyen,

1
Questo si applica a Safari su iPhone o iPad?
Greg Rozmarynowycz,

1
in realtà, ho appena risolto la mia domanda usando una combinazione dell'esempio sopra E la (; proprietà: valore;); sotto e ha funzionato benissimo!
mydoglixu,

1
L'hack per Safari 6.1+ nella parte superiore di questa risposta genera un errore nel compilatore Sass. C'è un modo per risolverlo?
Merlo il

2
@Blackbird Siamo spiacenti ma non puoi compilare o filtrare gli hack, li rovina. Devono essere usati così come sono. (Aggiungili al file CSS completo dopo la compilazione.) Il fatto che non siano standard è il motivo per cui funzionano.
Jeff Clayton,

89

Esiste un modo per filtrare Safari 5+ da Chrome:

@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/… - Ho lavorato su molti (collaudo e creo hack css per browserhacks.com) e pagina di test qui: browserstrangeness.bitbucket.org/css_hacks.html#webkit
Jeff Clayton,

Nota: in iOS [testato in iOS 7], la versione di Chrome in realtà esegue il motore Safari, quindi su iPad o iPhone, usi gli hack Safari. Per altri dispositivi, sono diversi.
Jeff Clayton,

Quindi, sostanzialmente il codice nella risposta funziona per Safari 5.0 e 6.0 e non per 6.1+?
Nic Cottrell,

Per essere assolutamente precisi, il costrutto :: i-block-chrome, .myClass {} consente solo Safari 5.1-6.0, ma anche Chrome 10-24 (la vecchia versione di Chrome non è più utilizzata, quindi non vale la pena menzionarla) ma niente di più recente - Gli hack di Safari tendono a funzionare così: un batch gestisce 5.1-6.0, un altro gestisce 6.1-7.0 e quelli più recenti gestiscono 7.1-8.0. Sembrano aggiornare molto le cose fino a quando non decidono di passare alla prossima versione numerica che è molto vicina alla precedente versione '.1'.
Jeff Clayton,

Al momento di questa risposta nel 2013, Safari 6.1 era appena stato rilasciato, quindi non abbastanza persone avevano visto che il browser era cambiato, quindi questo era il più preciso al momento. Se hai bisogno di nuovi, controlla la mia risposta qui sotto. Questa è stata un'ottima risposta al momento in cui è stata fornita. Il tempo cambia tuttavia, quindi ho pubblicato il mio lavoro come aggiornamento a questo. Mi ci sono voluti mesi per creare quelli 6.1-7.0 e 7.1-8.0. Spero che ti piacciano i risultati. Molto probabilmente quando viene rilasciata una versione 8.1 se segue il modello, richiederà anche un hack diverso. Ancora una volta solo il tempo lo dirà.
Jeff Clayton,

21

Solo Sarari

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

8
Vuoi aggiungere qualche spiegazione? Digito letteralmente root: root?
Nubtacular

1
Questo è esattamente corretto per Safari 3.x (e Chrome versione 1.0 solo se nessuno usa Chrome 1.0 poiché è ormai negli anni '30 ...)
Jeff Clayton

Questo ora ha come obiettivo anche Safari 9.0, quindi le statistiche complete sono state aggiornate: / * Chrome 1.0, Safari 3.X, Safari 9.0+ * /
Jeff Clayton

4
Il :not(:root:root)selettore non è valido secondo la specifica Selettori CSS 3 (in cui :not()può contenere solo un selettore semplice, ovvero un selettore di tipo o un ID o una classe o una pseudo-classe), ma completamente valido secondo i Selettori CSS 4 (dove :not()accetta l'elenco di selettori). È vero che attualmente solo Safari capisce la sintassi di CSS Selectors 4, ma questa soluzione non è a prova di futuro.
Ilya Streltsyn,

2
Pochissimi hack non sono (e molto codice standard effettivo non è dovuto a cambiamenti di versione) a prova di futuro. Il piano migliore è se hai intenzione di usare un hack css, usalo solo come una soluzione temporanea per guadagnare tempo per fare un aggiornamento cross-browser più ufficiale.
Jeff Clayton,

14

Questo hack funziona al 100% solo per Safari 5.1-6.0. L'ho appena provato con successo.

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

3
Questo hack è in realtà per Chrome e Safari in diverse versioni. Consente Chrome 10-24 (che nessuno usa più, motivo per cui le persone hanno elencato che ha bloccato Chrome) e Safari 5.1-6.0. Tuttavia, non funziona per Safari 6.1 e versioni successive. A quel tempo non c'era miglior hack del suo genere.
Jeff Clayton,

1
@ veronica-lotti, ha funzionato anche per me. Ti sbarazzi del mio mal di testa. Grazie
Andhi Irawan,

Persone - per favore state attenti. Quello che descrivono questi commenti è un metodo che non funziona per le versioni di Safari negli ultimi anni e funziona solo per le vecchie versioni. Ciò significa che la maggior parte delle persone su Internet non avrà il risultato che stai cercando, ma solo le persone con computer più vecchi. Questo non funziona con i sistemi operativi attuali. In questo momento la maggior parte delle persone ha la versione 12 e successive (non 6.0 e precedenti, che erano attuali solo durante l'era di Windows XP.)
Jeff Clayton,

8

Per coloro che vogliono implementare un hack per Safari 7.0 e versioni precedenti, ma non 7.1 e versioni successive, utilizzare:

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

Ho provato questo su Safari 7 e non sono riuscito a farlo funzionare. Puoi fornire un esempio funzionante per caso?
Succoso

@Juicy: Esistono test live di questi su browserhacks.com - Funzionano su Safari 7 e versioni precedenti, e anche Chrome 28 e versioni precedenti. (Come menzionato in un altro post su iOS 7 e 8, forse anche altri usano il motore Safari per Chrome, quindi Chrome e Safari su iPad sono entrambi Safari)
Jeff Clayton,

Potresti averlo provato in Safari 7.1, non in Safari 7.0. È valido per 7.0 e precedenti, non 7.1 e successivi. Quando questa risposta è stata pubblicata, 7.0 era l'ultima versione di Safari, quindi era vera in quel momento.
Jeff Clayton,

funziona per Safari per Windows (versione 5.1.7 (7534.57.2))
jave.web

funziona per Safari per Mac (versione 6.0.2 (7536.26.17))
Merlin,

6

Sostituisci la tua classe in (.myClass)

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


Questo è buono per Safari - l'unico altro browser a cui è destinato è Chrome 1 (nessuno usa più Chome 1)
Jeff Clayton,

Specifiche esatte per le persone che non utilizzano gli ultimi Mac: Chrome 1, Safari 3.X, Safari 9.0+ (non Safari 4-8)
Jeff Clayton,

Funziona con l'ultima versione di Safari 7+ e, per quanto ne so, dovrebbe essere la risposta accettata.
Jason Engage il

Wow, grazie, alla fine ha funzionato per me dopo aver provato così tanti hack del browser per Safari !!!
FairyQueen

4

A proposito, per tutti voi ragazzi che hanno solo bisogno di indirizzare Safari su dispositivi mobili, basta aggiungere una query multimediale a questo hack:

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

E non dimenticare di aggiungere la classe .safari_only all'elemento che vuoi scegliere come target, ad esempio:

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

4

Mi piace usare il seguente metodo:

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">') 
};

Questo metodo di hacking JavaScript richiede l'installazione del pacchetto JQuery.
Jeff Clayton,

Questa è considerata una pratica estremamente negativa, lo sniffing del browser è molto soggetto a errori e porta a un sacco di falsi positivi. Non farlo, anche lo sniffing di media query è molto sporco ma potrebbe essere accettabile per modifiche molto piccole.
Wannes,

3

Quando utilizzo questo filtro solo per Safari potrei scegliere come target Safari (iOS e Mac), ma escludere Chrome (e altri browser):

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

2

Passaggio 1: utilizzare https://modernizr.com/

Passaggio 2: utilizzare la classe html .regions per selezionare solo Safari

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

Modernizr aggiungerà classi html al DOM in base a ciò che supporta il browser corrente. Safari supporta le regioni http://caniuse.com/#feat=css-regions mentre altri browser non lo fanno (ancora comunque). Questo metodo è anche molto efficace nella selezione di diverse versioni di IE. Che la forza sia con te.


1
modernizr è un ottimo componente aggiuntivo javascript per siti Web per identificare i browser, strumento eccellente! - questo hack funzionerà (come altri) fino a quando altri browser non decideranno di supportare la funzionalità delle regioni
Jeff Clayton

1
Le regioni CSS non sono più supportate.
1stthomas

2
Regioni mi consente di scegliere come target Safari da 6.1 a 11 e da 7.1 a 11.2 su iOS e già questo è eccezionale.
lowtechsun,

@lowtechsun - grande pubblicazione delle tue statistiche su questo, gli hack sono solo una buona conoscenza dei browser a cui si rivolgono.
Jeff Clayton,

2

ciao ho fatto questo e ha funzionato per me

@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;
        }

    }

}

Questo è un bel set, buon uso dell'hacking con più impostazioni del dispositivo per i siti Web che utilizzano viste reattive.
Jeff Clayton,

2

Nota: se solo iOS è sufficiente (se sei disposto a sacrificare il desktop Safari), allora funziona:

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

1

Puoi utilizzare un hack di media query per selezionare Safari 6.1-7.0 da altri browser.

@media \\0 screen {}

Disclaimer: questo hack ha come target anche le versioni precedenti di Chrome (prima di luglio 2013).


Non funziona su Safari più recente, le statistiche per questo sono comunque chirurgiche: Safari 6.1-7.0, Chrome 22-28 quindi ancora a portata di mano.
Jeff Clayton,

0

Questo funziona:

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

0

Alla fine uso un po 'di JavaScript per raggiungerlo:

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

quindi nel mio CSS per indirizzare il motore del browser Apple il selettore sarà:

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

0

https://stackoverflow.com/a/17637937/3174065 viene fornita una risposta qui sebbene questo metodo utilizzi alcuni JS. se usato, assicurati di mettere js nel piè di pagina, il corpo deve essere completamente caricato per farlo esplodere correttamente, quando posizionato nella testa si sbaglia perché si spara prima che il corpo sia caricato.

aggiunge quindi una classe .safari al corpo, ma solo nel safari, rendendo molto semplice il targeting per css.


-1

Funziona al 100% in Safari..ho provato

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

Funziona con le versioni precedenti di Safari, non con quelle attuali - 6.1 e successive.
Jeff Clayton,

-1

Ho testato e ha funzionato per me

@media only screen and (-webkit-min-device-pixel-ratio: 1) {
 ::i-block-chrome, .myClass {
    height: 1070px !important;
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.