Ambient light sensors and CSS Media Queries
There’s no way to make designs responsive to ambient light variations in CSS today. This is strange, and I think it should change…
CSS Luminance Media Queries
Here’s my proposal:
@media (min-luminance: outdoors) {
/* adapt for bright envs */
}@media (max-luminance: 700lux) {
/* adapt for dim envs */
}
This would be the mapping of the default keywords (courtesy of Microsoft) :
CSS Name | Min light (lux) | Max light (lux) | Mean light (lux) |
black | 0 | 10 | 5 |
very-dark-indoors | 10 | 50 | 30 |
dark-indoors | 50 | 200 | 125 |
dim-indoors | 200 | 400 | 300 |
indoors | 400 | 1000 | 700 |
bright-indoors | 1000 | 5000 | 3000 |
dim-outdoors | 5000 | 10000 | 7500 |
cloudy-outdoors | 10000 | 30000 | 20000 |
outdoors | 30000 | 100000 | 65000 |
white | 100000 | infinity | infinity |
The exact mapping of the keywords would however not be normative, to allow user agents to accommodate them to the screen’s brightness. Brighter screens could probably shift the min/max values to left (triggering dim-indoors in darker environments than usual screens).
Conclusion
With CSS Transitions and the power of CSS Luminance Media Queries, making light-responsive user interface becomes possible and rather easy.