如何使用 HTML、CSS 和 JavaScript 随机更改图片颜色

原文:如何使用 HTML、CSS 和 JavaScript 随机更改图片颜色 | w3cschool笔记

(请勿标记为付费!!!!)

在网页开发中,为图片添加动态效果可以显著提升用户体验。今天,我将向大家介绍如何通过 HTMLCSSJavaScript 实现图片颜色的随机更改。这个教程不仅简单易懂,还能帮助你理解前端开发中的交互式设计原理。

方法一:使用 Math.random() 函数

示例代码

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>随机更改图片颜色 | 编程狮(w3cschool.cn)</title>
    <style>
        body {
            overflow: hidden; /* 隐藏溢出内容 */
        }
        #container {
            top: 0;
            width: 350px;
            height: 150px;
            position: absolute; /* 绝对定位 */
            mix-blend-mode: hue; /* 颜色混合模式 */
        }
        img {
            width: 200px;
            height: auto; /* 自动调整高度,保持宽高比 */
        }
        p {
            font-size: 20px;
            font-weight: bold;
            margin-left: 15px;
        }
    </style>
</head>
<body>
    <img src="https://atts.w3cschool.cn/images%2Fw3c%2F20220506-154940.png" alt="示例图片"> 
    <div id="container"></div>
    <p>点击图片更改颜色</p>
    <script>
        const divElement = document.getElementById("container"); // 获取容器元素
        function selectcolor() {
            return Math.floor(Math.random() * 255); // 生成 0 到 255 之间的随机整数
        }
        divElement.addEventListener('click', () => { // 添加点击事件监听器
            divElement.style.backgroundColor = 'rgba('
                + selectcolor() + ',' + selectcolor() // 设置随机背景颜色
                + ',' + selectcolor() + ')';
        });
    </script>
</body>
</html>

将代码复制至 > HTML在线编译器查看效果

代码解析

  1. HTML 部分

    • 使用 <img> 标签引入图片,并设置相应的 src 属性。
    • 创建一个 <div> 容器,用于应用颜色变化效果。
  2. CSS 部分

    • body 设置 overflow: hidden,以隐藏可能溢出的内容。
    • #container 设置绝对定位和尺寸,并应用 mix-blend-mode: hue 以实现颜色混合效果。
  3. JavaScript 部分

    • 使用 Math.random() 生成随机数,并通过 Math.floor() 将其转换为整数。
    • 为容器添加点击事件监听器,点击时随机更改背景颜色。

方法二:使用十六进制颜色代码

示例代码

复制代码
<!DOCTYPE html>
<html>
    <head>
        <title>随机更改图片颜色 | 编程狮(w3cschool.cn)</title>
        <style>
            body {
                background-color: paleturquoise; /* 设置背景颜色 */
            }
            .container {
                width: 75%;
                height: 100vh;
                display: flex;
                justify-content: center;
                align-items: center;
                text-align: center;
                margin: auto;
            }
            h3 {
                font-size: 18px;
                margin: 10px 20px 20px 10px;
                color: white;
            }
            .btn1 {
                padding: 2% 2%;
                border: none;
                border-radius: 4px;
                color: teal;
                font-size: 15px;
                cursor: pointer;
            }
            img {
                max-width: 100%; /* 图片最大宽度为容器宽度 */
                height: auto; /* 自动调整高度,保持宽高比 */
                border: 2px solid white; /* 添加边框 */
            }
            p {
                animation: hexcolors 5s infinite alternate; /* 添加动画效果 */
                font-size: 20px;
                font-weight: bold;
                color: navy;
            }
            @keyframes hexcolors { /* 定义动画关键帧 */
                0% { color: violet; }
                20% { color: indigo; }
                40% { color: blue; }
                60% { color: green; }
                80% { color: yellow; }
                100% { color: orangered; }
            }
            @media screen and (min-width: 992px) { /* 响应式设计 */
                .container { width: 100vw; margin: auto; }
                h2 { font-size: 30px; }
                .btn1 { padding: 2% 2%; margin: auto; font-size: 20px; font-weight: bold; }
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div>
              <p>点击按钮更改图片颜色。</p>
              <img src="https://atts.w3cschool.cn/images%2Fw3c%2F20220506-154940.png" alt="示例图片"> <!-- 替换为编程狮的图片 -->
              <h3>背景颜色为:# <span id="colorCode">0f5257</span></h3>
              <button onclick="changeColor()" class="btn1">生成颜色</button>
            </div>
          </div>
          <script>
              function changeColor() {
                let hexNumbers = [ // 定义十六进制颜色字符数组
                    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                    "A", "B", "C", "D", "F"
                ];
                let hexColorCode = ""; // 初始化颜色代码字符串
                for (let i = 0; i < 6; i++) { // 循环生成 6 位颜色代码
                    let randomIndex = Math.floor(Math.random() * hexNumbers.length);
                    hexColorCode += hexNumbers[randomIndex];
                }
                document.getElementById("colorCode").innerHTML = hexColorCode; // 更新显示的颜色代码
                document.getElementsByTagName("img")[0].style.background = "#" + hexColorCode; // 应用新颜色
              }
          </script>
    </body>
</html>

将代码复制至 > HTML在线编译器查看效果

代码解析

  1. HTML 部分

    • 使用 <img> 标签引入图片,并设置相应的 src 属性。
    • 创建一个包含文本、图片和按钮的容器,用于展示和交互。
  2. CSS 部分

    • body 设置背景颜色。
    • 使用 Flexbox 布局使容器居中。
    • 为文本添加动画效果,使用 @keyframes 定义颜色变化的关键帧。
  3. JavaScript 部分

    • 定义一个包含十六进制颜色字符的数组。
    • 通过循环生成 6 位随机颜色代码。
    • 更新页面上显示的颜色代码,并将新颜色应用到图片背景。

编程狮课程推荐

如果你想更深入地学习 HTML、CSS 和 JavaScript,欢迎访问 编程实战。我们提供以下相关课程:

在编程狮,我们致力于为每一位学习者提供高质量的编程教育资源,帮助你实现从入门到精通的飞跃!

通过今天的教程,你已经学会了如何使用 HTML、CSS 和 JavaScript 实现图片颜色的随机更改。希望你能继续探索并将其应用到你的项目中。

相关推荐
还是大剑师兰特3 分钟前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
泯泷21 分钟前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
华洛1 小时前
利好打工人,openclaw不是企业提效工具,而是个人助理
前端·javascript·产品经理
xkxnq1 小时前
第六阶段:Vue生态高级整合与优化(第93天)Element Plus进阶:自定义主题(变量覆盖)+ 全局配置与组件按需加载优化
前端·javascript·vue.js
A黄俊辉A2 小时前
vue css中 :global的使用
前端·javascript·vue.js
灵感__idea3 小时前
Hello 算法:复杂问题的应对策略
前端·javascript·算法
chushiyunen3 小时前
python中的内置属性 todo
开发语言·javascript·python
soso19684 小时前
JavaScript性能调优实战案例
javascript
Dxy12393102165 小时前
CSS常用样式详解:从基础到进阶的全面指南
前端·css
Moment5 小时前
前端工程化 + AI 赋能,从需求到运维一条龙怎么搭 ❓❓❓
前端·javascript·面试