车速表没有响应但需要

时间:2015-11-25 21:02:44

标签: html css css3 responsive-design

我正在使用这个Gauge:Stefan Beutler的http://codepen.io/Sm1lEE/pen/IhbAy。问题是我需要使其响应,以便它适应父母的大小。

我的所有尝试都会导致一个有点不圆的解决方案,我的css技能有限,所以帮助赞赏。

HTML:

<body>
    <div id="el" data-value="0">
       <span id="needle"></span>
    </div>
</body>

CSS:

#el:before {
  background: #fbfbfb;
  border-radius: 200px 200px 0 0;
  box-shadow: 3px 1px 8px rgba(0, 0, 0, 0.15) inset;
  content: "";
  height: 100px;
  position: absolute;
  width: 200px;
}

#el {
  border-radius: 200px 200px 0 0;
  height: 100px;
  margin: 50px auto 0;
  overflow: hidden;
  position: relative;
  width: 200px;
}

#el:after {
  background: #fff;
  border-radius: 140px 140px 0 0;
  bottom: 0;
  box-shadow: 3px 1px 8px rgba(0, 0, 0, 0.15);
  color: rgba(255, 80, 0, 0.7);
  content: attr(data-value);
  font-family: Lato, Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 3.5em;
  font-weight: 100;
  height: 70px;
  left: 30px;
  line-height: 95px;
  position: absolute;
  text-align: center;
  width: 140px;
  z-index: 3;
}

span {
  background: rgba(255, 80, 0, 0.7);
  border-radius: 4px;
  bottom: -4px;
  box-shadow: 3px -1px 4px rgba(0, 0, 0, 0.4);
  display: block;
  height: 8px;
  left: 10px;
  position: absolute;
  width: 90px;
  -webkit-transform-origin: 100% 4px;
      -ms-transform-origin: 100% 4px;
          transform-origin: 100% 4px;
  -webkit-transform: rotate(0deg);
      -ms-transform: rotate(0deg);
          transform: rotate(0deg);
  -webkit-transition: all 1s;
          transition: all 1s;
}

#el:hover span {
  -webkit-transform: rotate(180deg);
      -ms-transform: rotate(180deg);
          transform: rotate(180deg);
}

1 个答案:

答案 0 :(得分:0)

无法用css解决它,问题是我认为的自动高度。

使用js / jquery解决方案:

$( window ).resize(function() {
    let newWidth = $('body').width()-30;
    let newHeight = (newWidth/2); 
    let newHeightpx = (newWidth/2) + 'px'; 
    let newWidthpx = newWidth + 'px';

    $('#el').css({
        height: newHeight,
        width: newWidth,
        'border-radius': newWidthpx + ' ' + newWidthpx + ' 0 0'});

    $('<style>#el:before{ width: '+newWidthpx+'; height: '+newHeightpx+'; border-radius: '+newWidthpx+' '+newWidthpx+' 0 0; }</style>').appendTo('head');       
    $('<style>#el:after{ width: '+ (newWidth-60) +'px; height: '+ (newHeight-30) +'px; border-radius: '+(newWidth-60)+'px '+(newWidth-60)+'px 0 0; }</style>').appendTo('head');        
    $('span').css({width: (newWidth/2)-10});
});