【问题标题】:charts with rounded div on mask蒙版上带有圆形 div 的图表
【发布时间】:2018-05-24 03:55:32
【问题描述】:

我想根据附图实现这个条形图显示在圆形圆圈下。

我能够显示条形图,但无法将圆形/圆形 div 放在图表顶部或将图表放在圆圈内,因此图表将显示在圆圈内。我已附上代码。

任何帮助将不胜感激。

$(function() {
  $("#bars li .bar").each( function( key, bar ) {
    var percentage = $(this).data('percentage');
    
    $(this).animate({
      'height' : percentage + '%'
    }, 1000);
  });
}); 
@import url(https://fonts.googleapis.com/css?family=Roboto:400+700);
body {
  background: #30303A;
  font-family: Roboto;
}
#chart {
  width: 250px;
  height: 200px;
  margin: 30px auto 0;
  display: block;    
}
#chart #numbers {
  width: 50px;
  height: 100%;
  margin: 0;
  padding: 0;
  display: inline-block;
  float: left;
}
#chart #numbers li {
  text-align: right;
  padding-right: 1em;
  list-style: none;
  height: 29px;
  border-bottom: 1px solid #444;
  position: relative;
  bottom: 30px;
}
#chart #numbers li:last-child {
  height: 30px;
}
#chart #numbers li span {
  color: #eee;
  position: absolute;
  bottom: 0;
  right: 10px;
}
#chart #bars {
  display: inline-block;
  background: rgba(0, 0, 0, 0.2);
  width: 200px;
  height: 200px;
  padding: 0;
  margin: 0;
  box-shadow: 0 0 0 1px #444;
}
#chart #bars li {
  display: table-cell;
  width: 100px;
  height: 200px;
  margin: 0;
  text-align: center;
  position: relative;
}
#chart #bars li .bar {
  display: block;
  width: 70px;
  margin-left: 15px;
  background: #49E;
  position: absolute;
  bottom: 0;
    z-index: 1;
}
#chart #bars li .bar:before {
  color: white;
  content: attr(data-percentage) '%';
  position: relative;
  bottom: 25px;
}
#chart #bars li .bar:hover {
  background: #5AE;
  cursor: pointer;
}
#chart #bars li span {
  color: #eee;
  width: 100%;
  position: absolute;
  bottom: -3em;
  left: 0;
  text-align: center;
}

#chart #bars li .bar.bar-1 {
    background: #cd9581 ;
}
#chart #bars li .bar.bar-2 {
    background: #002f54 ;
}
#chart #bars li .bar.bar-3 {
    background: #f5e0b8 ;
}

#mask {
    border: 1px solid #fff;
    border-radius: 50%;
    background: #fff;
    position: absolute;
    z-index: 0;
    width: 200px;
    height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="chart">
  <div id="mask">
    <ul id="bars">
          <li><div data-percentage="56" class="bar bar-1"></div><span>Russian Federation</span></li>
          <li><div data-percentage="33" class="bar bar-2"></div><span>All 50 countries</span></li>
    </ul>
  </div>
</div>

【问题讨论】:

    标签: javascript html css charts rounded-corners


    【解决方案1】:

    这里,这个形状和你图片中的一样,希望对你有用

    #chart #bars li .bar 中删除margin-left:15px;,将overflow:hidden; 添加到#mask,并将width:100%; 添加到#chart #bars li .bar.bar-1#chart #bars li .bar.bar-2

    $(function() {
      $("#bars li .bar").each( function( key, bar ) {
        var percentage = $(this).data('percentage');
        
        $(this).animate({
          'height' : percentage + '%'
        }, 1000);
      });
    }); 
    @import url(https://fonts.googleapis.com/css?family=Roboto:400+700);
    body {
      background: #30303A;
      font-family: Roboto;
    }
    #chart {
      width: 250px;
      height: 200px;
      margin: 30px auto 0;
      display: block;    
    }
    #chart #numbers {
      width: 50px;
      height: 100%;
      margin: 0;
      padding: 0;
      display: inline-block;
      float: left;
    }
    #chart #numbers li {
      text-align: right;
      padding-right: 1em;
      list-style: none;
      height: 29px;
      border-bottom: 1px solid #444;
      position: relative;
      bottom: 30px;
    }
    #chart #numbers li:last-child {
      height: 30px;
    }
    #chart #numbers li span {
      color: #eee;
      position: absolute;
      bottom: 0;
      right: 10px;
    }
    #chart #bars {
    
      display: inline-block;
      background: rgba(0, 0, 0, 0.2);
      width: 200px;
      height: 200px;
      padding: 0;
      margin: 0;
      box-shadow: 0 0 0 1px #444;
    }
    #chart #bars li {
      display: table-cell;
      width: 100px;
      height: 200px;
      margin: 0;
      text-align: center;
      position: relative;
    }
    #chart #bars li .bar {
      display: block;
      width: 70px;
      
      background: #49E;
      position: absolute;
      bottom: 0;
      z-index: 1;
    }
    #chart #bars li .bar:before {
      color: white;
      content: attr(data-percentage) '%';
      position: relative;
      bottom: 25px;
    }
    #chart #bars li .bar:hover {
      background: #5AE;
      cursor: pointer;
    }
    #chart #bars li span {
      color: #eee;
      width: 100%;
      position: absolute;
      bottom: -3em;
      left: 0;
      text-align: center;
    }
    
    #chart #bars li .bar.bar-1 {
        background: #cd9581 ;
        width:100%;
    
    }
    #chart #bars li .bar.bar-2 {
        background: #002f54 ;
        width:100%;
    }
    #chart #bars li .bar.bar-3 {
        background: #f5e0b8 ;
    }
    
    #mask {
        overflow:hidden;
        border: 1px solid #fff;
        border-radius: 50%;
        background: #fff;
        position: absolute;
        z-index: 0;
        width: 200px;
        height: 200px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="chart">
      <div id="mask">
        <ul id="bars">
              <li><div data-percentage="56" class="bar bar-1"></div><span>Russian Federation</span></li>
    
              <li><div data-percentage="33" class="bar bar-2"></div><span>All 50 countries</span></li>
        </ul>
      </div>
    </div>

    【讨论】:

      【解决方案2】:

      overflow: hidden; 添加到#mask

      【讨论】:

        猜你喜欢
        • 2012-05-21
        • 2013-05-06
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 2017-10-08
        相关资源
        最近更新 更多