我的php页面将生成一个动态html。
输出如下:
<label class="required">suject *</label>
不幸的是我不能编辑html
现在我需要用红色显示"*"。
我该怎么写css呢?
有以下几种方法:
如果您可以访问PHP源代码,那么您可以相应地修改输出,也许用<span>
标记包装*并相应地设置样式。
或者,你可以用JS做同样的事情:
$(document).ready(function() {
// Loop through all labels with required class
$('label.required').each(function() {
$(this).html($(this).html().replace(/'*/g, '<span class="asterisk">*</span>'));
});
});
在你的CSS中,你可以用任何你想要的样式:
.required .asterisk {
color: red;
}
请参阅此处- http://jsfiddle.net/teddyrised/JTesR/
更好:使用CSS
这是根据尝试尽可能在语义上正确编写的-您可以使用JS(或更改PHP代码)删除*字符,但使用伪类将其添加回label元素:
label.required:after {
content: '*';
color: red;
}
CSS允许您选择元素(以及有限数量的伪元素,如:first-line
)。
没有办法选择"最后一个字符","匹配*
的字符"或其他任何可以使您想要实现的东西。
你必须修改DOM。要做到这一点,最简单的方法是修改生成它的HTML。最简单的方法是在加载后用JavaScript修改它。
这是基于Terry的回答:您可以简单地使用:after
来模拟效果,并将该内容放置在生成的HTML上。
label.required:after {
content: '*';
color: red;
background:white;
position: relative;
left: -8px;
}
http://jsfiddle.net/x2KN7/通过CSS是不可能的,但是你可以用javascript做一些事情。如果该内容是在页面加载时生成的,那么您可以挂钩页面加载事件,获取该元素的引用并进行更改。
<script type='text/javascript'>
document.onload = function (e) {
var col = document.getElementsByClassName("required");
for (var i=0;i<col.length;i++) {
if (col[i].innerHTML == "subject *") {
col[i].innerHTML = "subject <span style='color:red'>*</span>";
}
}
}
</script>
试试上面的方法,希望它能解决你的问题。我已经使用了简单的javascript,但如果你知道一个javascript库(YUI, dojo, jquery),那么你可以在1或2行做到这一点。