修身养性,知行合一

  • 首页
  • 爱码
    • 系统
    • 数据库
    • JavaScript
    • CSharp
    • Python
  • 生活
    • 文化
    • 美食
  • 杂谈
  • 关于
修身养性,知行合一
码字,杂谈
  1. 首页
  2. 爱码
  3. 前端
  4. 正文

rgb 颜色小数兼容问题

2024年12月5日 2309点热度 0人点赞 0条评论

在兼容旧版浏览器的路上,确实有好多细节的内容。今天在兼容 chrome80 的时候,发现界面中颜色突然没了,打开 F12 查看,发现 rgb 失效了。我心想,咋的,#RGBA 不能用,连 rgba(x,y,z,a) 也不能用了?头大。。。

然后突然发现,奇怪的是有一些 rgb 可以用,有一些 rgb 不能用。这就奇了怪了,才发现原来失效的是包含小数的颜色,如:rgba(205.5, 211.5, 211.5, 0.5)

于是乎,需要在打包的时候将它们转成相近的整数。这种简单的内容,直接在配置文件中些就好了,就不用插件了。

直接在 vite.config.ts 中添加 plugin 内容:

export default defineConfig(() => {
  return {
    css: {
      postcss: {
        plugins: [
          {
            postcssPlugin: "postcss-color-rounding",
            Declaration(decl) {
              if (decl.value.includes("rgb")) {
                decl.value = decl.value.replace(
                  /rgb\((\d+(\.\d+)?), (\d+(\.\d+)?), (\d+(\.\d+)?)\)/g,
                  (match, p1, p2, p3, p4, p5, p6) => {
                    return `rgb(${Math.round(p1)}, ${Math.round(p3)}, ${Math.round(p5)})`;
                  }
                );
              }
              if (decl.value.includes("rgba")) {
                decl.value = decl.value.replace(
                  /rgba\((\d+(\.\d+)?), (\d+(\.\d+)?), (\d+(\.\d+)?), (\d+(\.\d+)?)\)/g,
                  (match, p1, p2, p3, p4, p5, p6, p7, p8) => {
                    return `rgba(${Math.round(p1)}, ${Math.round(p3)}, ${Math.round(p5)}, ${p7})`;
                  }
                );
              }
            }
          }
        ]
      }
    }
  }
})

直接打包,这样打包后的所有 rgb 颜色就都是整数了。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: CSS
最后更新:2024年12月5日

jeremyjone

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

最新 热点 随机
最新 热点 随机
node-sass 的安装 解决端口被占的问题 vue3 组件 Props 的声明方式 给 div 添加选中状态 请求的取消 rgb 颜色小数兼容问题
js 问号链以及双问号的打包问题 微信小程序 - BILIBILI-demo TypeError: ObjectId('') is not JSON serializable VSCode 中 Vue 的 Template 高亮提示 .NET Model名称转换 JavaScript 之 canvas(二)-- 绘制基本图形

(っ•̀ω•́)っ✎⁾⁾ 开心每一天

COPYRIGHT © 2021 jeremyjone.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

京ICP备19012859号-1

京公网安备 11010802028585号