我在div
中有一个HTML
,它是从服务器端动态创建的。我只想在css
(前端)中的HTML
上应用div
,且仅当它具有某些内容时。如果没有任何内容,则无需应用新样式。
HTML
代码示例为:
<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>
我尝试但失败的CSS
是:
.attr-marker text {
display: block;
width: 12px;
height: 12px;
border-radius: 50%;
line-height: 12px;
font-size: 9px;
text-align: center;
background: #000;
color: #fff;
}
我可以使用javascript
来实现它,但是我只想使用CSS
解决方案,这样可以帮助我将code
最小化。
答案 0 :(得分:1)
您可以使用: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
答案 1 :(得分:0)
您可以使用:empty
伪类。但是,您的服务器将需要输出不带空格的.attr-marker div。
就像...
<div class="attr-marker"></div>
不是
<div class="attr-marker">
</div>
然后是CSS,
.attr-marker:empty {
display: block;
width: 12px;
height: 12px;
border-radius: 50%;
line-height: 12px;
font-size: 9px;
text-align: center;
background: #000;
color: #fff;
}
其他阅读,https://developer.mozilla.org/en-US/docs/Web/CSS/:empty
答案 2 :(得分:0)
从服务器端向该div添加另一个类,如果它将发送内容或将内容包装到另一个元素中并赋予其样式即可。
编辑:
如果您知道元素的确切位置,则可以使用第n个子伪类来选择它:
.attr-marker:nth-child(1):not(:empty) {
border: 1px solid #333;
background-color: yellow;
}
答案 3 :(得分:0)
写入.attr-marker text { }
意味着您要访问带有类text
的标签attr-maker
的子元素。 HTML中不存在此类标记。
有特定的CSS text和CSS font属性仅适用于文本。它们将用于文本的父元素(在您的情况下为div
,类名为attr-marker
):
.attr-marker {
/* text properties */
/* some other properties */
}
诸如display: block;
,width: 12px;
,height: 12px;
之类的属性不适用于文本。
话虽如此,您不必担心CSS属性是应用于文本还是应用于整个div
。如果使用正确的属性,则可以确保它们仅应用于文本。
对于内容(文本)的存在,您不必担心。如果没有文本,CSS将不会进行任何更改。
答案 4 :(得分:0)
如果这些标记是块呈现的元素,则除非它们包含内容,否则浏览器不应显示它们,因此,您可以信任浏览器不呈现不包含任何内容的元素,请使用以下max-width和max-height属性:
.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
}