js实现贝塞尔曲线可视化调节hsl颜色效果代码

代码语言:html

所属分类:其他

代码描述:js实现贝塞尔曲线可视化调节hsl颜色效果代码

代码标签: js 贝塞尔 曲线 可视化 调节 hsl 颜色

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

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

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

  <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Sometype+Mono:ital,wght@0,400..700;1,400..700&display=swap" rel="stylesheet">
  <link rel="stylesheet" href="https://public.codepenassets.com/css/normalize-5.0.0.min.css">

  
  
<style>
@charset "UTF-8";
:root {
  --maxw: 20rem;
}

body {
  margin: 0;
  padding: 2rem;
  background-color: #fff;
  color: #202126;
}

body.inverted-lightness {
  background-color: #000;
  color: #fff;
}
body.inverted-lightness input {
  accent-color: #fff;
}

input {
  accent-color: #202126;
}

body, select, option, button {
  font-family: "Sometype Mono", monospace;
  font-optical-sizing: auto;
  font-style: normal;
  color: inherit;
}

select {
  text-align: right;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: none;
  outline: none;
  text-decoration: underline;
  cursor: pointer;
  padding-right: 5.25ch;
  margin-right: -2.25ch;
  background: transparent;
  color: inherit;
}

select:hover {
  text-decoration: none;
}

select + i {
  pointer-events: none;
}

select + i::before {
  content: "▼";
}

.container {
  max-width: 34rem;
  margin: 0 auto;
}

@media (orientation: landscape) {
  .container {
    max-width: 50rem;
    display: flex;
    align-items: center;
  }
}
.canvas-container {
  position: relative;
  width: 100%;
  aspect-ratio: 1;
  margin-bottom: 1rem;
  cursor: -webkit-grab;
  cursor: grab;
}

.dragging .canvas-container {
  cursor: -webkit-grabbing;
  cursor: grabbing;
}

canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  touch-action: none;
}

.controls {
  max-width: var(--maxw);
  margin: 0 auto 2rem;
}
.controls span {
  padding-right: 0.25em;
  min-width: 13ch;
}
.controls strong {
  display: inline-block;
  min-width: 3.25ch;
  text-align: right;
}

.control-label {
  display: flex;
  gap: 1ch;
  font-size: 0.8rem;
  justify-content: space-between;
  border: 1px solid #e0e0e0;
  padding: 1.25rem;
}
.control-label div {
  display: flex;
  gap: 0.5rem;
}
.control-label input[type=range],
.control-label select {
  flex: 1 1 auto;
}

.control-label + .control-label {
  margin-top: -1px;
}

.color-strip {
  height: 1rem;
  max-width: calc(var(--maxw) - 2px);
  margin: 0 auto -1px;
  border: 1px solid #e0e0e0;
}

abbr[title] {
  text-decoration: none;
}
</style>

  
  
</head>

<body translate="no">
  <article class="container">
  <div class="canvas-container" id="canvasContainer">
    <canvas id="canvas"></canvas>
  </div>
  <aside class="controls" aria-label="controls">
    <div class="color-strip" id="colorStrip"></div>
    <label class="control-label">
      <span>Colors</span>
      <input type="range" data-state="numColorStops" data-type="int" min="3" max="30" value="9">
      <strong data-label="numColorStops">9</strong>
    &l.........完整代码请登录后点击上方下载按钮下载查看

网友评论0