【发布时间】:2017-09-17 11:46:23
【问题描述】:
xsl 中有没有办法根据背景颜色亮度将文本颜色更改为黑色或白色?
所以在下面的示例中,根据背景颜色亮度,两个问候语都应该有白色文本。 xsl 中是否有内置函数来完成此操作?
xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="greetings">
<xsl:apply-templates select="greeting"/>
</xsl:template>
<xsl:template match="greeting">
<html>
<body>
<h1>
<span>
<xsl:attribute name="style">
background-color: <xsl:value-of select="@backcolor"/>
color: <!-- Is there a way to make color black or white based on background color brightness? -->
</xsl:attribute>
<xsl:value-of select="."/>
</span>
</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="colortest.xslt"?> <!--todo: change this if copying to new file-->
<!--todo: change preceding line if copying to new file-->
<greetings>
<greeting id="1" backcolor="f59595">
Hello World!
</greeting>
<greeting id="2" backcolor="ff0000">
Hola!
</greeting>
</greetings>
【问题讨论】:
-
是否需要测试背景颜色的“亮度”,并确定选择白色或黑色文本?
listItemColor变量的格式是什么? -
没错,黑色或白色取决于亮度。 listItemColor 可能是十六进制值。但是如果有办法使用颜色名称和十六进制,那也很好。但很可能是十六进制。
-
你的问题不清楚。请提供一个(或两个)输入示例,以及一组明确的规则来确定所需的输出。
-
您是否尝试以编程方式生成样式表?因为这就是它的样子。但如果这就是你所做的,我想你会这么说的。因为我们所拥有的只是(a)一个关于颜色和亮度之类的问题描述,而不是元素和属性,以及(b)一些(没有任何上下文)根本没有意义的代码。向我们展示转换的输入和所需输出,并解释它们之间的关系。
-
我很抱歉造成混淆,我会拿出一个工作示例并更新我的原始帖子。再次,请原谅我,并在这件事上与我同在。