我们在网站上有一个很大的应用程序,我们有一些链接,比如说这个网站上的蓝色链接就是蓝色 . 现在我想做一些其他链接,但颜色较浅 . 显然我只能通过在CSS文件中添加十六进制代码来做,但我们的网站允许用户决定他们想要什么颜色的自定义配置文件/网站(如Twitter) .
所以,我的问题是:我们可以减少百分比的颜色吗?
我们假设以下代码是CSS:
a {
color: blue;
}
a.lighter {
color: -50%; // obviously not correct way, but just an idea
}
要么
a.lighter {
color: blue -50%; // again not correct, but another example of setting color and then redcuing it
}
有没有办法按百分比减少颜色?
21 回答
我找到了一个PHP类,让我可以做这个服务器端 . 我只是输出内联CSS颜色样式,无论我需要更轻/更暗 . 效果很好 .
http://www.barelyfitz.com/projects/csscolor/
(请注意,该类使用PEAR抛出错误,但我不想仅仅包含PEAR来修改颜色,所以我只删除了所有PEAR引用)
我使用静态方法将其转换为静态类,因此我可以直接调用“lighten”和“darken”函数而无需创建新对象 .
Sample usage:
对于名为color'blue'的css,有'lightblue'
对于'绿色',有'lightgreen'
对于'灰色',有'lightgrey'
对于'黄色',有'lightyellow'
尝试浏览此css命名颜色列表以获取更多信息:http://www.w3schools.com/CSS/css_colornames.asp
你现在可以使用CSS过滤器来做到这一点 . 支持是跨浏览器,但随着规范继续实施和清理,这将是非常方便的 .
这里有一些关于你可以使用的各种过滤器的阅读:http://code.tutsplus.com/tutorials/say-hello-to-webkit-filters--net-23318
更新
随着过滤器进入主流市场,这似乎越来越受欢迎 . 这是当前的兼容性:http://caniuse.com/#feat=css-filters
有“不透明”,这将使背景闪耀:
但我不确定这是你的意思 . 定义“减少颜色”:透明?还是加白色?
如果你想要更暗的颜色,你可以使用低不透明度的
rgba
黑色:对于较轻的使用白色:
我为jquery写了一个插件,这个插件就是这个问题 . 我将颜色作为属性或他们想要的css属性的设置颜色,并通过一些计算运行它 . 十六进制到RGB,然后乘以偏移百分比,然后返回一个新值 . 如果你想要一个例子,请告诉我 .
尝试:
您可以使用一些小的javascript来使用rgb()计算更暗和更浅的颜色 .
Fiddle:不是很好,但它只是为了说明 .
它本质上做的是设置一种颜色并选择20种颜色,相同的数量(相互比较)rgb只相隔10 .
将它们整合在一起,纯粹使用DIV和CSS完成的表格解决方案,尝试它;)浏览器应该支持RGBA颜色....
一个简单的答案是在颜色上使用50%透明的白色PNG:
其中lighten.png是白色填充的PNG,透明度为50% .
如果您使用的堆栈允许您使用SASS,则可以使用lighten函数:
您可以使用JXtension等JavaScript库,使用户能够使颜色更亮或更暗 . 如果您想查找这个全新图书馆的文档,click here . 您还可以使用JXtension将一种颜色与另一种颜色组合 .
请参阅我对Ctford的回复的评论 .
我认为减轻颜色的简单方法是取每个RGB组件,加上0xff并除以2.如果这不能给出你想要的确切结果,取0xff减去当前值乘以一些常数然后添加回当前值 . 例如,如果要将1/3的方向移向白色,请取(0xff - current)/ 3电流 .
你必须玩它才能看到你得到了什么结果 . 我担心,通过这个简单的公式,一个大到足以使深色褪色的因素可能会使浅色变成完全白色,而一个小到足以使浅色变亮的因素可能会使浅色不能变亮 .
尽管如此,我认为距白色的距离只有一小部分比一定数量的步骤更有希望 .
不直接,没有 . 但您可以使用一个站点,例如colorschemedesigner.com,它将为您提供基色,然后为您提供不同范围的基色的十六进制和rgb代码 .
一旦我找到了我的网站的配色方案,我就把颜色的十六进制代码放在我的样式表顶部的注释部分中 .
其他一些配色方案生成器包括:
http://www.colorschemer.com/online.html
http://colorschemegenerator.com/
http://www.cssjuice.com/25-popular-color-scheme-and-palette-generators/
我知道它已经晚了但你可以使用你的按钮包装并更改rgba颜色函数的不透明度级别,如其他答案所述,但没有明确的例子 .
这是一支笔:
https://codepen.io/aronkof/pen/WzGmjR
你可以使用RGBa('a'是alpha透明度),但它并不广泛支持了 . 但是,它将是你现在可以使用它并添加一个后备:
在LESS中,您将使用以下变量:
这将采用第一个变量并将其减轻20%(或任何其他百分比) . 在这个例子中,你最终会得到更浅的颜色:
#ccc
HSL颜色提供答案,HSL颜色值指定为:hsl(色调[0,255],饱和度%,亮度%) .
IE9,Firefox,Chrome,Safari和Opera 10都支持HSL
据我所知,你无法在CSS中做到这一点 .
但我认为,根据您的建议,可以轻松实现一点服务器端逻辑 . CSS样式表通常是静态资产,但没有理由不能通过服务器端代码动态生成它们 . 您的服务器端脚本将:
检查URL参数以确定用户,从而确定用户选择的颜色 . 使用URL参数而不是会话变量,以便您仍然可以缓存CSS .
将颜色分解为红色,绿色和蓝色成分
按设定的数量增加三个组件中的每一个 . 试试这个以获得您所追求的结果 .
生成包含新颜色的CSS
这个CSS生成页面的链接如下所示:
如果不使用.css扩展名,请确保正确设置MIME类型,以便浏览器知道将文件解释为CSS .
(注意,为了使颜色更亮,你必须提高每个RGB值)
如果你决定使用http://compass-style.org/,一个基于sass的css框架,它提供非常有用的
darken()
和lighten()
sass函数来动态生成css . 它非常干净:生成
看起来jPaq(http://jpaq.org/)是JXtension的替代品 . 使用jPaq的好处是,您只能下载所需内容而不是完整的JavaScript库 . 以下是Color类的下载页面的链接:http://jpaq.org/download/1.0.0.1008 .