2010-02-12 9 views
5

Así que digamos que he lo siguiente en 'foo.css':¿Puedo incluir una definición de css en otra definición de css?

.border { border : solid 1px; } 
#foo { color : #123; } 
#bar { color : #a00; } 

Ahora vamos a decir que tengo dos divs que quiero fronteras para, por lo que:

<div id="foo" class="border">Foo</div> 
<div id="bar" class="border">Bar</div> 

Esto funciona bien , pero me parece que la hora de definir y #foo #bar en mi archivo css, prefiero darles las características de .border de dar el div es la clase, así:

.border { border : solid 1px; } 
#foo { 
    <incantation to inherit from .border> 
    color : #123; 
} 
#bar { 
    <incantation to inherit from .border> 
    color : #a00; 
} 

y luego mi html wo uld simplemente sea:

<div id="foo">Foo</div> 
<div id="bar">Bar</div> 

¿Alguien sabe qué es ese conjuro mágico?

Respuesta

1

Usted podría estar interesado en mixins with Sass. Sass te permite escribir hojas de estilo CSS de una manera más eficiente, usando trucos como este. Mixins le permite definir un grupo de atributos (por ejemplo, para hacer con los bordes) y luego incluir esos atributos dentro de ciertas clases de css.

+0

Hmmm, interesante. Ya estoy usando haml así que usar sass para mis cosas css sería un siguiente paso natural y resolver esta carencia particular de css. ¡Gracias a cada uno de ustedes por su respuesta! – ynkr

7

Eso no es compatible con css. Lo mejor que puede hacer es algo así como:

#foo, #bar, .border { border : solid 1px; } 
#foo { color : #123; } 
#bar { color : #a00; } 
+2

Fuera de tema, yo agregaría que al usar la abreviatura 'border', el orden correcto de los valores es' border-width', luego 'border-style', luego' border-color'. Por lo tanto, 'border: solid 1px' es CSS no válido, debe ser' border: 1px solid'. En este momento, los navegadores son muy indulgentes con los errores de este tipo, pero eso no es algo en lo que confiar indefinidamente. –

+0

Buen punto, simplemente copié los estilos de OP sin modificar las reglas reales. – wsanville

+0

No puedo hacer realmente la cosa # foo, # bar, .border {border: solid 1px} ya que la definición real que quiero está en un archivo css de jquery-ui Estoy conectando en caliente y por eso necesitaba la solución resaltado arriba. Gracias por la respuesta, es útil saber que no se puede hacer. Además, no sabía sobre el asunto de la orden de frontera. Gracias. – ynkr

0

Como dijo Wsanville, no puede usar la clase. Pero normal de la herencia CSS funciona - dijo si su html fue

<div class="border"> 
    <div id="foo"> 
     hello 
    </div> 
    <div id="bar"> 
     world 
    </div> 
</div> 

Se podría decir

.border {border: 1px solid #f00;} 
#foo {border:inherit;} 

que en algunos casos podría ser lo suficientemente bueno

0

Si usted está mirando para empujar a su Además, en lugar de utilizar algunos de los trucos descritos en las publicaciones anteriores, CSS debe buscar en los compiladores de CSS. Toman el código tipo CSS que has escrito, generalmente CSS con algunos trucos agregados, y los convierten en CSS normales para la web.

David Ziegler escribió acerca de algunas de las frescas compiladores CSS ofrecido ofrecen:

  • variables - Los buenos programadores no les gusta a codificar. En muchos casos puede evitar esto en CSS usando una buena herencia, pero a veces es inevitable. Con las variables, cambiar su combinación de colores significa actualizar una variable en lugar de 13 atributos.

  • Matemáticas - Esto va de la mano con las variables. Supongamos que su columna de la izquierda es de 100 px, su columna de la derecha es de 500 px y su div de envoltura es de 600 px. Bueno, tal vez decidas cambiarlo a 960px. ¿No sería maravilloso si el ancho de tus columnas se ajustara automáticamente? La respuesta es sí.

  • Estilos anidados - Este es probablemente el más importante. CSS es plano, lo que significa que los sitios complejos terminan con CSS que es un dolor por atravesar.

Usted puede leer acerca de los compiladores populares en su blog post on the subject, o hacer algunas búsquedas y encontrar uno que funcione mejor para usted.

Cuestiones relacionadas