颜色取值工具

一个简单的颜色取值工具的实现。这个工具允许用户输入颜色代码(如十六进制或RGB),并实时显示所选颜色的预览。此外,还提供了从预定义颜色列表中选择颜色的功能。

代码说明:

  1. HTML结构
  • 包含标题、颜色预览区域、颜色输入框和预定义颜色列表。
  1. CSS样式
  • 设置了整体布局、颜色、间距等,使页面美观且易于阅读。
  • 颜色预览区域设置了边框和圆角。
  • 输入框和颜色列表项设置了样式,使其更具吸引力。
  1. JavaScript逻辑
  • 定义了一个预定义的颜色列表。
  • 获取DOM元素并初始化颜色预览。
  • 监听颜色输入框的变化,验证输入的有效性并更新颜色预览。
  • 创建预定义颜色项,并添加点击事件以更新颜色预览和输入框。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>颜色取值工具</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background-color: #f0f2f5;
      margin: 0;
      padding: 20px;
      display: flex;
      flex-direction: column;
      align-items: center;
    }
    .container {
      width: 80%;
      max-width: 600px;
      background-color: white;
      padding: 20px;
      border-radius: 16px;
      box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
      text-align: center;
    }
    .color-preview {
      width: 100%;
      height: 100px;
      margin: 20px 0;
      border: 1px solid #ccc;
      border-radius: 8px;
    }
    .input-group {
      margin-bottom: 20px;
    }
    .input-group label {
      display: block;
      margin-bottom: 5px;
      font-weight: bold;
    }
    .input-group input {
      width: calc(100% - 22px);
      padding: 10px;
      border: 1px solid #ccc;
      border-radius: 4px;
      font-size: 16px;
    }
    .color-list {
      display: flex;
      justify-content: space-around;
      flex-wrap: wrap;
    }
    .color-item {
      width: 40px;
      height: 40px;
      margin: 5px;
      border-radius: 8px;
      cursor: pointer;
      transition: transform 0.2s ease;
    }
    .color-item:hover {
      transform: scale(1.1);
    }
  </style>
</head>
<body>
  <div class="container">
    <h2>颜色取值工具</h2>
    <div class="color-preview" id="color-preview"></div>

    <div class="input-group">
      <label for="color-input">输入颜色代码 (例如 #ffcccb 或 rgb(255, 204, 203)):</label>
      <input type="text" id="color-input" placeholder="#ffcccb">
    </div>

    <div class="color-list" id="color-list"></div>
  </div>

  <script>
    // 预定义的颜色列表
    const predefinedColors = [
      '#ffcccb', '#ffb6c1', '#faebd7', '#ffe4e1', '#fff0f5',
      '#ffefd5', '#ffdab9', '#ffd700', '#ffffe0', '#fffacd',
      '#fafad2', '#ffe4b5', '#ffdead', '#f8f8ff', '#ffe4c4',
      '#ffa07a', '#ff6347', '#ff4500', '#ff8c00', '#ffa500'
    ];

    // 获取DOM元素
    const colorPreview = document.getElementById('color-preview');
    const colorInput = document.getElementById('color-input');
    const colorList = document.getElementById('color-list');

    // 初始化颜色预览
    function updateColorPreview(color) {
      colorPreview.style.backgroundColor = color;
    }

    // 处理颜色输入变化
    colorInput.addEventListener('input', () => {
      const color = colorInput.value;
      if (isValidColor(color)) {
        updateColorPreview(color);
      } else {
        alert('请输入有效的颜色代码');
      }
    });

    // 检查颜色代码是否有效
    function isValidColor(color) {
      const s = new Option().style;
      s.color = color;
      return s.color !== '';
    }

    // 创建预定义颜色项
    predefinedColors.forEach(color => {
      const colorItem = document.createElement('div');
      colorItem.className = 'color-item';
      colorItem.style.backgroundColor = color;

      // 点击颜色项时更新颜色预览和输入框
      colorItem.addEventListener('click', () => {
        colorInput.value = color;
        updateColorPreview(color);
      });

      colorList.appendChild(colorItem);
    });
  </script>
</body>
</html>

No responses yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注