Se il supporto IE7-8 non è necessario, è possibile utilizzare :not()
CSS selector.
Ma se hai bisogno di supportare IE7 +, che potrebbe essere ancora il caso, c'è un piccolo trucco che puoi usare e di solito ti allontana abbastanza. Un fatto meno noto è che il selettore psuedo :first-child
funziona in realtà in IE7 + (non :last-child
) come lo è some other css selectors e questo rende possibile l'aggiunta di margini verticali in un layout fluttuato orizzontalmente.
Immaginate questo html:
<ul>
<li>Item #1</li>
<li>Item #2</li>
<li>Item #3</li>
<li>Item #4</li>
</ul>
E questo come alcuni CSS:
/* General reset */
ul, li { list-type: none; margin: 0; padding: 0; }
/* Make horizontal */
ul > li { float: left; }
Così ora tutti gli elementi della lista sono orizzontalmente uno accanto all'altro, e ora vogliamo aggiungere un margine nel TRA tutte le voci, ma non sul lato destro o sinistro, siamo in grado di fare questo in css:
/* General reset */
ul, li { list-type: none; margin: 0; padding: 0; }
/* Make horizontal */
ul > li { float: left; margin-left: 10px; }
ul > li:first-child { margin-left: 0; }
questo di solito copre s il 95% dei casi in cui voglio qualcosa di unico, quindi il resto dello 'forgotten' selectors cover another few percent, dopo di che è necessario aggiungere alcune classi che di solito non sono un collo di bottiglia in ogni caso nel back-end della pagina.
Penso che la soluzione più comune è quella di applicare gli stili a tutto ciò poi rimuovere quelli indesiderati selezionando la prima e l'ultima a farlo. – kinakuta
Usa il selettore ': not': http://jsfiddle.net/FGfmj/ –