2012-05-30 13 views
25

¿Hay un truco CSS de Google Chrome solamente? Mire, Mozilla también lo lee correctamente. Busqué diez veces más pero no encontré nada, así que aquí estoy.¿Hay un hack CSS de Google Chrome solamente?

+0

http://css-infos.net/properties/webkit – undefined

+0

Mozilla lee * what * properly? ¿Y por qué la pregunta está etiquetada jQuery si se trata de CSS? –

+1

en mozilla arriba: 56px muestra otro lugar y en crome otro lugar ... pero en ie7 está bien – Sandy

Respuesta

30

Claro es:

@media screen and (-webkit-min-device-pixel-ratio:0) 
{ 
    #element { properties:value; } 
} 

Y un poco de violín a verlo en acción - http://jsfiddle.net/Hey7J/

hay que añadir ... aunque esto es generalmente una mala práctica, que en realidad no debería estar en el punto donde comienzas a necesitar hacks de navegador individuales para que CSS funcione. Intente usar reset style sheets al comienzo de su proyecto, para ayudar a evitar esto.

Además, estos hacks pueden no ser a prueba de futuro.

+26

Esto NO es específico de Chrome. Esto se dirige a Safari Y Chrome. –

+0

Tenga en cuenta que _screen_ se puede reemplazar por _print_ u otros tipos de medios. – colti

+0

No es solo Chrome – AmerllicA

19

para trabajar sólo Chrome o Safari, probarlo:

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

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

No es solo Chrome – AmerllicA

+1

Lo dije en el ejemplo. El hack es para Safari y Chrome. – revton

4

Se podría usar javascript. Las otras respuestas hasta la fecha parecen también dirigidas a Safari.

if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) { 
    alert("You'll only see this in Chrome"); 
    $('#someID').css('background-position', '10px 20px'); 
} 
17

Sólo Chrome CSS Hack:

@media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { 
    #selector { 
     background: red; 
    } 
} 
+0

Thx está trabajando solo en Chrome, no en Ipad o iphone como otros solución – user956584

+0

La razón no es el truco (el truco publicado aquí es uno que creé y publiqué en browserhacks) - el problema es que la versión de iPad de Chrome está usando el Motor Safari Responde únicamente a los hacks de Safari, no a los de Chrome. Otras versiones de Chrome son, de hecho, Chrome y funcionan en consecuencia. –

+0

Las estadísticas en ese truco cubren Chrome 29+ –

8

intenta utilizar la nueva función de '' @supports, aquí es una buena corte t sombrero que te puede gustar:

* ACTUALIZACIÓN !!! * Microsoft Edge y Safari 9 tanto Añadido soporte para la función de @supports en el otoño de 2015, Firefox también - por lo que aquí está mi versión actualizada para usted:

/* Chrome 29+ (Only) */ 

@supports (-webkit-appearance:none) and (not (overflow:-webkit-marquee)) 
and (not (-ms-ime-align:auto)) and (not (-moz-appearance:none)) { 
    .selector { color:red; } 
} 

Más información sobre este aquí (a la inversa ... Safari pero no cromo): [] is there a css hack for safari only NOT chrome?

El anterior CSS Hack [ante Edge y Safari 9 o versiones más recientes de Firefox]:

/* Chrome 28+ (now also Microsoft Edge, Firefox, and Safari 9+) */ 

@supports (-webkit-appearance:none) { .selector { color:red; } } 

Esto funcionó para (cromo solamente), versión 28 y posteriores.

(El cromo por encima de 28+ truco no era una de mis creaciones. He encontrado esto en la web y ya que era tan bueno que lo envié a BrowserHacks.com recientemente, hay otros que viene.)

agosto 17th, 2014 actualización: Como mencioné, he estado trabajando para llegar a más versiones de Chrome (y muchos otros navegadores), y aquí hay uno que diseñé que maneja Chrome 35 y versiones más nuevas.

/* Chrome 35+ */ 

_::content, _:future, .selector:not(*:root) { color:red; } 

En los comentarios a continuación fue mencionado por @BoltClock sobre el futuro, pasado, no ... etc ... Podemos, de hecho, los utilizan para ir un poco más atrás en el historial de Chrome.

Así que este es uno que también funciona, pero no 'solo Chrome', es por eso que no lo puse aquí. Aún debe separarlo mediante un hack de solo Safari para completar el proceso. He creado css hacks para hacer esto, sin embargo, no te preocupes. Aquí están algunos de ellos, empezando por la más simple:

/* Chrome 26+, Safari 6.1+ */ 

_:past, .selector:not(*:root) { color:red; } 

O por el contrario, éste que se remonta a Chrome 22 y más nuevo, pero Safari, así ...

/* Chrome 22+, Safari 6.1+ */ 

@media screen and (-webkit-min-device-pixel-ratio:0) 
and (min-resolution:.001dpcm), 
screen and(-webkit-min-device-pixel-ratio:0) 
{ 
    .selector { color:red; } 
} 

El bloque de versiones de cromo 22-28 (más complicado, pero funciona muy bien) también son posibles para apuntar a través de una combinación que funcionó:

/* Chrome 22-28 (Only!) */ 

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

     color:red; 

    );} 
} 

Ahora sigue con este par también creé que se dirige a Safari 6.1+ (sólo) en orden para hasta separar Chrome y Safari. actualizado para incluir Safari 8

/* Safari 6.1-7.0 */ 

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


/* Safari 7.1+ */ 

_::-webkit-full-page-media, _:future, :root .selector { color:blue; } 

Así que si se pone uno de los hacks Chrome + Safari anterior, y luego el Safari 6.1-7 y 8 cortes en sus estilos de forma secuencial, tendrá elementos de cromo en rojo, y artículos de Safari en azul.

+0

Más en mi blog: http://jeffclayton.wordpress.com/2014/07/22/the-chrome-and-safari-css-hacks-collection/ y la página de prueba aquí: http: //browserstrangeness.bitbucket. org/css_hacks.html # webkit –

+0

He agregado muchos nuevos hacks para muchas versiones de navegador en mi página de prueba y mi blog. –

+0

A primera vista, esto hace que parezca que Chrome admite selectores compuestos en ': not()' según Selectores 4. Sin embargo, parece más que Chrome simplemente ignora el '*' en el argumento. ': not (*: root)' y ': not (* [fakeattr])' funcionan bien, pero ': not (html: root)' y ': not (html [fakeattr])' do not. No está claro en los Selectores 3 si '*' debe contarse como un selector simple para los fines de ': not()' cuando no se usa solo (y en Selectores 4 probablemente sea irrelevante de todos modos). De cualquier manera, un hallazgo muy interesante. – BoltClock

Cuestiones relacionadas