color
dark
contrast

背景色に対して文字色は白か黒か、判定する。

コントラストによって判定する。

https://www.w3.org/TR/AERT/#color-contrast

is.dark(hex);
let is={}
;
is.dark=(d)=>{
 //https://www.w3.org/TR/AERT/#color-contrast 
 let c=d,f=(c)=>{return ((c[0] * 299 + c[1] * 587 + c[2] * 114) / 1000)}
 if(c.charAt(5)=='') return; 
 c=c.replace('#','').match(/.{2}/g).map(d=>parseInt(d,16))
 return (f(c)<128)
}

全部

<input></input><label>is.dark(hexColor)</label>
<style>
label{padding:0 0.5rem}
.white{color:#fff}
.black{color:#000} 
</style>
let fn={},is={}
fn.q=(d=>document.querySelector(d))
;
is.dark=(d)=>{
 //https://www.w3.org/TR/AERT/#color-contrast 
 let c=d,f=(c)=>{return ((c[0] * 299 + c[1] * 587 + c[2] * 114) / 1000)}
 if(c.charAt(5)=='') return; 
 c=c.replace('#','').match(/.{2}/g).map(d=>parseInt(d,16))
 return (f(c)<128)
}
;
fn.q('input').oninput=function(ev){
 let c=this.value,el=fn.q('label')
 el.style.backgroundColor=c;
 let cls=is.dark(c)?'white':'black';
 el.classList.remove('black')
 el.classList.remove('white') 
 el.classList.add(cls)
}