2011-01-03 17 views
7

Ho più elementi HTML. Usano stili CSS molto simili. L'unica differenza è lo stile del bordo (un elemento ha tutto tranne il bordo sinistro, un altro tutto tranne destra ecc.).più elementi con css simile

Finora, ho creato diversi stili diversi con una sola riga di codice diversa. Quello ha seriamente gonfiato il mio file css. C'è una soluzione migliore al mio problema? C'è qualche tipo di eredità che potrei usare?

risposta

5

Ci sono molti modi per raggiungere tale.

  1. Utilizzare più selettori:

    selector #1, selector #2, selector #3 { 
        /* common styles */ 
    } 
    selector #1 { border-left: none; } 
    selector #2 { border-right: none; } 
    selector #3 { border-top: none; } 
    
  2. A seconda della struttura del documento si può provare qualcosa di simile:

    <ul> 
        <li>Element #1</li> 
        <li>Element #2</li> 
        <li>Element #3</li> 
    </ul> 
    
    
    ul li { 
        /* common styles */ 
    } 
    ul li:first-child { border-left: none; } 
    ul li:last-child { border-right: none; } 
    
  3. Utilizzare le classi multiple:

    <ul> 
        <li class="border no-left">Element #1</li> 
        <li class="border">Element #2</li> 
        <li class="border no-right">Element #3</li> 
    </ul> 
    
    
    .border { 
        /* common styles */ 
    } 
    .border.no-left { border-left: none; } 
    .border.no-right { border-right: none; } 
    
+0

Bello, grazie! Ma cosa succede quando ho qualcosa del genere: input [type = button]: passa il mouse simile a qualcosa del genere: input [type = button] ??? – johan

+0

@johan Questo è il primo caso nella risposta sopra: utilizzare le virgole per separare selettori multipli, arbitrariamente complessi e assegnarli allo stesso stile. Nota che credo che [questo sia appropriato solo quando esiste una relazione semantica] (http://phrogz.net/CSS/HowToDevelopWithCSS.html#groupstyles) tra gli elementi selezionati. _ (Oppure se sei ** disperato ** per salvare pochi byte.) _ – Phrogz

+0

': pseudoclass' hover' può essere interpretato come "** extra ** stili per l'elemento indicato", quindi 'input [tipo = pulsante] { common-styles} input [type = button]: hover {styles-styles} ' – Crozin

4

È possibile dichiarare un elemento con più classi

<div class="general-class left-border-class"></div> 
<div class="general-class top-border-class"></div> 
... 
3

CSS

.border { 
    border: solid #555 2px; 
    width: 100px; 
    height: 100px; 
    } 
    .border.left { 
     border-width: 0 2px 0 0; 
     } 
    .border.right { 
     border-width: 0 0 0 2px; 
     } 

HTML

<div class="border left"></div> 
<div class="border"></div> 
<div class="border right"></div> 
0

In questo scenario particolare - in cui si dispone di elementi con diversi stili di confine - si può usare la pseudo-classe :first-child.

Demo online:http://jsfiddle.net/7WJe9/1/

Problemi correlati