【问题标题】:How to create JavaScript/HTML5 Spinner List with images?如何使用图像创建 JavaScript/HTML5 微调器列表?
【发布时间】:2015-04-13 10:23:03
【问题描述】:

目标:使用图像(而非文本)创建一个 Javascript/HTML5 微调器列表,以便用户可以输入体重和身高。 (示例图像/资产如下)。

环境/应用程序:使用 Cordova/Ionic 构建移动应用程序。仅支持 iOS (webkit css)。

是否有任何组件可以让我实现这一目标?

图片:

【问题讨论】:

    标签: javascript angularjs html cordova ionic-framework


    【解决方案1】:

    这可能会让您对如何实现微调器有所了解。使用 Opera、Firefox 和 Chrome for Android 测试。

    var NUM_HEIGHT = 55;
    var Y_OFFSET = 50;
    var SPINNER_HEIGHT = 150;
    
    var targetPosition = 0;
    var currentPosition = 0;
    var deltaY = 0;
    
    function targetReached() {
      deltaY = 0;
      currentPosition = targetPosition;
      document.getElementById("value").innerHTML = "Value: " + currentPosition;
    }
    
    function move() {
      var yPosition = -currentPosition * NUM_HEIGHT + deltaY + Y_OFFSET;
      document.getElementById("number").style.backgroundPosition = "0px " + yPosition + "px";
    
      if (targetPosition > currentPosition) {
        if (deltaY > -NUM_HEIGHT) {
          deltaY = deltaY - 5;
          setTimeout(move, 10);
        } else {
          targetReached();
        }
      } else if (targetPosition < currentPosition) {
        if (deltaY < NUM_HEIGHT) {
          deltaY = deltaY + 5;
          setTimeout(move, 10);
        } else {
          targetReached();
        }
      }
    }
    move();
    
    
    
    
    function getClickPosition(e) {
      // Click position handling.
      // xPosition and yPosition are relative to element bounds.
      // Source: http://www.kirupa.com/html5/getting_mouse_click_position.htm
      var parentPosition = getPosition(e.currentTarget);
      var xPosition = e.clientX - parentPosition.x;
      var yPosition = e.clientY - parentPosition.y;
    
      if (yPosition > SPINNER_HEIGHT / 2 && currentPosition != 10) {
        targetPosition = currentPosition + 1;
      } else if (yPosition < SPINNER_HEIGHT / 2 && currentPosition != 0) {
        targetPosition = currentPosition - 1;
      }
      move();
    }
    
    function getPosition(element) {
      // Helper function
      // Source: http://www.kirupa.com/html5/getting_mouse_click_position.htm
      var xPosition = 0;
      var yPosition = 0;
      while (element) {
        xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft);
        yPosition += (element.offsetTop - element.scrollTop + element.clientTop);
        element = element.offsetParent;
      }
      return {
        x: xPosition,
        y: yPosition
      };
    }
    
    // document.getElementById("number").addEventListener("click", getClickPosition, false);
    document.getElementById("number").addEventListener("mousedown", getClickPosition, false);
    #spinner {
      background: url(http://i.stack.imgur.com/0Fc85m.png);
      background-size: 100% 100%;
      background-repeat: no-repeat;
      height: 150px;
      width: 300px;
    }
    #number {
      background: url(http://i.stack.imgur.com/c0ufam.png);
      background-repeat: no-repeat;
      background-size: 100% 600px;
      height: 150px;
      width: 50px;
      margin-left: 20px;
    }
    <div id="spinner">
      <div id="number">
      </div>
    </div>
    <br />
    <div id="value">Value: 0</div>

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多