La caratteristica che stai cercando è filter. È in grado di eseguire una serie di effetti di immagine, inclusa la luminosità:
#myimage {
filter: brightness(50%);
}
Puoi trovare un articolo utile a riguardo qui: http://www.html5rocks.com/en/tutorials/filters/understanding-css/
Un altro: http://davidwalsh.name/css-filters
E, soprattutto, le specifiche W3C: https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
Nota che questo è qualcosa che solo di recente è entrato nei CSS come funzionalità. E 'disponibile, ma un gran numero di browser là fuori non lo sosterrà ancora, e quelli che lo fanno sostegno sarà necessario un prefisso di fornitore (ad esempio -webkit-filter:, -moz-filterecc).
È anche possibile filtrare effetti come questo usando SVG. Il supporto SVG per questi effetti è ben consolidato e ampiamente supportato (le specifiche del filtro CSS sono state prese dalle specifiche SVG esistenti)
Si noti inoltre che questo non deve essere confuso con lo filterstile proprietario disponibile nelle vecchie versioni di IE (anche se posso prevedere un problema con l'interferenza dello spazio dei nomi quando il nuovo stile elimina il prefisso del fornitore).
Se niente di tutto ciò funziona per te, puoi comunque utilizzare la opacityfunzionalità esistente , ma non nel modo in cui pensi: crea semplicemente un nuovo elemento con un colore scuro solido, posizionalo sopra la tua immagine e sfumalo usando opacity. L'effetto sarà dell'immagine dietro l'oscuramento.
Finalmente puoi controllare il supporto del browser filter qui .