javascript - 相对于输入 [type=range] 的绝对定位 - 不工作

标签 javascript jquery html css

我创建了一个范围 slider ,在 Stackoverflow 的帮助下,工具提示几乎正确地跟随 slider 。我遇到的问题是工具提示并不总是在 slider 拇指上方居中。特别是当您将 slider 从右侧向左移动时。

https://codepen.io/stinkytofu3311/pen/gWYBWb

我已经研究过这到底是怎么回事,我认为这与偏移位置有关。有人有这方面的经验吗?

// Tool Tip
$(document).mousemove(function(e){   
    if(moveit){
            var parentOffset = $('#range-slider').parent().offset(); 
            var relX = e.pageX - parentOffset.left;
            var relY = e.pageY - parentOffset.top;
            var step = $('#range-slider').width()/5; 
            valS = $('#range-slider').val();
            if(val != valS){
              val = $('#range-slider').val();
              console.log(val);
              console.log(step * val);
              var xxx = relX + step;
              console.log(relY);
              console.log(relX);
            }
            //console.log(relX);
            $('#sliderPrice').css('top', parentOffset.top-350).css('left',xxx-120);
            //console.log($("#range-slider").val());
    }
  });

最佳答案

我已经更新了您的工具提示移动功能。您不再需要 step 变量,我创建了一个新变量 offsetLeft 来代替 xxx

有一个新的 if 语句将检查 valS 是否小于或等于 val 如果是,我们加回偏移量工具提示的宽度。

此外,如果两个值不匹配并更新 val 变量,我们只会移动工具提示。

希望这对您有所帮助!

编辑

您还会注意到新的 .css() 函数调用正在使用一个对象,而不是再次调用 .css()

// Tool Tip
$(document).mousemove(function(e){   
    if(moveit){
            var parentOffset = $('#range-slider').parent().offset(); 
            var relX = e.pageX - parentOffset.left;
            var relY = e.pageY - parentOffset.top;
            var step = $('#range-slider').width()/5;
            var leftOffset = (relX - 120);
            valS = $('#range-slider').val();
            if(val != valS){
              if ( valS >= val ) {
                leftOffset += 120;
              }
              val = $('#range-slider').val();
              $('#sliderPrice').css({
                'top': parentOffset.top-350,
                'left': leftOffset
              });
            }
            //console.log(relX);
            //$('#sliderPrice').css('top', parentOffset.top-350).css('left',leftOffset);
            //console.log($("#range-slider").val());
    }
  });

关于javascript - 相对于输入 [type=range] 的绝对定位 - 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43357193/

相关文章:

javascript - 使用nodejs和mysql进行抓取时如何避免插入数据库时​​的冗余

javascript - 点击时改变图像,有mouseenter()方法和mouseleave()

javascript - 在不同行中显示多选选项

php - 如何用链接交换样式表

javascript - 为什么比较对象值会返回 false?

jquery - 如何使用 jQuery 动态添加超链接?

javascript - 使用 php 向 JSON 对象添加函数

javascript - 使用 JQuery 访问按钮值

javascript - jQuery - 取消 $.post 以防止排队

php - 在 HTML/PHP 中输​​入 RGB 值的框中显示颜色