【问题标题】:Cannot change font color of all elements within rows and columns in table tags无法更改表格标签中行和列中所有元素的字体颜色
【发布时间】:2013-09-17 20:17:06
【问题描述】:

我正在尝试更改不同区域中不同 Web 元素的字体颜色。大多数情况下它工作正常,而我正在使用我正在使用这样的:

<font color='BLUE'>
<DIV>
<SPAN style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; FLOAT: none;      : rgb(34,34,34); FONT: 13px Calibri; -webkit-text-size-adjust: auto">
</SPAN>
</DIV>
<DIV>
<SPAN style="BORDER-TOP-     : ; WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; FLOAT: none;      : rgb(0,0,0); FONT: large arial, sans-serif;  -webkit-text-size-adjust: auto">abc
</SPAN>
</DIV>
</font>

或者只是

 <font color='BLUE'>
<P>abc
</P>
    </font>

但是当我尝试更改字体颜色和标签下某些文本元素的格式时,它不起作用!

<font color='Blue'>
        <DIV>   
        <TABLE style="WIDTH: 165pt; BORDER-COLLAPSE: collapse; border=0 cellSpacing=0 cellPadding=0 width=219>
        <COLGROUP>
        <COL style="WIDTH: 21pt; mso-width-source: userset; mso-width-alt: 1024" width=28>
        <COL style="WIDTH: 92pt; mso-width-source: userset; mso-width-alt: 4498" width=123>
        <TBODY>
        <TR style="HEIGHT: 66pt; mso-height-source: userset" height=88>
        <TD style="BORDER-BOTTOM: #ece9d8; BORDER-LEFT: #ece9d8;           -     : transparent; WIDTH: 165pt; HEIGHT: 66pt; BORDER-TOP: #ece9d8; BORDER-RIGHT: #ece9d8" class=xl65 height=88 width=219 colSpan=4><FONT size=2 face=Calibri></FONT>
        </TD></TR>
        <TR style="HEIGHT: 107.25pt; mso-height-source: userset" height=143>
        <TD style="BORDER-BOTTOM: #ece9d8; BORDER-LEFT: #ece9d8;           -     : transparent; WIDTH: 165pt; HEIGHT: 107.25pt; BORDER-TOP: #ece9d8; BORDER-RIGHT: #ece9d8" class=xl65 height=143 width=219 colSpan=4>
        <FONT size=2 face=Calibri>
        <SPAN style="mso-spacerun: yes">&nbsp; </SPAN><BR><BR></FONT></TD></TR>
        </TBODY>
        </TABLE>
        </DIV>
        </font>

如果我想保持通用规则来更改各种格式的字体颜色,请建议我该怎么做。这是我在一些应用程序中使用的,我从用户那里获取输入,他们在 html 标签中插入文本,我只需要使文本的字体颜色相似,并为所有输入保持相同的格式。

附:为了让场景更清晰,我实际上是从服务器端获取所有 html 标记和文本,在字符串的开头和结尾添加,将新字符串加载到 webview 中,如下所示:

String str = "abc"; //actaully what I am getting from backend with html tags

if(ann.get() != null)

    String  content = "<font color='Blue'>";
    content = content + Str;
    content = content + "</font>";
    details.loadData(content,"text/html","UTF-8");
    details.setBackgroundColor(Color.Black);

【问题讨论】:

  • FONT 语句很久以前就被弃用了。使用 CSS。
  • 感谢您的建议。这是我一直在一些应用程序中使用的,我从用户那里获取输入,他们一直在插入部分 html 文件,我只是试图以类似的方式保持字体颜色和格式。我真的不知道如何在 android 应用程序中使用 css!我只需要使带有html标签的文本的字体颜色相似。
  • 这并不是一个好的做法,但是如果你真的不能使用 CSS,也许你可以将整个东西包装在一个具有相同样式的 &lt;span&gt; 中?这应该正确级联。

标签: html fonts html-table android-webview


【解决方案1】:

为您的元素提供适当的类,然后您可以使用 CSS 来设置这些类的样式。

例如

table {color: white}
td.myclass {color: green}

【讨论】:

  • 正如 Vlad 和其他人指出的那样,使用 CSS。让机器完成工作。级联样式表的级联部分减少了通过 Web 应用程序中最长的网络连接(即浏览器和服务器之间的连接)传输所有 STYLE 标记内容的需要。并且级联减少了手动编码样式位的数量。并且级联意味着您编写意图,按元素或类应该是什么样式,而不是逐行应用该意图。双赢。
  • 为了让场景更清晰,我实际上是从服务器端获取所有 html 标签和文本,在字符串的开头和结尾添加,将新字符串加载到 webview 中,如下所示:字符串 str = "abc"; //实际上我从带有 html 标签的后端得到了什么 if(ann.getAnnouncementDetails() != null) String content = "";内容=内容+ Str;内容=内容+“”; details.loadData(content,"text/html","UTF-8"); details.setBackgroundColor(Color.Black);
【解决方案2】:

根据所有 HTML 规范,在 font 元素内包含 divtable 元素的标记是无效的。然而,浏览器传统上已经消化了它,但是字体属性不会影响表格内的内容。这仍然是现代浏览器在Quirks Mode 中的行为方式。

奇怪的是,在标准模式下,现代浏览器会在表格内容上应用字体颜色。 (所以在所谓的标准模式中,一些被忽略的非标准标记被尊重!)但是,通过在文档的开头拍&lt;!doctype html&gt; 来切换到标准模式是非常危险的。为在 Quirks 模式下工作而开发的代码在标准模式下可能会完全崩溃,或者可能几乎相同,或者介于两者之间。

如果您特别想设置页面表格内的颜色,可以添加以下元素:

<style>
th, td { color: blue }
</style>

它应该通过 HTML 语法进入 head 部分,但实际上它在 body 部分中也很有效,所以如果必须的话,你可以在桌子之前(或之后!)拍它。

【讨论】:

  • 为了让场景更清晰,我实际上是从服务器端获取所有 html 标记和文本,在 处添加字符串的开头和结尾,将新字符串加载到 webview像这样: String str = "abc"; //实际上我从带有 html 标签的后端得到了什么 if(ann.getAnnouncementDetails() != null) String content = "";内容=内容+ Str;内容=内容+“”; details.loadData(content,"text/html","UTF-8"); details.setBackgroundColor(Color.Black);
  • 确认这是正确的。我通过添加 测试了我的非工作表字体颜色,果然,颜色改变了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 2021-02-11
  • 2014-06-26
  • 1970-01-01
  • 2021-03-09
相关资源
最近更新 更多