找回密码
 立即注册
搜索
查看: 18|回复: 0

随机背景色和前景色搭配问题 转自《马黑博客》

[复制链接]

1081

主题

2752

回帖

1万

积分

管理员

积分
10305
发表于 5 天前 | 显示全部楼层 |阅读模式

背景色和前景色如果都随机获取,怎么做才能得到较为理想的效果,需要考虑的因素很多。其中,对比度是首要考虑的问题,这是解决文本辨析度的关键;其次,提升阅读舒适性,至少在视觉上基本符合 WCAG(网络内容无障碍指南)提出的标准。以下演示基于上述两个因素实现,具体思路是:使用 HSL颜色模型 获取配套的随机深色背景+浅色前景或浅色前景+深色背景,其中:深色背景和浅色背景固定饱和度、亮度分别为 20%、90%,深色前景和浅色前景饱和度分别为30%、80%,亮度依次为90%、20%,代码如下,在线预览效果时可单击元素变换背景色和前景色:

<style>

        #mydiv {

                margin: 20px auto;

                width: 800px;

                height: 300px;

                border: 1px solid gray;

                display: grid;


                place-items: center;

                font-size: 5em;

        }

</style>


<div id="mydiv">Hello CSS!</div>


<script>

        const setBgAndColor = (elm) => {

                const hue = Math.floor(Math.random() * 360);

                const isDarkBg = Math.random() > 0.5; // 随机深、浅色背景


                const bg = isDarkBg

                        ? `hsl(${hue}, 100%, 20%)`  // 深色背景

                        : `hsl(${hue}, 100%, 90%)`; // 浅色背景


                const color = isDarkBg

                        ? `hsl(${hue}, 30%, 90%)`   // 浅色前景

                        : `hsl(${hue}, 80%, 20%)`;  // 深色前景


                elm.style.backgroundColor = bg; // 背景色

                elm.style.color = color; // 前景色

        };


        setBgAndColor(mydiv); // 页面打开时上色


        mydiv.onclick = () => setBgAndColor(mydiv); // 单击元素变换颜色

</script>


以上只是一个粗糙的方案,灵感来自于和一位做平面设计的朋友的一场谈话


《马黑博客》地址:  https://mahei.ccccocccc.cc/?i=1

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

协同嘉业科技有限公司 ( 京ICP备2024053108号-1 )

GMT+8, 2026-1-15 11:59 , Processed in 0.079675 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表