Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.06.2021, 10:55
Кандидат Javascript-наук
Отправить личное сообщение для fori Посмотреть профиль Найти все сообщения от fori
 
Регистрация: 27.01.2021
Сообщений: 117

input type="range" и его стилизация
Здравствуйте, я на Vue 3 както задался целью создать идеальный range (для любых диапазонов) - наделал такой
<div class="wrapper">
        <input
          type="range"
          v-model="liters"
          :max="computedLitersMax"
          :min="computedLitersMin"
        />
      </div>

Код:
.wrapper {
      width: 100%;

      $heigth: 1vmin;
      $thumb-side: 0.2 * $heigth;
      input {
        width: 100%;
        display: block;
        margin: 0;

        @if $thumb-side > $heigth {
          margin-top: ($thumb-side - $heigth) / 2;
          margin-bottom: ($thumb-side - $heigth) / 2;
        }

        appearance: none;
        outline: none;
        height: $heigth;
        border-radius: $heigth / 2;
        background: linear-gradient(
          to right,
          red v-bind(litersRange),
          rgba(87, 87, 87, 0.46) v-bind(litersRange)
        );

        @mixin thumb {
          cursor: pointer;
          appearance: none;
          width: $thumb-side;
          height: $thumb-side;
          background: white;
          border-radius: 50%;
        }

        &::-webkit-slider-thumb {
          @include thumb();
        }
        &::-moz-range-thumb {
          @include thumb();
        }
        &::-ms-thumb {
          @include thumb();
        }
      }
    }
data() {
    return {

      liters: 0,
      litersMin: -10,
      litersMax: 10,

    };
  },
computed: {
    computedLitersMin() {
      return this.litersMin;
    },
    computedLitersMax() {
      return this.litersMax;
    },
    litersRange() {
      return (
        ((this.liters - this.litersMin) / (this.litersMax - this.litersMin)) *
          100 +
        "%"
      );
    },
  },

Но как оказалось что красная полосочка не вовсем в центре кружка - почему так приисходит, перфекционизм не дает мне покоя...
Изображения:
Тип файла: png 1.png (1.5 Кб, 1 просмотров)

Последний раз редактировалось fori, 23.06.2021 в 11:22.
Ответить с цитированием
  #2 (permalink)  
Старый 23.06.2021, 11:02
Кандидат Javascript-наук
Отправить личное сообщение для fori Посмотреть профиль Найти все сообщения от fori
 
Регистрация: 27.01.2021
Сообщений: 117

Эсли изменить
red v-bind(litersRange),
на
white v-bind(litersRange),

и
$thumb-side: 0.2 * $heigth;
на
$thumb-side: 2 * $heigth;
то хоть кружок и больше странности все равно происходят
или в диапазоне между -1000 — 100
Причемь чемь меньше кружок - темь меньше заметная проблемма (0.05 * $heigth; )
Изображения:
Тип файла: png 2.png (2.8 Кб, 3 просмотров)
Тип файла: png 3.png (2.7 Кб, 2 просмотров)
Тип файла: png 4.png (1.4 Кб, 2 просмотров)

Последний раз редактировалось fori, 23.06.2021 в 11:13.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
стилизация символов после запятой в input tp-20 jQuery 2 25.05.2021 11:10
Связать input type="range" multiple с инпутами диапазона "от" и "до" Yu11949 Элементы интерфейса 1 24.02.2017 15:44
Разбитие и вставка данных в input поля xaker01 Элементы интерфейса 2 20.12.2015 19:43
Заполнение элемента INPUT вычисляемым значением shah Элементы интерфейса 1 29.07.2010 14:11
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55