質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.09%

input range の軸の前後に隙間をあけたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 526

EXIT

score 17

問題

① rangeの最初と最後に隙間をあけたい。
rangeがおかしい
❌ [0 1 2 3 4 5]  = 今
⭕️ [  0 1 2 3 4 5  ]
.   ↑      ↑
ここに隙間を開ける (今は隙間がないから、端に行った時に戻しずらい(gif参照))

② 途中でボタンが潰れてしまう。(gif参照)(ボタンと軸は画像です)

現状

<div id="filter">
  <input type="range" name="page" orient="vertical" step="20" list="pagelist" />
    <datalist class="pagelist">
      <option value="1"></option>
      <option value="2"></option>
      <option value="3"></option>
      <option value="4"></option>
      <option value="5"></option>
    </datalist>
</div>
input[type=range]:focus {
  outline: none;
}
#filter {
  position: sticky;
  position: -webkit-sticky;
}

#filter input[type=range][orient=vertical] {
  writing-mode: bt-lr;  /* IE */
  -webkit-appearance: none;
  width: 196px;
  position: sticky;
  position: -webkit-sticky;
  top: 100px;
  -webkit-transform:rotate(90deg);
  -moz-transform:rotate(90deg);
  -o-transform:rotate(90deg);
  transform:rotate(90deg);  /* 90度回転 */
}
/* Chrome */
#filter input[type=range]::-webkit-slider-runnable-track {
  height: 13px;
  background: url('img/jiku.svg');
}
#filter input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 16.739px;
  height: 35px;
  margin-top: -11px;
  background: url('img/botan.svg') no-repeat center center;
}
/* Firefox */
#filter input[type=range]::-moz-range-track {
  height: 13px;
  background: url('img/jiku.svg');
}
#filter input[type="range"]::-moz-range-thumb {
  width: 16.739px;
  height: 35px;
  margin-top: -11px;
  background: url('img/botan.svg') no-repeat center center;
}


よろしくお願いします。

追記

色々提案してくださってありがとうございます!
どちらもよかったのですが、より直感的にできる 7Kreuzさん の回答をベストアンサーとさせていただきます。本当にありがとうございます!

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

chromeに関しては、

input[type="range"]::-webkit-slider-runnable-track {
  margin: 0 10px;
}


で隙間は空くようです。

……と思いましたが、これだけでは画像も端まで表示されませんね。

input[type="range"]::before {
  content: "";
  position: absolute;
  height: 13px;
  width: 196px;
  background: url('img/jiku.svg');
}

のような感じで、背景画像をbefore疑似要素の中に移動させる必要がありそうです。

(追記)
割と楽な方法を思いついたのですが、ほぼ質問内のコードのままで、#filter input[type="range"]::-webkit-slider-thumb#filter input[type="range"]::-moz-range-thumbwidthを大きく(30pxとか)にしてみるのはどうでしょうか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/12 15:44

    ありがとうございます。
    やってみたのですが、rangeの画像が消えてデフォルトの感じになったり、縦→横になったりしてしまったので、
    やっぱりrangeを横から90°回転で縦にするのではなく、最初から縦にして再挑戦してみようと思います… すいません、とりあえず現状報告です。

    キャンセル

  • 2019/02/14 20:42

    ほんまやああ!!ボタン潰れる問題も解決しました!ありがとうございます!
    すごい、これって90°回転してるから見た目的には height だけど width を指定したってことですよね? なんで画像伸びたりリピートされたりしないんでしょうか?

    キャンセル

  • 2019/02/16 07:18

    解決したようで何よりです
    リピートしないのはbackgroundでno-repeatが指定されているからです

    キャンセル

  • 2019/02/16 23:22

    お〜なるほどですね!本当ありがとうございます!天才です!

    キャンセル

+2

背景のSVGを長くすればよいのでは?(包括する要素の背景にしてしまえばできると思います)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/12 15:19

    ありがとうございます。
    svgを長くしたり短くすると、svgの比率が変わるからか画像がリピートされてしまうので、
    包括要素に背景svgを入れる→中身のinput要素の背景svgを消して短く という作戦なら行けそうです。
    でも、包括要素に背景を入れることができません…透明になってしまいます。とりあえず現状報告です。

    キャンセル

  • 2019/02/13 01:50

    https://jsfiddle.net/0qy9vo1p/
    回転を[type=range]でなく外の要素で行えば背景の問題は解決できると思います。(上記例の赤い部分がSVG背景になればよい)

    キャンセル

  • 2019/02/13 15:37

    ありがとうございます。
    なるほどですね!
    この質問をした時の「rangeを90°回転して縦にする」方法では、位置変更などに難があったのでまず元から縦にしようと思ったのですが、
    画像を使っているからか縦rangeがうまくいかなくて詰まっています…(デフォルトの縦rangeにはなる)
    (ここ( https://teratail.com/questions/174007 )で質問したのですが)(添付svgは全く同じ)
    もしよろしければ試して頂きたいです…人

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる