Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何使用::after伪元素为单个样式提供两种字体颜色?_Html_Css_Less - Fatal编程技术网

Html 如何使用::after伪元素为单个样式提供两种字体颜色?

Html 如何使用::after伪元素为单个样式提供两种字体颜色?,html,css,less,Html,Css,Less,我目前正在从事一个ASP.NET MVC web项目,对于我们的一些表单,我们有需要填写的字段。我想做的是添加一个样式,在每个必需字段的标签后面添加一个红色星号(*),后跟一个黑色冒号(:) 目前,对于页面样式,我们使用较少的CSS,也使用引导。我们所有的标签都有引导类“control label”,它在标签html之后添加了一个黑色冒号 我想将类设为“required”,并向其中添加::after伪元素,将星号添加到内容属性中,如下所示: // Add a red asterisk (*) a

我目前正在从事一个ASP.NET MVC web项目,对于我们的一些表单,我们有需要填写的字段。我想做的是添加一个样式,在每个必需字段的标签后面添加一个红色星号(*),后跟一个黑色冒号(:)

目前,对于页面样式,我们使用较少的CSS,也使用引导。我们所有的标签都有引导类“control label”,它在标签html之后添加了一个黑色冒号

我想将类设为“required”,并向其中添加::after伪元素,将星号添加到内容属性中,如下所示:

// Add a red asterisk (*) after each label which is required.
label.control-label.required::after{ 
    content: "*";
    color: red;
}
但是,这会覆盖引导样式,从而删除我需要的黑色冒号

我可以使用以下命令,但冒号也将显示为红色

// Add a red asterix (*) after each label which is required.
label.control-label.required::after{ 
    content: "*:";
    color: red;
}
有没有办法让星号是红色的,而冒号是黑色的

我试过使用多个

// Add a red asterix (*) after each label that's required.
label.control-label.required::after{
    content: "*";
    color: red;
}
// Add a red colon (:) after each label that's required.
label.control-label.required::after{
    content: ":";
    color: black;
}
但在这里,最后一个样式将覆盖第一个样式,并且只显示黑色冒号

使用less时,他们还建议在需要使用多个::after函数时使用::after(2),但这也不起作用

// Add a red asterix (*) after each label that's required.
label.control-label.required::after(2){
    content: "*";
    color: red;
}
// Add a red colon (:) after each label that's required.
label.control-label.required::after(2){
    content: ":";
    color: black;
}
使用::after(2)(或任何其他数字组合作为参数),将使用默认引导样式,并且只显示黑色冒号

将HTML代码添加到content属性也不起作用,因为content属性会将代码按字面意思(作为字符串)表示

如果我能在一个样式中使用两种颜色,那么


任何帮助都将不胜感激。如果您还有任何问题,请随时提问,我会尽力回答。

当您无法更改所有表单字段的源代码并为此目的附加额外元素时,您可以使用
::before
::after
并更改显示方向以获得所需效果

label.control-label
{
显示器:flex;
}
label.control label::before
{
内容:':';
顺序:2;
}
label.control label.required::after
{
内容:“*”;
颜色:红色;
顺序:1;
}
只是一个标签

所需标签
恐怕仅使用CSS(没有黑客)是不可能的

您可以使用此JavaScript解决您的问题:

let labels = document.querySelectorAll('label.control-label.required');

labels.forEach(label => {
    label.innerHTML += '<span style="color:red;">*</span><span style="color:black;">:</span>';
});
let labels=document.querySelectorAll('label.control label.required');
labels.forEach(label=>{
label.innerHTML+='*:';
});

谢谢您的帮助。我已经使用了你所说的,它适用于必需的标签,但是现在所有非必需的标签都有两个黑色冒号。我所做的是添加以下内容:
label.controllabel:not(.required)::after{content:;}
很高兴它有帮助。似乎您仍然有一个css片段,用于设置伪元素的内容。正如您在上面的代码中看到的,默认标签没有两个冒号。祝你好运。