如何为PHP创建的动态html设置样式


How to style a dynamic html created by PHP

我的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&nbsp;<span style='color:red'>*</span>";
    }
  }  
}
</script>
试试上面的方法,希望它能解决你的问题。我已经使用了简单的javascript,但如果你知道一个javascript库(YUI, dojo, jquery),那么你可以在1或2行做到这一点。