将CSS元素组合到一个元素中

时间:2014-11-05 22:22:23

标签: html css

我正在尝试使用CSS创建一个非常具体的图像(除非有更好的方法来完成它,我还没有发现)。我使用Photoshop创建了图像,但分辨率没有我想要的那么高。下面是代码和结果。但是,我想要做的是将所有三种CSS样式合二为一,这样每次我想要显示图像时,我都不必绘制三个圆圈中的每一个。任何见解都会很棒,或者更好的想法来实现同样的目标。

#box {
  display: block;
  width: 1.5em;
  height: 1.5em;
  background-color: #74afad;
  position: absolute;
  border-radius: 100%;
  z-index: -1;
  margin-top: auto;
  margin-bottom: auto;
  vertical-align: middle;
}
#whiteCircle {
  display: block;
  width: 1.25em;
  height: 1.25em;
  background-color: white;
  position: relative;
  border-radius: 100%;
  z-index: 0;
  margin-top: 50%;
  top: -.625em;
  margin-left: 50%;
  left: -.625em;
  vertical-align: middle;
}
#orangeCircle {
  display: block;
  width: 1em;
  height: 1em;
  background-color: #ff7e00;
  position: absolute;
  border-radius: 100%;
  z-index: 1;
  margin-top: 50%;
  margin-left: 50%;
  top: -.5em;
  left: -.5em;
  vertical-align: middle;
}
<div id="box">
  <div id="whiteCircle">
    <div id="orangeCircle">
    </div>
  </div>
</div>

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用伪元素而不是显式div标记将所有内容缩减为单个CSS类。

不使用ID选择器,而是使用类(.box而不是#box),然后您可以 在整个页面中安全地重复使用该课程。

&#13;
&#13;
#box {
  display: block;
  width: 1.5em;
  height: 1.5em;
  background-color: #74afad;
  position: absolute;
  border-radius: 100%;
  z-index: -1;
  margin-top: auto;
  margin-bottom: auto;
  vertical-align: middle;
}
#box:before {
  content: '';
  display: block;
  width: 1.25em;
  height: 1.25em;
  background-color: white;
  position: relative;
  border-radius: 100%;
  z-index: 0;
  margin-top: 50%;
  top: -.625em;
  margin-left: 50%;
  left: -.625em;
  vertical-align: middle;
}
#box:after {
  content: '';
  display: block;
  width: 1em;
  height: 1em;
  background-color: #ff7e00;
  position: absolute;
  border-radius: 100%;
  z-index: 1;
  margin-top: 50%;
  margin-left: 50%;
  top: -.5em;
  left: -.5em;
  vertical-align: middle;
}
&#13;
<div id="box"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

尝试使用渐变

<style type="text/css">

.circle{
width: 1.5em;
height: 1.5em;
border-radius: 50%;
background: -moz-radial-gradient(center, ellipse cover, #ff7e00 0%, #ff7e00 45%, #ffffff 45%, #ffffff 58%, #74afad 58%, #74afad 100%); /* FF3.6+ */
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#ff7e00), color-stop(45%,#ff7e00), color-stop(45%,#ffffff), color-stop(58%,#ffffff), color-stop(58%,#74afad), color-stop(100%,#74afad)); /* Chrome,Safari4+ */
background: -webkit-radial-gradient(center, ellipse cover, #ff7e00 0%,#ff7e00 45%,#ffffff 45%,#ffffff 58%,#74afad 58%,#74afad 100%); /* Chrome10+,Safari5.1+ */
background: -o-radial-gradient(center, ellipse cover, #ff7e00 0%,#ff7e00 45%,#ffffff 45%,#ffffff 58%,#74afad 58%,#74afad 100%); /* Opera 12+ */
background: -ms-radial-gradient(center, ellipse cover, #ff7e00 0%,#ff7e00 45%,#ffffff 45%,#ffffff 58%,#74afad 58%,#74afad 100%); /* IE10+ */
background: radial-gradient(ellipse at center, #ff7e00 0%,#ff7e00 45%,#ffffff 45%,#ffffff 58%,#74afad 58%,#74afad 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff7e00', endColorstr='#74afad',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */

}

</style>


<div class="circle"></div>