Cosa significa la faccina ":)" nei CSS?


321

Ho notato questo codice CSS in un progetto:

html, body { :)width: 640px;}

Sono in giro con CSS da molto tempo ormai ma non ho mai visto questo codice ":)" prima. Significa qualcosa o è solo un refuso?


17
A me sembra un errore di battitura. Lo sviluppatore sta cercando di essere divertente, o forse un modo per lui di contrassegnare le aree del codice che cercherà?
— Lee,

2
@stijn potrebbe ancora essere un codice specifico del fornitore strano ...
— Segna il

22
@ series0ne Presumo che tu non abbia mai visto l'hacker di Internet Explorer asterisco.
— Nit

11
Se si tratta effettivamente di un hack del browser, ti consigliamo di aggiungere un commento nel file CSS che spieghi questo.
— user247702

32
La mia ipotesi: l'autore del codice ha digitato :) pensando che il focus fosse sul client di messaggistica istantanea. Quando non lo era, fecero clic sul client di messaggistica istantanea e procedettero da lì, senza mai rendersi conto di aver digitato una faccina nell'ultima posizione in cui si trovava il cursore, che era il file CSS.
— Nathan,

Risposte:


279

Da un articolo su javascriptkit.com , applicato per IE 7 e versioni precedenti:

se aggiungi un carattere non alfanumerico come un asterisco ( *) immediatamente prima del nome di una proprietà, la proprietà verrà applicata in IE e non in altri browser.

Inoltre c'è un trucco per <= IE 8 :

div {
  color: blue;      /* All browsers */
  color: purple\9;  /* IE8 and earlier */
 *color: pink;      /* IE7 and earlier */
}

Tuttavia non è una buona idea, non convalidano. Ti senti sempre libero di lavorare con i commenti condizionali per il targeting di versioni specifiche di IE :

<!--[if lte IE 8]><link rel="stylesheet" href="ie-8.css"><![endif]-->
<!--[if lte IE 7]><link rel="stylesheet" href="ie-7.css"><![endif]-->
<!--[if lte IE 6]><link rel="stylesheet" href="ie-6.css"><![endif]-->

Ma per quelli che vogliono vedere l'hacking in realtà, per favore apri questa pagina nell'ultima versione di IE che hai. Quindi vai alla modalità sviluppatore facendo un F12. Nella sezione Emulazione ( ctrl+ 8) cambia la modalità documento in 7e vedi cosa succede.

inserisci qui la descrizione dell'immagine

La proprietà utilizzata nella pagina è :)font-size: 50px;.


2
sapevo di "_" e "*" prima del selettore, ma non di quello che hai detto.
— valerio0999,

2
@vlrprbttst Questi sono caratteri convenzionali usati per facilità. Tuttavia, conclude tutti i valori non alfanumerici.
— revo

1
Sto contrassegnando questa risposta come corretta anche se Salman-a era anche corretta ma un po 'più lenta. Ero a conoscenza di questo trucco ma ho sempre usato un "*". Colui che ha fatto questa pagina è un jolly;).
— Segna il

1
Potrei essere abbastanza stupido da perdere qualcosa qui, ma perché può farlo usando 2 personaggi? Dice "aggiungi un non alfanumerico", non "aggiungi uno o più ...". O :significa qualcos'altro? Altrimenti, non posso mettere *********************font-size: "150%";, ecc.?
— Max

1
Giusto per aggiungere una parte in più a questa risposta. La risposta è ottima e corretta, ma manca questo il fatto che questa non è la migliore pratica. Come regola generale, dovresti fare del tuo meglio per offrire la migliore esperienza in tutti i browser utilizzati dalla tua base di utenti. Per non parlare, a mio avviso, non dovresti supportare i browser che la società che li ha resi non supporta più.
— AlienDev,

171

Sembra un hack CSS per colpire IE7 e i browser precedenti. Mentre questo è CSS non valido e i browser dovrebbero ignorarlo, IE7 e precedenti analizzeranno e rispetteranno questa regola. Ecco un esempio di questo hack in azione:

CSS

body {
    background: url(background.png);
    :)background: url(why-you-little.png);
}

IE8 (ignora la regola)

Esempio 1 - IE8

IE7 (applica la regola)

Esempio 1 - IE7

Nota che non deve essere una faccina sorridente; Menzioni BrowserHacks :

Qualsiasi combinazione di questi caratteri: [prima che il nome della proprietà funzionerà] Internet Explorer ≤ 7
! $ & * ( ) = % + @ , . / ` [ ] # ~ ? : < > |


L'esempio del supporto per hot dog GAH è qui .


62
GAH Flashback stand per hot dog
— MikeTheLiar,

Sì, da IE8 in poi IE si considera conforme ai CSS ed è un po 'alla volta rompendo tutte le loro correzioni css specifiche per IE. (quindi quindi dobbiamo ricorrere a soluzioni javascript)
— Flip Vernooij

39
Tutti i siti dovrebbero utilizzare un tema di supporto per hot dog per tutti gli utenti <IE10. +1
— Pete TNT,

6
@ikkuh Per essere onesti, IE11 è un browser abbastanza decente e conforme. C'è una ragione per cui hanno abbandonato il supporto per i commenti condizionali di IE in esso.
— ajp15243,

2
@ apj15243 Sì, hanno fatto molta strada e spero che continueranno ad andare avanti, la verità è che ho ancora bisogno del supporto condizionale per questo, e questo non è solo IE11, ma anche 10,9 e 8. Quindi desideriamo un auto- aggiornare anche, non vi è alcun motivo per non eseguire IE11 su XP se non per motivi commerciali. Ma questa è una discussione diversa.
— Flip Vernooij,
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.