当前位置: 首页 > news >正文

蓝桥杯Web前端练习-----渐变色背景生成器

介绍
相信做过前端开发的小伙伴们对渐变色在 UI 设计中的流行度一定不陌生,网页上也时常可以看到各类复杂的渐变色生成工具。使用原生的 CSS 变量加一些 JS 函数就能做出一个简单的渐变色背景生成器。

现在渐变色生成器只完成了颜色选取的功能,需要大家帮忙把取色器中的两个色值通过 JS 函数更新给 CSS 变量,从而实现渐变色预览功能。

准备
本题已经内置了初始代码,打开实验环境,目录结构如下:

├── index.html
├── index.js
└── styles.css

其中:

  • styles.css 是页面样式文件。
  • index.html 是页面布局结构。
  • index.js 是页面功能实现的 js 文件。
    选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。

接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果:
在这里插入图片描述
目标
目前的色块和渐变色背景为初始值且不会自动更新。

请大家根据 index.js 文件中的提示和要求添加所需的 JavaScript 代码,让色块的输入值对应到渐变色背景中,并且在更改色块颜色之后,渐变色背景也会随之改变

html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="styles.css" />
    <title>Gradient Generator</title>
  </head>
  <body>
    <div class="controls">
      <input id="color1" type="color" name="color1" value="#00dbde" />
      <input id="color2" type="color" name="color2" value="#fc00ff" />
    </div>
    <div class="gradient"></div>
    <script src="index.js"></script>
  </body>
</html>

css


/* 注意这里定义的 CSS 变量,它们会用于生成渐变色背景 */
:root {
  --color1: #00dbde;
  --color2: #fc00ff;
}

body {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #222;
}

.controls {
  width: 500px;
  height: 100px;
  display: flex;
  justify-content: space-between;
}

input[type="color"] {
  -webkit-appearance: none;
  border: none;
  width: 60px;
  height: 60px;
  border-radius: 5px;
}

input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 0;
  margin: 0;
}

input[type="color"]::-webkit-color-swatch {
  border: none;
  border-radius: 5px;
  transform: scale(1.1);
}

.gradient {
  width: 500px;
  height: 500px;
  border-radius: 5px;
  background: linear-gradient(45deg, var(--color1), var(--color2));
}

js

const inputs = document.querySelectorAll(".controls input");

/**
 * 上面已经选取了两个取色器
 * 请添加相应的 JS 事件处理函数并绑定到合适的事件监听器上(提示:change 事件)
 * 这样我们就可以用取色器选取颜色来生成下方的渐变色背景啦
 *  */
 

知识点
setProperty() 方法:用于设置一个新的 CSS 属性,同时也可以修改 CSS 声明块中已存在的属性。
object.setProperty(propertyname, value, priority)

  1. propertyname 必需。一个字符串,表示创建或修改的属性。
  2. value 可选,新的属性值。
  3. priority 可选。字符串,规定是否需要设置属性的优先级 important。
    • 可以是下面三个值:
      • “important”
      • undefined
      • “”

答案

const inputs = document.querySelectorAll(".controls input");

/**
 * 上面已经选取了两个取色器
 * 请添加相应的 JS 事件处理函数并绑定到合适的事件监听器上(提示:change 事件)
 * 这样我们就可以用取色器选取颜色来生成下方的渐变色背景啦
 *  */
 const  root = document.querySelector(":root");
 for(let i = 0; i < inputs.length; i++)
 {
     inputs[i].addEventListener('change',function(){
         root.style.setProperty("--color" + (i + 1), this.value);
     })
 }

相关文章:

  • 区块链基本原理
  • Redis单线程还是多线程?IO多路复用原理
  • Element table组件内容\n换行解决办法
  • Day14 文件操作
  • 【百面成神】Redis基础11问,你能坚持到第几问
  • 配置IDEA自带Maven插件的镜像源
  • 简介虚拟地址空间:保障进程间独立性的机制
  • 【剑指offer】旋转数组的最小数字
  • 手写一个简单的RPC框架
  • 如何创建和编写项目管理计划?
  • 算法设计与分析 实验五 贪心算法
  • 正式环境关闭swagger
  • 动态内存的开辟
  • 【分布式版本控制系统Git】| IDEA 集成 Git 、IDEA 集成 GitHub
  • C语言指针链表
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • android图片蒙层
  • emacs初体验
  • Hibernate最全面试题
  • Linux下的乱码问题
  • mockjs让前端开发独立于后端
  • mysql常用命令汇总
  • Objective-C 中关联引用的概念
  • React-redux的原理以及使用
  • vue-router 实现分析
  • 番外篇1:在Windows环境下安装JDK
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 看域名解析域名安全对SEO的影响
  • 深入浅出webpack学习(1)--核心概念
  • 温故知新之javascript面向对象
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 阿里云移动端播放器高级功能介绍
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (分布式缓存)Redis持久化
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一) storm的集群安装与配置
  • .NET delegate 委托 、 Event 事件
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET中统一的存储过程调用方法(收藏)
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [1127]图形打印 sdutOJ
  • [20140403]查询是否产生日志
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [BSGS算法]纯水斐波那契数列
  • [BZOJ 1040] 骑士
  • [Django开源学习 1]django-vue-admin
  • [i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明
  • [javascript]Tab menu实现
  • [JavaWeb学习] Spring Ioc和DI概念思想