我从http://www.ilikepixels.co.uk/drop/bubbler/
生成了一个泡泡聊天内容在我的页面中,我在其中放了一个数字
.bubble {
position: relative;
width: 20px;
height: 15px;
padding: 0;
background: #FFF;
border: 1px solid #000;
border-radius: 5px;
}
.bubble:after {
content: "";
position: absolute;
top: 4px;
left: -4px;
border-style: solid;
border-width: 3px 4px 3px 0;
border-color: transparent #FFF;
display: block;
width: 0;
z-index: 1;
}
.bubble:before {
content: "";
position: absolute;
top: 4px;
left: -5px;
border-style: solid;
border-width: 3px 4px 3px 0;
border-color: transparent #000;
display: block;
width: 0;
z-index: 0;
}
我希望气泡的background-color
根据其内部的数字通过rgb
所以如果我的div是
<div class="bubble" style="background-color: rgb(100,255,255);"> 100 </div>
我希望颜色为rgb(100,255,255)
事情是这不会影响三角形。
如何编写内联css,以便它包括:before和:after?
答案 0 :(得分:43)
你做不到。使用内联样式,您可以直接定位元素。你不能在那里使用其他选择器。
然而,您可以在样式表中定义不同的类来定义不同的颜色,然后将该类添加到元素中。
答案 1 :(得分:41)
关键是在伪元素上使用background-color: inherit;
。
请参阅:http://jsfiddle.net/EdUmc/
答案 2 :(得分:22)
您可以使用CSS variables。
style="--my-color-var: orange;"
background-color: var(--my-color-var);
div {
width: 100px;
height: 100px;
position: relative;
border: 1px solid black;
}
div:after {
background-color: var(--my-color-var);
content: '';
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
}
<div style="--my-color-var: orange;"></div>
.bubble {
position: relative;
width: 30px;
height: 15px;
padding: 0;
background: #FFF;
border: 1px solid #000;
border-radius: 5px;
text-align: center;
background-color: var(--bubble-color);
}
.bubble:after {
content: "";
position: absolute;
top: 4px;
left: -4px;
border-style: solid;
border-width: 3px 4px 3px 0;
border-color: transparent var(--bubble-color);
display: block;
width: 0;
z-index: 1;
}
.bubble:before {
content: "";
position: absolute;
top: 4px;
left: -5px;
border-style: solid;
border-width: 3px 4px 3px 0;
border-color: transparent #000;
display: block;
width: 0;
z-index: 0;
}
<div class='bubble' style="--bubble-color: rgb(100,255,255);"> 100 </div>
答案 3 :(得分:5)
如果您确实需要内联,例如因为您动态加载一些用户定义的颜色,您可以随时在内容之前添加<style>
元素。
<style>#project-slide-1:before { color: #ff0000; }</style>
<div id="project-slide-1" class="project-slide"> ... </div>
PHP的示例用例和一些(wordpress灵感的)虚函数:
<style>#project-slide-<?php the_ID() ?>:before { color: <?php the_field('color') ?>; }</style>
<div id="project-slide-<?php the_ID() ?>" class="project-slide"> ... </div>
从HTML 5.2开始,将样式元素放在正文中是有效的,尽管仍然建议将样式元素放在头部。
参考:https://www.w3.org/TR/html52/document-metadata.html#the-style-element
答案 4 :(得分:2)
我通过 border-color解决了类似的问题:继承
,请参阅:
<li style="border-color: <?php echo $hex ?>;">...</li>
li {
border-width: 0;
}
li:before {
content: '';
display: inline-block;
float: none;
margin-right: 10px;
border-width: 4px;
border-style: solid;
border-color: inherit;
}