Contrast Color View Code
I'm looking to use this type of color contrast logic within TailwindCSS. Ideally it would be a .text-contrast
class that 'enables' a CSS var that is auto applied to every .bg-color
.bg-black { --tw-bg-opacity: 1; --tw-fg-contrast: #FFF; background-color: rgba(0,0,0,var(--tw-bg-opacity)); } .text-contrast { color: var(--tw-fg-contrast); }
So, you would have the option to use an auto contrast for accessibility. If anyone can help build a TailwindCSS plugin to do this, I would be most grateful.
Here's the partial jQuery plugin I Frankenstein'd together that I've been using:
$.fn.contrastColor = function(target){ return this.each(function(){ var target = target; if(target === undefined){ target = this; } var bg = $(this).css('background-color'); // use first opaque parent bg if element is transparent if(bg == 'transparent' || bg == 'rgba(0, 0, 0, 0)'){ $(this).parents().each(function(){ bg = $(this).css('background-color') if(bg != 'transparent' && bg != 'rgba(0, 0, 0, 0)') return false; }); // exit if all parents are transparent if(bg == 'transparent' || bg == 'rgba(0, 0, 0, 0)') return false; } // get r,g,b and decide var rgb = bg.replace(/^(rgb|rgba)\(/,'').replace(/\)$/,'').replace(/\s/g,'').split(','); var yiq = (rgb[0]*0.2126)+(rgb[1]*0.7152)+(rgb[2]*0.0722); // if light if(yiq >= 128) $(target).addClass('text-gray-900'); // if dark else $(target).addClass('text-white'); }); }; $(function(){ $('.text-contrast').contrastColor(); });
Demo of the jQuery Plugin
Nested