如何使用:before和:after创建内联样式

Nic*_*nto 65 css inline css3

我从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;
}
Run Code Online (Sandbox Code Playgroud)

我希望background-color泡泡根据其内部的数字改变rgb

所以,如果我的div是

<div class="bubble" style="background-color: rgb(100,255,255);"> 100 </div>
Run Code Online (Sandbox Code Playgroud)

我想要的颜色 rgb(100,255,255)

事情是这不影响三角形.

如何编写内联css,它将包括:before和:after?

Jan*_*čič 49

你不能.使用内联样式,您可以直接定位元素.你不能在那里使用其他选择器.

但是,您可以在样式表中定义不同的类来定义不同的颜色,然后将该类添加到元素中.

  • 显然是的:http://stackoverflow.com/questions/7330355/javascript-set-css-after-styles (4认同)

Big*_*ack 44

关键是要background-color: inherit;在伪元素上使用.
请参阅:http://jsfiddle.net/EdUmc/


Nat*_*hur 35

你可以使用CSS变量.

  • 在style属性中设置变量: 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;
}
Run Code Online (Sandbox Code Playgroud)
<div style="--my-color-var: orange;"></div>
Run Code Online (Sandbox Code Playgroud)

你的例子:

.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;
}
Run Code Online (Sandbox Code Playgroud)
<div class='bubble' style="--bubble-color: rgb(100,255,255);"> 100 </div>
Run Code Online (Sandbox Code Playgroud)

  • 第一次使用css变量,它就像一个魅力。谢谢! (2认同)
  • 遗憾的是,Internet Explorer 不支持 (2认同)
  • 是的,如果您需要支持 IE,您需要将自定义属性限制为不会削弱 IE 用户的网站功能的用例。换句话说,使用渐进增强。 (2认同)
  • 非常非常智能且实用。多谢 (2认同)

Jul*_*lle 9

如果确实需要内联,例如,因为要动态加载一些用户定义的颜色,则可以始终<style>在内容之前添加元素。

<style>#project-slide-1:before { color: #ff0000; }</style>
<div id="project-slide-1" class="project-slide"> ... </div>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

从HTML 5.2开始,将样式元素放置在体内是有效的,尽管仍然建议将样式元素放置在头部。

参考:https : //www.w3.org/TR/html52/document-metadata.html#the-style-element