css+js实现色彩理论展示代码

代码语言:html

所属分类:其他

代码描述:css+js实现色彩理论展示代码,可设置色彩参数来展示不同的色彩形成。

代码标签: css+js 色彩 理论 展示 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
  
  
<style>
:where(.ui-color-palette) {
  --h: 200deg;
  --s: 100%;
  --l: 50%;

  display: grid;
  font-family: ui-sans-serif, system-ui, sans-serif;
  row-gap: 1ch;

  & fieldset {
    border: 1px solid ButtonFace;
    border-radius: .5ch;
    display: flex;
    flex-wrap: wrap;
    font-size: smaller;
    gap: 1ch;
    inline-size: max-content;
  }

  & label {
    background: color-mix(in srgb, Canvas, CanvasText 5%);
    border-radius: .5ch;
    grid-template-columns: 1fr;
    padding: 0 .66ch;
    text-align: center;
    user-select: none;
    &:has([type=radio]:checked) {
      background: hsl(190, 75%, 40%);
      color: #FFF;
    }
  }

  & [type=color] {
    all: unset;
    appearance: none;
    aspect-ratio: 1;
    background: 
    var(--_g, conic-gradient(
      hsl(var(--h) var(--s) var(--l1, 90%)) 0 30deg,
      hsl(calc(var(--h) + 30deg) var(--s) var(--l2, 90%)) 0 60deg,
      hsl(calc(var(--h) + 60deg) var(--s) var(--l3, 90%)) 0 90deg,
      hsl(calc(var(--h) + 90deg) var(--s) var(--l4, 90%)) 0 120deg,
      hsl(calc(var(--h) + 120deg) var(--s) var(--l5, 90%)) 0 150deg,
      hsl(calc(var(--h) + 150deg) var(--s) var(--l6, 90%)) 0 180deg,
      hsl(calc(var(--h) + 180deg) var(--s) var(--l7, 90%)) 0 210deg,
      hsl(calc(var(--h) + 210deg) var(--s) var(--l8, 90%)) 0 240deg,
      hsl(calc(var(--h) + 240deg) var(--s) var(--l9, 90%)) 0 270deg,
      hsl(calc(var(--h) + 270deg) var(--s) var(--l10, 90%)) 0 300deg,
      hsl(calc(var(--h) + 300deg) var(--s) var(--l11, 90%)) 0 330deg,
      hsl(calc(var(--h) + 330deg) var(--s) var(--l12, 90%)) 0 360deg
    ));
    border-radius: 50%;
    container-type: inline-size;
    display: grid;
    place-content: center;
    place-items: center;
    rotate: -15deg;
    width: 100%;
  }

  /* All */
  &:has([value=all]:checked) {
    --l1: var(--l);
    --l2: var(--l);
    --l3: var(--l);
    --l4: var(--l);
    --l5: var(--l);
    --l6: var(--l);
    --l7: var(--l);
    --l8: var(--l);
    --l9: var(--l);
    --l10: var(--l);
    --l11: var(--l);
    --l12: var(--l);
  }

  /* Primary */
  &:has([value=primary]:checked) {
    --l1: var(--l);
  }

  /* Complimentary */
  &:has([value=complimentary]:checked) {
    --l1: var(--l);
    --l7: var(--l);
  }

  /* Analogous */
  &:has([value=an1]:checked) { --l1: var(--l); --l2: var(--l); --l3: var(--l); }
  &:has([value=an2]:checked) { --l2: var(--l); --l3: var(--l); --l4: var(--l); }
  &:has([value=an3]:checked) { --l3: var(--l); --l4: var(--l); --l5: var(--l);  }
  &:has([value=an4]:checked) { --l4: var(--l); --l5: var(--l); --l6: var(--l); }
  &:has([value=an5]:checked) { --l5: var(--l); --l6: var(--l); --l7: var(--l); }
  &:has([value=an6]:checked) { --l6: var(--l); --l7: var(--l); --l8: var(--l); }
  &:has([value=an7]:checked) { --l7: var(--l); --l8: var(--l); --l9: var(--l); }
  &:has([value=an8]:checked) { --l8: var(--l); --l9: var(--l); --l10: var(--l); }
  &:has([value=an9]:checked) { --l9: var(--l); --l10: var(--l); --l11: var(--l); }
  &:has([value=an10]:checked) { --l10: var(--l); --l11: var(--l); --l12: var(--l); }
  &:has([value=an11]:checked) { --l11: var(--l); --l12: var(--l); --l1: var(--l); }
  &:has([value=an12]:checked) { --l12: var(--l); --l1: var(--l); --l2: var(--l); }

  /* Shades */
  &:has([value=shades]:checked) {
    --_g: conic-gradient(
      hsl(var(--h) var(--s) var(--l)) 0deg 30deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 8.18%) 30deg 60deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 16.36%) 60deg 90deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 24.54%) 90deg 120deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 32.72%) 120deg 150deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 40.90%) 150deg 180deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 49.09%) 180deg 210deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 57.27%) 210deg 240deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 65.45%) 240deg 270deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 73.63%) 270deg 300deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 81.81%) 300deg 330deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #000 90%) 330deg 360deg
    );
  }

  /* Split Complimentary */
  &:has([value=split]:checked) {
    --l1: var(--l);
    --l6: var(--l);
    --l8: var(--l);
  }

  /* Square */
  &:has([value=squ1]:checked) { --l1: var(--l); --l4: var(--l); --l7: var(--l); --l10: var(--l); }
  &:has([value=squ2]:checked) { --l2: var(--l); --l5: var(--l); --l8: var(--l); --l11: var(--l); }
  &:has([value=squ3]:checked) { --l3: var(--l); --l6: var(--l); --l9: var(--l); --l12: var(--l); }

  /* Tetratic */
  &:has([value=tet1]:checked) { --l1: var(--l); --l3: var(--l); --l7: var(--l); --l9: var(--l); }
  &:has([value=tet2]:checked) { --l2: var(--l); --l4: var(--l); --l8: var(--l); --l10: var(--l); }
  &:has([value=tet3]:checked) { --l3: var(--l); --l5: var(--l); --l9: var(--l); --l11: var(--l); }
  &:has([value=tet4]:checked) { --l4: var(--l); --l6: var(--l); --l10: var(--l); --l12: var(--l); }
  &:has([value=tet5]:checked) { --l5: var(--l); --l7: var(--l); --l11: var(--l); --l1: var(--l); }
  &:has([value=tet6]:checked) { --l6: var(--l); --l8: var(--l); --l12: var(--l); --l2: var(--l); }
  
  /* Tints */
  &:has([value=tints]:checked) {
    --_g: conic-gradient(
      hsl(var(--h) var(--s) var(--l)) 0deg 30deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 8.18%) 30deg 60deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 16.36%) 60deg 90deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 24.54%) 90deg 120deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 32.72%) 120deg 150deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 40.90%) 150deg 180deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 49.09%) 180deg 210deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 57.27%) 210deg 240deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 65.45%) 240deg 270deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 73.63%) 270deg 300deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 81.81%) 300deg 330deg,
      color-mix(in srgb, hsl(var(--h) var(--s) var(--l)), #fff 90%) 330deg 360deg
    );
  }

  /* Overlay */
  &:has([value=ovshades]:checked) { --_o: 0%; }
  &:has([value=ovtints]:checked) { --_o: 100%; }
  &:has([value=ovshades]:checked),
  &:has([value=ovtints]:checked) {
    & [type=color]::after {
      border-radius: 50%;
      content: "";
      display: block;
      aspect-ratio: 1;
      background: radial-gradient(
        circle at center,
        hsla(0, 0%, var(--_o), .9) 0 5cqi,
        hsla(0, 0%, var(--_o), .8) 5cqi 10cqi,
        hsla(0, 0%, var(--_o), .7) 10cqi 15cqi,
        hsla(0, 0%, var(--_o), .6) 15cqi 20cqi,
        hsla(0, 0%, var(--_o), .5) 20cqi 25cqi,
        hsla(0, 0%, var(--_o), .4) 25cqi 30cqi,
        hs.........完整代码请登录后点击上方下载按钮下载查看

网友评论0