封装了一个比例不均匀的滑动条

这篇博客介绍了一种在Angular (ng7)框架下实现比例不均匀的滑动条的方法。作者强调了计算滑块相对于全长的百分比以及确定滑块所在段落的复杂性,并提供了组件的代码实现,包括HTML、TypeScript和SCSS部分。此外,还给出了GitHub仓库链接供读者参考。
摘要由CSDN通过智能技术生成

一个不均匀比例的滑动条,框架使用的是ng7。复杂的地方是需要计算滑块距离左边的距离占全长的百分比,判断当前滑块在第几段。

效果图

在这里插入图片描述
可拖动可输入

代码

HTML slider.component.html

<div class="app-slider" [class.slider-unmove]="unmove" [class.disabled]="disabled" (click)="clickSlider($event)">
  <ul class="bk">
    <li style="width: 16px;"></li>
    <li *ngFor="let item of data;"
        class="slider-item"
        [ngStyle]="{flex: item.width}">
      <span [textContent]="item.count + options.unit" class="text"></span>
    </li>
  </ul>
  <div class="slider-drag"
       [style.left.px]="left"
       (mousedown)="down($event)"></div>
  <div class="moved-bk" [style.width.px]="left"></div>
  <div class="slider-input" *ngIf="options.showInput">
    <input type="number"
           [min]="min"
           [max]="max"
           [(ngModel)]="value"
           (ngModelChange)="changeValue()" />
    <div class="btns">
      <span class="add" (click)="value = value + options.step; changeValue();"><i></i></span>
      <span class="sub" (click)="value = value - options.step; changeValue();"><i></i></span>
    </div>
    <div class="unit" [textContent]="options.unit"></div>
  </div>
</div>

定义所需配置参数接口 interface

export interface OptionsDataModel {
   
  count: number; // 当前段的数值
  width: number; // 当前段所占比例 0~100 总和应为100
}

export interface OptiopnsModel {
   
  unit: string; // 单位
  step: number;
  showInput: boolean; // 是否显示input
  min?: number; // 最小值
  max?: number; // 最大值
  data: OptionsDataModel[];
}

ts slider.component.ts

import {
    Component, Input, OnInit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值