javascript - 自定义 jquery 移动 slider 标签

标签 javascript jquery css jquery-ui jquery-mobile

我正在努力让它正常工作。我想将刻度线和自定义标签添加到 jquery mobile 的 slider 小部件 (https://api.jquerymobile.com/slider/) 首先我想在 0、25、50、75 和 100 处添加刻度线标记。在每个刻度线上方我想要一个自定义字符串/标签.最后,我希望标签随着页面大小的变化而随 jquery slider 一起缩放。现在我可以添加不带刻度的标签,但它只适合一种屏幕尺寸。

    
        $( ".ui-content" ).on( "slidestop", function( event, ui ) {
            event.preventDefault();
            event.stopImmediatePropagation();
            var newState = $("#slider-0").val();
        } );
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/>


    <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"/>
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

</head>
<body>



<div data-role="page">
    <div data-role="main" class="ui-content" style="padding: 40px;">

        <div role="main" class="ui-content">
            <div class="labels" >
                <label for="points" style="display: inline; padding: 55px;">volume off</label>
                <label style="display: inline; padding: 50px;" for="points">quiet</label>
                <label style="display: inline; padding: 50px;" for="points">normal</label>
                <label style="display: inline; padding: 50px" for="points">loud</label>
                <label style="display: inline; padding: 50px" for="points">max</label>
            </div>
            <input type="range" data-highlight="true" data-popup-enabled="true" name="slider-0" id="slider-0" value="50" min="0" max="100" data-theme="b" data-track-theme="a"/>
        </div>
    </div>
</div>

</body>
</html>

我曾尝试使用 CSS % 作为填充,但没有达到预期效果。我也试过这里的建议 jQuery UI Slider Labels Under Slider , 这里 Add tick marks to jQuery slider?在这里 Set font on custom span jQuery Mobile slider labels但我无法让刻度线和标签与 slider 保持一致。我认为这将是一个简单的格式问题,但我无法将所有内容放在一起。任何帮助是极大的赞赏。

编辑

经过更多研究后,我偶然发现了这个博客:https://css-tricks.com/equidistant-objects-with-css/从那以后,我尝试了使用 flex 的选项。所以我将 flex 样式添加到我的标签类中以获得 <div class="labels" style="display: flex; justify-content: space-between;"> .我在 chrome 和 safari 上测试过它似乎工作正常。但我仍然不确定如何让滴答声发挥作用。

最佳答案

不久前,我写了一篇关于自定义 jQM slider 小部件的博客文章:

https://jqmtricks.wordpress.com/2014/04/21/fun-with-the-slider-widget/

其中是添加刻度线和随 slider 缩放的标签的示例。这是更新的代码,使标签位于 slider 上方而不是下方,以及代码在 CodePen 中运行的演示:

HTML

    <div id="example2a" class="example" >
        <label for="theSlider2a">Slider with Tick marks:</label>
        <input type="range" name="theSlider2a" id="theSlider2" min="0" max="100" value="60" />
    </div> 

JavaScript(将您想要的标签文本放在 span 中)

var ticks  = '<div class="sliderTickmarks "><span>volume off</span></div>';
    ticks += '<div class="sliderTickmarks "><span>Quiet</span></div>';
    ticks += '<div class="sliderTickmarks "><span>Normal</span></div>';
    ticks += '<div class="sliderTickmarks "><span>Loud</span></div>';
    ticks += '<div class="sliderTickmarks "><span>Max</span></div>';

$("#example2a .ui-slider-track").prepend(ticks);

CSS

.sliderTickmarks{
    -webkit-box-sizing: border-box; 
    box-sizing: border-box;
    height: 100%;
    width: 25%;    
    float: left;
    border-right: 1px solid #888;
}
.sliderTickmarks span{
    position: relative;
    left: 100%; top: -135%;
    margin-left: -16px;
    font-size: 12px; font-weight: normal; white-space: nowrap;
}
.ui-slider-track > div.sliderTickmarks:first-child{
    border-right: 0; width: 0;
}
.ui-slider-track > div.sliderTickmarks:first-child span{
    margin-left: -5px;
}
.ui-slider-track > div.sliderTickmarks:last-of-type{
     border-right: 0;
}

DEMO

关于javascript - 自定义 jquery 移动 slider 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092779/

相关文章:

html - 让滚动条忽略页面顶部的固定div

css - 如何将以下 cs 更改为一个 CSS CLASS

javascript - 在 Cytoscape.js 中拖动节点时使其他节点跟随

javascript - 当 Firestore 中集合中的所有文档被删除时返回所有文档

javascript - JQuery FadeOut 在错误的时间发生

jquery - ToggleClass 基于复选框状态

css - 在函数结束时重新加载 css

javascript - Polymer 的回调就绪停止加载我的组件

javascript - 一次淡入/淡出 DOM 元素列表

javascript - Web服务错误捕获(Jquery + asp.net Web服务)