Как css диапазон ввода типа? - PullRequest
0 голосов
/ 13 апреля 2020

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import SoundCloudAudio from 'soundcloud-audio';
import ClassNames from 'classnames';
import { VolumeIconLoudSVG, VolumeIconMuteSVG } from './Icons';

class VolumeControl extends Component {
  handleVolumeChange(e) {
    const {
      onVolumeChange,
      onToggleMute,
      soundCloudAudio,
      isMuted
    } = this.props;
    const xPos = (e.target.value / 100);
    const mute = (xPos <= 0 && !isMuted);

    if (soundCloudAudio && !isNaN(soundCloudAudio.audio.volume)) {
      soundCloudAudio.audio.volume = xPos;
      soundCloudAudio.audio.muted = mute;
    }

    if (mute !== isMuted) {
      onToggleMute && onToggleMute.call(this, mute, e);
    }

    onVolumeChange && onVolumeChange.call(this, xPos, e);
  }

  handleMute(e) {
    const { onToggleMute, soundCloudAudio } = this.props;

    if (soundCloudAudio && !isNaN(soundCloudAudio.audio.muted)) {
      soundCloudAudio.audio.muted = !soundCloudAudio.audio.muted;
    }

    onToggleMute && onToggleMute.call(this, !this.props.isMuted, e);
  }

  render() {
    const { className, buttonClassName, rangeClassName, volume, isMuted } = this.props;

    let value = volume * 100 || 0;

    if (value < 0 || isMuted) {
      value = 0;
    }

    if (value > 100) {
      value = 100;
    }

    const classNames = ClassNames('sb-soundplayer-volume', className);
    const buttonClassNames = ClassNames('sb-soundplayer-btn sb-soundplayer-volume-btn', buttonClassName);
    const rangeClassNames = ClassNames('sb-soundplayer-volume-range', rangeClassName);

    return (
      <div className={classNames}>
        <button className={buttonClassNames} onClick={::this.handleMute}>
          {isMuted ? <VolumeIconMuteSVG /> : <VolumeIconLoudSVG />}
        </button>
        <div>
          <input className={rangeClassNames} type="range" min="0" max="100" step="1" value={value} onChange={::this.handleVolumeChange} />
        </div>
      </div>
    );
  }
}

VolumeControl.propTypes = {
  className: PropTypes.string,
  buttonClassName: PropTypes.string,
  rangeClassName: PropTypes.string,
  volume: PropTypes.number,
  onVolumeChange: PropTypes.func,
  onToggleMute: PropTypes.func,
  soundCloudAudio: PropTypes.instanceOf(SoundCloudAudio)
};

VolumeControl.defaultProps = {
  volume: 1,
  isMuted: 0
};

export default VolumeControl;
.sb-soundplayer-volume {
  position: relative;
}
.sb-soundplayer-volume:hover div {
  width: 80px;
}
.sb-soundplayer-volume div {
  overflow: hidden;
  width:0;
  transition: width .2s ease-out;
  position: relative;
}
.sb-soundplayer-volume-range {
  -webkit-appearance: none;
  width: 98%;
}
.sb-soundplayer-volume-range:focus {
  outline: none;
}

/* track */
.sb-soundplayer-volume-range::-webkit-slider-runnable-track {
  width: 100%;
  height: 0.2em;
  cursor: pointer;
  animate: 0.2s;
  background: var(--sb-volume-track-color);
  border-radius: 1.3px;
}
.sb-soundplayer-volume-range::-moz-range-track {
  width: 100%;
  height: 0.2em;
  cursor: pointer;
  animate: 0.2s;
  background: var(--sb-volume-track-color);
  border-radius: 1.3px;
}
.sb-soundplayer-volume-range::-ms-track {
  width: 100%;
  height: 0.2em;
  cursor: pointer;
  animate: 0.2s;
  background: var(--sb-volume-track-color);
  border-radius: 1.3px;
}

/* thumb dial */
.sb-soundplayer-volume-range::-moz-range-thumb {
  height: 1em;
  width: 1em;
  border-radius: 1em;
  background: var(--sb-volume-dial-color);
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -0.4em;
}
.sb-soundplayer-volume-range::-webkit-slider-thumb {
  height: 1em;
  width: 1em;
  border-radius: 1em;
  background: var(--sb-volume-dial-color);
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -0.4em;
}
.sb-soundplayer-volume-range::-ms-thumb {
  height: 1em;
  width: 1em;
  border-radius: 1em;
  background: var(--sb-volume-dial-color);
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -0.4em;
}

/* progress fill */
.sb-soundplayer-volume-range::-ms-fill-lower {
  background: var(--sb-volume-progress-color);
}

:root {
  --sb-volume-dial-color: #FC561E;
  --sb-volume-track-color: #DDD;
  --sb-volume-progress-color: #FC561E;
}
About
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

введите описание изображения здесь

У меня есть проблема CSS, как на изображении выше, это происходит только на iPhone. Фон ввода белый, и это не происходит в браузерах и Android устройствах. Как сделать CSS с белого фона на другой цвет фона на iPhone? Ждем помощи. спасибо всем.

Я использую реагирующий звуковой плеер KOSMETISM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...