2011-08-30 16 views
20

Sembra una domanda così stupida ma non riesco a trovare la risposta da nessuna parte.Impostare lo stesso valore su più proprietà (CSS)

C'è un modo per impostare più proprietà CSS per un valore

border-left, border-right: 1px solid #E2E2E2; 

il modo in cui si può fare con i selettori?

.wrapper, .maindiv { ... } 
+2

No, ma [SASS] (http://sass-lang.com /) le variabili possono farti avvicinare. Vieni a pensarci, dovresti proporlo per la prossima versione di SASS. Peggio può succedere che la tua idea venga respinta. –

+0

buona chiamata, ho scritto a lesscss invece –

risposta

14

No. Ma per il tuo esempio, si può fare questo:

border: solid #E2E2E2; 
border-width: 0 1px; 

Gli attributi in cui ci possono essere valori separati per alto, a destra, in basso, e se ne andò (ad esempio, border-*, margini, padding) di solito può essere combinati in un singolo attributo.

+5

Congratulazioni, la tua risposta è la più efficiente di 5 byte –

4

Non è possibile, a meno che non si fa:

border: 1px solid #E2E2E2; 

..che imposta lo stesso confine su tutti i lati. Se vuoi controllarli individualmente, devi scriverli come dichiarazioni separate.

Si noti che in alcuni casi, è possibile impostare più valori per un attributo, ma non è possibile avere più attributi con un valore in un'istruzione.

4

Non possibile con semplice css, ma è possibile dare un'occhiata a scss o less che potrebbero avere soluzioni per il tuo problema.

Una soluzione con i CSS semplice è il seguente:

border: 1px solid #E2E2E2; 
border-width: 0px 1px; 
+0

Ho visto prima un po '. Non è un problema enorme, ero solo curioso :) grazie. –

2

Se gli attributi sono legati, come è il caso con border-left e border-right, c'è di solito è un attributo comune che permette di impostare loro:

Dall'altro lato, ci sono alcune librerie come Less CSS che estendono i CSS in modo da poter facilmente raggruppare proprietà e attributi correlati.

1

CSS non consente tale controllo. Una soluzione alternativa consiste nell'utilizzare una regola più grande, quindi limitarla:

border: 1px solid #E2E2E2; 
border-top: 0; 
border-bottom: 0; 

Ma si finisce con altro codice. Un'altra soluzione è quella di utilizzare i CSS "compilatore", come SASS o Less

2

Se stai usando sass, provate questo:

@mixin border($properties , $value){ 
    @each $property in $properties{ 
     border-#{$property}: $value; 
    } 
} 

selector{ 
    @include border(left right, 1px solid #E2E2E2); 
} 
Problemi correlati