Javascript 仅对DIV内的文本应用样式

Javascript 仅对DIV内的文本应用样式,javascript,html,css,Javascript,Html,Css,我在HTML中有一个div,它是从服务器端动态创建的。我只想在div上应用css中的HTML(前端)当且仅当它有一些内容时。如果它没有任何内容,那么我就不需要应用新的样式 HTMLcode的示例是: <div class="attr-marker"> Some-text-content <!-- Apply New Styling on it --> </div> <div class="attr-m

我在
HTML
中有一个
div
,它是从服务器端动态创建的。我只想在
div
上应用
css
中的
HTML
(前端)当且仅当它有一些内容时。如果它没有任何内容,那么我就不需要应用新的样式

HTML
code的示例是:

<div class="attr-marker">
    Some-text-content        <!-- Apply New Styling on it -->
</div>

<div class="attr-marker">
    <!-- No need of new styling -->
</div>

<div class="attr-marker">
    <!-- No need of new styling -->
    <i class="fas fa-car" style="color:#d42424;font-size:px"></i>
</div>

我可以通过使用
javascript
来实现它,但是我想要纯
CSS
解决方案,这样它可以帮助我最小化
code

您可以使用
:empty
伪选择器为空div设置默认样式。然后对于常规div,只需设置上面给出的样式

或者,您可以使用
:not(:empty)
伪选择器为非空的div设置样式

下面是一个例子:

.attr-marker:not(:empty) {
    display: block;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    line-height: 12px;
    font-size: 9px;
    text-align: center;
    background: #000;
    color: #fff;
}
如果你有任何问题,请告诉我

问候,


AJ

您可以使用
:empty
伪选择器设置空div的默认样式。然后对于常规div,只需设置上面给出的样式

或者,您可以使用
:not(:empty)
伪选择器为非空的div设置样式

下面是一个例子:

.attr-marker:not(:empty) {
    display: block;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    line-height: 12px;
    font-size: 9px;
    text-align: center;
    background: #000;
    color: #fff;
}
如果你有任何问题,请告诉我

问候,


AJ

您可以使用
:empty
伪类。但是,服务器需要输出不带空格的.attr标记div

不是


附加阅读,

您可以使用
:empty
伪类。但是,服务器需要输出不带空格的.attr标记div

不是


附加阅读,

如果将发送内容,则从服务器端向该div添加另一个类,或者使用另一个元素包装内容并为其提供一些样式

编辑:

如果您知道元素的确切位置,则可以使用第n个子伪类选择它:

.attr-marker:nth-child(1):not(:empty) {
  border: 1px solid #333;
  background-color: yellow;
}

如果要发送内容,可以从服务器端向该div添加另一个类,或者使用另一个元素包装内容并为其提供一些样式

编辑:

如果您知道元素的确切位置,则可以使用第n个子伪类选择它:

.attr-marker:nth-child(1):not(:empty) {
  border: 1px solid #333;
  background-color: yellow;
}

写入
.attr marker text{}
意味着您希望使用类
attr maker
的标记
text
访问子元素。HTML中不存在这样的标记

有一些特定的和属性仅适用于文本。它们将在文本的父元素中使用(在您的示例中,使用类名
attr marker
div
):

属性,如
显示:块
宽度:12px
高度:12px等,对文本无效

也就是说,您不必担心CSS属性是应用于文本还是应用于整个
div
。如果使用了正确的属性,可以确保它们仅应用于文本



至于内容(文本)的存在,你不需要担心。如果没有文本,CSS将不会更改任何内容。

写入
.attr marker text{}
表示您希望使用类
attr maker
的标记
text
访问子元素。HTML中不存在这样的标记

有一些特定的和属性仅适用于文本。它们将在文本的父元素中使用(在您的示例中,使用类名
attr marker
div
):

属性,如
显示:块
宽度:12px
高度:12px等,对文本无效

也就是说,您不必担心CSS属性是应用于文本还是应用于整个
div
。如果使用了正确的属性,可以确保它们仅应用于文本



至于内容(文本)的存在,你不需要担心。如果没有文本,CSS将不会更改任何内容。

如果这些标记是块渲染元素,浏览器不应显示它们,除非它们有内容,因此您可以信任浏览器不会渲染没有内容的元素,请使用下面的“最大宽度”和“最大高度”属性:

.attr-marker {
    display: block;
    max-width: 12px;
    max-height: 12px;
    border-radius: 50%;
    line-height: 12px;
    font-size: 9px;
    text-align: center;
    background: #000;
    color: #fff;
    /*If required*/
    overflow:hidden
}

如果这些标记是块渲染元素,则浏览器不应显示它们,除非它们具有内容,因此您可以相信浏览器不会渲染没有内容的元素,请使用下面的“最大宽度”和“最大高度”特性:

.attr-marker {
    display: block;
    max-width: 12px;
    max-height: 12px;
    border-radius: 50%;
    line-height: 12px;
    font-size: 9px;
    text-align: center;
    background: #000;
    color: #fff;
    /*If required*/
    overflow:hidden
}

css样式选择器中的文本是什么?它可以是
div
中具有
class:attr标记的任何文本。我认为它不存在。标记名“text”在w3文档中不存在。是的,我知道。这只是一个样本。理解。css样式选择器中的文本是什么?它可以是
div
中具有
class:attr标记的任何文本。我认为它不存在。标记名“text”在w3文档中不存在。是的,我知道。这只是一个样本。明白了。让我在我的
CSS
文件中试试。似乎空格和图标使div不是空的。如果可以的话,可以删除div中的所有空格(包括换行符),然后尝试使其正常工作。否则,jQuery或JavaScript可能是唯一的选择。忽略我上面评论中的和图标。把它放错:)让我在我的
CSS
文件中试试。似乎空白和图标使div不是空的。如果可以的话,可以删除div中的所有空格(包括换行符),然后尝试使其正常工作。否则,jQuery或JavaScript可能是唯一的选择。忽略我上面评论中的和图标。错了:)如果我未经授权访问服务器怎么办!!:-如果我未经授权访问服务器怎么办!!:-这就是一个例子。我想这就是你的意思?我想在你的
jsfiddle
上的第一个标记中添加
text
。好的,你会想这样做的。我想@AJ7已经提到了。第二组的原因是
.attr-marker {
    display: block;
    max-width: 12px;
    max-height: 12px;
    border-radius: 50%;
    line-height: 12px;
    font-size: 9px;
    text-align: center;
    background: #000;
    color: #fff;
    /*If required*/
    overflow:hidden
}