2012-03-03 23 views
5

¿Hay alguna forma de establecer el color bg de un elemento en un lugar y manipular su opacidad en otro lugar?¿Separación de color de fondo y opacidad?

Sé que esto se puede hacer con PNG transparentes o algunos DIV apilados, pero no puedo usar estas opciones (no pierda el tiempo sugiriéndolas).

Archivo CSS Un

#menubar { 
background-color: #036564; 
} 

CSS Archivo B

#menubar { 
background-color-opacity: 0.5; /* idea 1 */ 
background-color: rgba(inherit, inherit, inherit, 0.5); /* idea 2 */ 
} 
+0

por qué quiere separada opacidad del color de fondo. Donde rgba es la mejor solución – sandeep

+0

@sandeep: la idea aquí es que especifica los valores RGB en un archivo, y no quiere repetirlos en otro archivo con el valor A. – BoltClock

+0

@sandeep: esta característica es deseable si necesita establecer la opacidad de fondo de los elementos de forma dinámica mediante JavaScript, pero no desea tener valores de color en su código JavaScript (donde ciertamente no pertenecen). – Jack

Respuesta

5

Actualmente no es posible especificar los componentes de color parciales y tienen el resto de los valores de heredar o en cascada en el CSS.

Si necesita especificar un color con un valor alfa, deberá proporcionar sus valores RGB o HSL junto con el alfa, ya que los únicos valores de color que le permiten especificar un componente alfa son rgba() y hsla(). No puede especificar el alfa independientemente de los otros componentes de color.

Consulte el CSS3 Color Module para obtener más información.

+0

Gracias, lo sabía, pero pensé que había algo de magia de tesla;) Gracias por la corrección ortográfica también. – Mike

0

En realidad, puede dividir los dos: background-color y opacity, pero en este caso opacity se aplica a todo el elemento, no solo al color de fondo.

http://jsfiddle.net/tUHdv/

En el ejemplo jsFiddle, observe cómo las letras en cuadrado azul vuelven ligeramente rojo.

NOTA: Esta respuesta se agregó para aclarar que puede usar ambas propiedades juntas, excepto que afecta más que background-color.

+0

gracias, pero como dijo, la opacidad se aplica a todo el elemento. – Mike

2

Si usa Sass puede definir una variable para el color rgb, y luego insertarla en un color rgba, especificando solo el componente de transparencia alfa.

$base-color: rgb(200,150,100); 

a { 
    color: rgba($base-color, .7); 
} 

conocer en https://robots.thoughtbot.com/controlling-color-with-sass-color-functions

+0

Si bien la pregunta no es sobre "Sass" en absoluto, su respuesta no está en el lugar correcto aquí ... De todos modos +1 de mí por tomarse el tiempo! Bienvenido a SO - es un placer tenerte. – Axel