是否可以将渐变添加到与其宽度对应的元素?

时间:2017-10-25 10:09:04

标签: html css



.surf_bar_container {
  width: 100%;
  background-color: #ddd;
  margin: 10px;
  margin-bottom: 30px;
  box-shadow: 0px 10px 23px #888888;
}

.surf_bar {
  text-align: right;
  background: linear-gradient(to right, green, salmon);
  line-height: 40px;
}

p {
  padding-right: 10px;
}

<div class="surf_bar_container">
  <div class="surf_bar" style="width:93%;">
    <p>93%</p>
  </div>
</div>
&#13;
&#13;
&#13;

我正在设置它的宽度服务器端(在这种情况下,我只是硬编码93%)。但有可能让它越接近100%我越接近绿色越接近0%它会得到吗?

3 个答案:

答案 0 :(得分:1)

您可以将flexbox用于此目的。根据我对您的问题的理解,您希望渐变为条宽的100%,但希望根据百分比值屏蔽部分渐变。在这种情况下,您需要:

  • 使用.surf_bar_container本身
  • 上的渐变
  • .surf_bar标记将保持不变
  • 在容器上使用display: flex,并使用::after
  • 创建一个.surf_bar伪元素,该元素将占用flex: auto未占用的剩余宽度

CSS3 flexbox module is quite widely supported among browsers。对于那些使用传统flexbox规范的人来说,该解决方案仍然可行,因为它是flexbox的一个非常基本的属性。

以下概念验证:

.surf_bar_container {
  width: 100%;
  background-image: linear-gradient(to right, green, salmon);
  margin: 10px;
  margin-bottom: 30px;
  box-shadow: 0px 10px 23px #888888;
  display: flex;
}

.surf_bar_container::after {
  content: '';
  background-color: #ddd;
  flex: auto;
}

.surf_bar {
  text-align: right;
  line-height: 40px;
}

p {
  margin: 0;
  padding-right: 10px;
}
<div class="surf_bar_container">
  <div class="surf_bar" style="width:15%;">
    <p>15%</p>
  </div>
</div>

<div class="surf_bar_container">
  <div class="surf_bar" style="width:85%;">
    <p>85%</p>
  </div>
</div>

答案 1 :(得分:0)

你可以在两者之间使用多种颜色,我希望这可以是你想要的。如果您不喜欢它们,请忽略颜色,您可以使用自己的颜色十六进制值。

<强> Check the updated fiddle

 .surf_bar_container {
  width: 100%;
  background-color: #ddd;
  margin: 10px;
  margin-bottom: 30px;
  box-shadow: 0px 10px 23px #888888;
  }
  .surf_bar {
  text-align: right;
  background: linear-gradient(to right, green , lightgreen, salmon, red);
  line-height: 40px;
  }
  p {
  padding-right: 10px;
  }

希望这有帮助

答案 2 :(得分:0)

function barSizeChange(){
var div_height1 = $(".surf_bar_container”).width();
var div_height2 = $(".surf_bar”).width();
if(div_height2 > .6*div_height1){
      $(".surf_bar").css({ "background": "linear-gradient(to right, 
green , green)"}) 
}
}

jQuery检查...的宽度。 希望这就是你想要的。