首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据用户输入的值移动水

根据用户输入的值移动水
EN

Stack Overflow用户
提问于 2017-05-12 15:47:09
回答 1查看 56关注 0票数 0

我有一个svg的水容器。概念是用户将为水容器提供最小和最大范围。如果它达到最小级别,水位的颜色应该显示为红色,我可以这样做,但我如何才能根据用户给定的值更改该值。上层是最大部分,下层是最小部分。

path元素使我很难改变水位。我知道path的d属性应该更改,但是如何根据用户值调整d属性。

代码语言:javascript
复制
    <script>
      const MIN = 0;
      const MAX = 100;
      // if it is near to minimum, color should be change to Red
      var svg = Snap('#svg');
      const s = Snap('#waterLevel');
      const path = Snap('#path-3');
      document.getElementById('inputValue').addEventListener('change', function(event){
        path.attr({
          d: `M140.79,105 L${event.target.value}`
        });
       if (event.target.value === "50") {
         console.log('yes');
         s.attr({
           fill: 'red'
         });
       }
      })
  </script>

下面是使用translate(0,0)的更新后的jsbin示例

http://jsbin.com/pocicozini/1/edit?html,output

EN

回答 1

Stack Overflow用户

发布于 2017-05-12 20:54:23

与其改变路径的形状,不如采用另一种方法。您可以使用clipPath来剪辑液体,并更改剪辑的高度。

代码的核心将如下所示。

代码语言:javascript
复制
document.getElementById('inputValue').addEventListener('change', function(event){

   Snap.animate(200-Snap.select("#rectclip").attr('y'),event.target.value, 
      function( val ) { 
         Snap.select("#rectclip").attr({ y: 200 - val  }); 
      }, 50 );
});   

因此,我们在液体上放置一个矩形,并调整y值,使其改变多少液体路径被裁剪。

jsbin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43932209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档