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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

2744閲覧

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

EXIT

総合スコア43

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2019/02/12 05:08

編集2019/02/15 05:15

問題

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

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

現状

html

1<div id="filter"> 2 <input type="range" name="page" orient="vertical" step="20" list="pagelist" /> 3 <datalist class="pagelist"> 4 <option value="1"></option> 5 <option value="2"></option> 6 <option value="3"></option> 7 <option value="4"></option> 8 <option value="5"></option> 9 </datalist> 10</div>

css

1input[type=range]:focus { 2 outline: none; 3} 4#filter { 5 position: sticky; 6 position: -webkit-sticky; 7} 8 9#filter input[type=range][orient=vertical] { 10 writing-mode: bt-lr; /* IE */ 11 -webkit-appearance: none; 12 width: 196px; 13 position: sticky; 14 position: -webkit-sticky; 15 top: 100px; 16 -webkit-transform:rotate(90deg); 17 -moz-transform:rotate(90deg); 18 -o-transform:rotate(90deg); 19 transform:rotate(90deg);  /* 90度回転 */ 20} 21/* Chrome */ 22#filter input[type=range]::-webkit-slider-runnable-track { 23 height: 13px; 24 background: url('img/jiku.svg'); 25} 26#filter input[type="range"]::-webkit-slider-thumb { 27 -webkit-appearance: none; 28 width: 16.739px; 29 height: 35px; 30 margin-top: -11px; 31 background: url('img/botan.svg') no-repeat center center; 32} 33/* Firefox */ 34#filter input[type=range]::-moz-range-track { 35 height: 13px; 36 background: url('img/jiku.svg'); 37} 38#filter input[type="range"]::-moz-range-thumb { 39 width: 16.739px; 40 height: 35px; 41 margin-top: -11px; 42 background: url('img/botan.svg') no-repeat center center; 43}

よろしくお願いします。

追記

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

chromeに関しては、

css

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

で隙間は空くようです。

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

css

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

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

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

投稿2019/02/12 05:16

編集2019/02/14 06:59
7Kreuz

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EXIT

2019/02/12 06:44

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

2019/02/14 11:42

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

2019/02/15 22:18

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

2019/02/16 14:22

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

0

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

投稿2019/02/12 05:10

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EXIT

2019/02/12 06:19

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

2019/02/12 16:50

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

2019/02/13 06:37

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問