有没有一种方法可以生成与随机背景色形成对比的前景色文本和导航

如何解决有没有一种方法可以生成与随机背景色形成对比的前景色文本和导航

我创建了一个随机背景生成器,该生成器从数组中选择随机颜色并为背景生成线性渐变。

有人可以帮助我提供代码,因为我不知道如何编写代码来生成对比鲜明的前景(文本和导航)。

我需要我的文本字体颜色和导航栏可以根据背景颜色自动更改为对比色。

我当前的JavaScript代码

function GetValue() {
  var myarray = new Array("#ff0000","#ffe100","#95ff00","#2c8d94","#ad6428","#d46317","#0cc27c");

  var randomColor1 = myarray.splice(Math.floor(Math.random() * myarray.length),1)[0];
  var randomColor2 = myarray.splice(Math.floor(Math.random() * myarray.length),1)[0];

  document.getElementById("message").innerHTML = randomColor1 + randomColor2;
  return [randomColor1,randomColor2];
}

var styles = ["to right","to bottom right","-90deg"];

function applyChanges(randomColor1,randomColor2) {
  var randomColor1 = GetValue();
  var randomColor2 = GetValue();
  var bg = "";
  var style = Math.floor(Math.random() * styles.length);
  bg = "linear-gradient(" + styles[style] + "," + randomColor1 + "," + randomColor2 + ")";
  $("body").css("background",bg);
  $("#myInput").text(bg);
}

function changeBg() {
  var [randomColor1,randomColor2] = GetValue();
  console.log(randomColor1,randomColor2);
  applyChanges(randomColor1,randomColor2);
}

我当前的HTML代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>STARTING NOW</title>

    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <link
      rel="stylesheet"
      href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/css/bootstrap.min.css"
      integrity="sha384-VCmXjywReHh4PwowAiWNagnWcLhlEJLA5buUprzK8rxFgeH0kww/aWY76TfkUoSX"
      crossorigin="anonymous"
    />
    <script
      src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.1/js/bootstrap.min.js"
      integrity="sha384-XEerZL0cuoUbHE4nZReLT7nx9gQrQreJekYhJD9WNWhH8nEW+0c5qq7aIo2Wl30J"
      crossorigin="anonymous"
    ></script>
    <script
      src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
      integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
      crossorigin="anonymous"
    ></script>
    <script
      src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
      integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
      crossorigin="anonymous"
    ></script>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <header class="header_section">
      <div>
        <nav class="navbar navbar-expand-sm bg-dark navbar-dark">
          <ul class="navbar-nav">
            <li class="nav-item active">
              <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item active">
              <a class="nav-link" href="#">Work</a>
            </li>
            <li class="nav-item active">
              <a class="nav-link" href="#">Contact</a>
            </li>
          </ul>
        </nav>
      </div>
    </header>

    <div class="container-fluid">
      <img
        src="d8282202e8adb36a20e88d27ffc3b15e.jpg"
        alt="headerimage"
        class="image"
      />
      <div class="overlay">
        <div class="text"><h3>I AM RAJ JAIN</h3></div>
      </div>
    </div>

    <br />

    <div>
      <img src="IMG_3260.jpg" class="rounded-circle" alt="profile pic" />
    </div>

    <br />

    <div id="description">
      <h5>I am a full-stack web developer based in Melbourne,Australia</h5>
    </div>

    <div>
      <hr class="line1" />
    </div>

    <div id="description">
      <h3>Here's what i have done so far</h3>
    </div>
    <br />

    <div class="container">
      <div class="row">
        <div class="col-sm-8">
          <img src="afcg.png" id="evidence1" alt="afcg work" />
        </div>
        <div class="col-sm-4">
          <h3 id="descrip1">Member's directory - Dynamic Wordpress Website</h3>
          <p id="descrip2">
            This is the directory I created during my IT Internship at Advanced
            Fibre Cluster Geelong. This webpage is based on Wordpress.
          </p>
        </div>
      </div>
    </div>

    <br />
    <br />

    <div class="container">
      <div class="row">
        <div class="col-sm-8">
          <img src="wordminer.png" id="evidence1" alt="afcg work" />
        </div>
        <div class="col-sm-4">
          <h3 id="descrip1">Wordminer app</h3>
          <p id="descrip2">This is the Web app i created using html and css.</p>
        </div>
      </div>
    </div>

    <br>


    <div>
      <hr class="line1" />
    <div/>

    <div id="description">
      <h3>My Photos</h3>
    </div>

    <br>

    <div class="container">
      <div class="row">
        <div class="col">
          <img src="geometric-1202611_640.jpg" alt="1st image" style="width: 200px; height: auto; padding: 3%;" />
        </div>
        <div class="col">
          <img src="gingham-1525372_640.jpg" alt="2nd image" style="width: 200px; height: auto; padding: 3%;"  />
        </div>
        <div class="col">
          <img src="gold-992079_640.jpg" alt="3rd image" style="width: 200px; height: auto; padding: 3%;"  />
        </div>
        <div class="col">
          <img src="space-4257486_640.jpg" alt="4th image" style="width: 200px; height: auto; padding: 3%;"  />
        </div>
      </div>
    </div>

    <input type="button" id="btnSearch" value="Search" onclick="changeBg();" />
    <p id="message" ></p>
    <p id="myInput"></p>


<script src="script.js" type="text/javascript"></script>

<script
src=”https://code.jquery.com/jquery-2.2.4.min.js"
integrity=”sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=”
crossorigin=”anonymous”></script>

  </body>
</html>

解决方法

根据十六进制颜色值,文本字体颜色可以反转为白色或黑色。您将在这里找到一个很好的解释此问题的解决方案:

Invert to white or black depending on background color

我在工作功能中与您共享代码。

function invertColor(hex,bw) {
  if (hex.indexOf('#') === 0) {
     hex = hex.slice(1);
  }
  // convert 3-digit hex to 6-digits.
  if (hex.length === 3) {
     hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
  }
  if (hex.length !== 6) {
     throw new Error('Invalid HEX color.');
  }
  var r = parseInt(hex.slice(0,2),16),g = parseInt(hex.slice(2,4),b = parseInt(hex.slice(4,6),16);
  if (bw) {
      // http://stackoverflow.com/a/3943023/112731
      return (r * 0.299 + g * 0.587 + b * 0.114) > 186
        ? '#000000'
        : '#FFFFFF';
  }
  // invert color components
  r = (255 - r).toString(16);
  g = (255 - g).toString(16);
  b = (255 - b).toString(16);
  // pad each with zeros and return
  return "#" + padZero(r) + padZero(g) + padZero(b);
}

function padZero(str,len) {
  len = len || 2;
  var zeros = new Array(len).join('0');
  return (zeros + str).slice(-len);
}

编辑: 将此代码复制到您的javascript文件中。在您的“ applyChanges()”函数中,添加以下代码行:

$("body").css("color",invertColor(randomColor1[1],true));

您可以将第二个参数发送为 false ,但是您正在创建渐变并使用相反的字体来更改字体颜色,这可能会产生一种不适合阅读的颜色。我选择的第一个参数是渐变中最暗的颜色,但是您可以测试发送阵列中的其他颜色。

希望这能解决您的问题!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-