随机背景色和前景色搭配问题
<style>.artBox { font-size: 18px; margin: 20px auto; max-width: 1200px; }
.artBox > p { margin: 10px 0; line-height: 30px; }
.artBox mark { padding: 4px 6px; background: lightblue; }
</style>
<div class="artBox">
<p>背景色和前景色如果都随机获取,怎么做才能得到较为理想的效果,需要考虑的因素很多。其中,对比度是首要考虑的问题,这是解决文本辨析度的关键;其次,提升阅读舒适性,至少在视觉上基本符合 WCAG(网络内容无障碍指南)提出的标准。以下演示基于上述两个因素实现,具体思路是:使用 HSL颜色模型 获取配套的随机<txt-red>深色背景+浅色前景</txt-red>或<txt-red>浅色前景+深色背景</txt-red>,其中:深色背景和浅色背景固定饱和度、亮度分别为 20%、90%,深色前景和浅色前景饱和度分别为30%、80%,亮度依次为90%、20%,代码如下,在线预览效果时可单击元素变换背景色和前景色:</p>
<div class="codebox" data-prev="1">
<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; <txt-green>// 随机深、浅色背景</txt-green>
const bg = isDarkBg
? `hsl(${hue}, 100%, 20%)`<txt-green>// 深色背景</txt-green>
: `hsl(${hue}, 100%, 90%)`; <txt-green>// 浅色背景</txt-green>
const color = isDarkBg
? `hsl(${hue}, 30%, 90%)` <txt-green>// 浅色前景</txt-green>
: `hsl(${hue}, 80%, 20%)`;<txt-green>// 深色前景</txt-green>
elm.style.backgroundColor = bg; <txt-green>// 背景色</txt-green>
elm.style.color = color; <txt-green>// 前景色</txt-green>
};
setBgAndColor(mydiv); <txt-green>// 页面打开时上色</txt-green>
mydiv.onclick = () => setBgAndColor(mydiv); <txt-green>// 单击元素变换颜色</txt-green>
</script>
</div>
<p>以上只是一个粗糙的方案,灵感来自于和一位做平面设计的朋友的一场谈话。</p>
</div>
<script type="module">
import linenumber from 'https://638183.freep.cn/638183/web/js/linenumber.js';
linenumber();
</script> 此方案可能解决了辨析度和友好性问题,阅读舒适度则是一个需要更为精细处理的事情,它涉及的层面太复杂,随即获取颜色的话难以一一规划、达成。 我留存了。颜色是我在做视频时经常被困扰的,对想要的效果很难做到准确,基本是靠着测试,标准就是我看着能接受。对看着不喜欢的也只能是我感觉不好看。感谢马老师发无偿分享!祝您冬安~~{:4_204:}{:4_190:} 霜染枫丹 发表于 2025-12-6 19:07
我留存了。颜色是我在做视频时经常被困扰的,对想要的效果很难做到准确,基本是靠着测试,标准就是我看着能 ...
色彩学是一门恢弘庞大的学问,这里只是实现了极低的功能 马黑黑 发表于 2025-12-6 19:08
色彩学是一门恢弘庞大的学问,这里只是实现了极低的功能
在FLASH时代,有一个配色演示的flash模板我经常用。想着可以应用时确实很不理想的效果让我很无奈。就这就足够给我带来天花板级别的方便了。
马黑黑 发表于 2025-12-6 12:55
此方案可能解决了辨析度和友好性问题,阅读舒适度则是一个需要更为精细处理的事情,它涉及的层面太复杂,随 ...
去预览了,这个的颜色随机配置的前景与背景的对比,已经是阅读舒适区里的了,无论怎样点击,文字和背景一直保持着设定想到达到的预期{:4_187:} 还能这样设置,厉害了。如果代码不熟,就算想到解决方案,也无法实现呢{:4_187:} 红影 发表于 2025-12-6 19:25
还能这样设置,厉害了。如果代码不熟,就算想到解决方案,也无法实现呢
想到了就能解决 红影 发表于 2025-12-6 19:20
去预览了,这个的颜色随机配置的前景与背景的对比,已经是阅读舒适区里的了,无论怎样点击,文字和背景一 ...
但离色彩学推荐的配色方案还相差甚远 霜染枫丹 发表于 2025-12-6 19:12
在FLASH时代,有一个配色演示的flash模板我经常用。想着可以应用时确实很不理想的效果让我很无奈。就这就 ...
Flash很遗憾的,不能坚持下来。它的问题仅是:安全问题没有能解决,漏洞太多,容易引来攻击。苹果的前董事长乔老爷乔布斯在世的时候就提醒和警告说,若Flash不能解决安全问题,苹果系统将抛弃Flash。他们没有用心解决安全问题,终被抛弃,可惜了 马黑黑 发表于 2025-12-6 19:37
Flash很遗憾的,不能坚持下来。它的问题仅是:安全问题没有能解决,漏洞太多,容易引来攻击。苹果的前董 ...
我很喜欢FLASH在制作上的发挥空间,可以把很多想法具象化,现在会声会影虽然也有类似flash的功能,在发挥空间还是不如FLASH那样的自由度。
马黑黑 发表于 2025-12-6 19:33
想到了就能解决
马老师太厉害了~想到就能实现!如果可显示色彩搭配方案的色彩代码对就更完美了{:4_180:} 杨帆 发表于 2025-12-6 20:11
马老师太厉害了~想到就能实现!如果可显示色彩搭配方案的色彩代码对就更完美了
前面说过,这是一个很复杂的工程
页:
[1]