Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать такой ползунок? (https://javascript.ru/forum/dom-window/50885-kak-sdelat-takojj-polzunok.html)

wonderlaw 15.10.2014 21:21

Как сделать такой ползунок?
 
Вложений: 1
Ребята, выручайте, срочно нужно сделать ползунок. Но не могу его реализовать. Выручайте кому не сложно кому не сложно. Вложение 2396

рони 15.10.2014 23:00

wonderlaw,
сложно, уже десятки раз спрашивали, такой ползунок студенты пишут сами.

рони 15.10.2014 23:43

:)
http://javascript.ru/forum/css-html/...-polzunok.html
http://javascript.ru/forum/jquery/44...polzunkam.html

ID25 15.10.2014 23:51

Эй, если не можешь сам, то в CSSSR тебе делать нечего! :-E

kostyanet 16.10.2014 12:56

Такой трехуйгольник есть в системном шрифте, а полоски это бордеры. В чем проблема-то?

Aetae 16.10.2014 13:17

В фурифоксе можно так поизвращаться:
<style>
  input[type="range"]{
    background:#EACE9C;
    height: 35px;
    width: 300px;
  }
  input[type="range"]::-moz-range-track {   
    height: 2px;
    background: #000;
    border: none;
  }
  input[type="range"]::-moz-range-thumb {
    background: none;
    height: 10px;
    width: 0px;
    border: 5px solid transparent;
    border-top: 10px solid  #3A1800;
    border-radius: 0;
  }
</style>

<input type="range">

danik.js 16.10.2014 13:23

Цитата:

Сообщение от Aetae
В фурифоксе можно так поизвращаться

Поизвращаться можно и в IE и в Chrome.
<iframe src="http://jsfiddle.net/brenna/f4uq9edL/embedded/result,css,html/" width="100%" style="height:100vh"></iframe>

kostyanet 16.10.2014 13:25

Скорее всего так и сделано, только вместо бордеров - бэкграунд.

danik.js 16.10.2014 13:31

Недописанный мной плагин для vanilla.js

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
		<title></title>
		<meta name="description" content="" />
		<meta name="viewport" content="width=device-width, initial-scale=1" />
	</head>
	<body>
		<style>
html{
	width: 100%;
	height: 100%;
}
body{
	display: table-cell;
	vertical-align: middle;
	text-align: center;
}
.slider{
	display: inline-block;
	width: 300px;
	border: 1px solid #ccc;
	border-radius: 2px;
	height: 16px;
	position: relative;
}
.slider.vertical{
	width: 16px;
	height: 300px;
}
.slider .track{
	position: absolute;
	left: 6px;
	right: 6px;
	height: 100%;
}
.slider .thumb{
	display: inline-block;
	width: 10px;
	height: 22px;
	vertical-align: middle;
	border: 1px solid rgb(160, 236, 255);
	border-radius: 2px;
	position: absolute;
	left: 0;
	box-shadow: 0 0 3px rgb(57, 57, 57);
	background: rgb(223, 223, 223);
	top: -4px;
	margin-left: -6px;
}
.slider.vertical .thumb{
	width: 22px;
	height: 10px;
	left: -4px;
	top: 0;
	margin-left: 0;
	margin-top: -6px;
}
		</style>
		<input type="range" max="100">
		<span class="slider " tabindex="0">
			<span class="track">
				<span class="thumb"></span>
			</span>
		</span>
		<input type="text" id="out" />
		<script>
(function() {
var slider = document.querySelector('.slider');
var thumb = slider.querySelector('.thumb');
var isVertical = slider.classList.contains('vertical');
if (isVertical) {
	thumb.style.top = 0;
} else {
	thumb.style.left = 0;
}
var startPos;
var curPos = 0;
var pos = 0;
var value = 0;
var max = 100;
var maxPos = 0;
thumb.addEventListener('mousedown', function(e) {
	startPos = isVertical ? e.clientY : e.clientX;
	e.preventDefault();
	slider.focus();
	maxPos = isVertical ? (slider.clientHeight - thumb.offsetHeight) : (slider.clientWidth - thumb.offsetWidth);
	document.addEventListener('mousemove', onmove);
	document.addEventListener('mouseup', onup);
});
slider.addEventListener('keydown', function(e) {
	switch (e.keyCode) {
		case 37:
			if (!isVertical) {
				stepUp();
				e.preventDefault();
			}
			break;
		case 39:
			if (!isVertical) {
				stepDown();
				e.preventDefault();
			}			break;
	}
});
function stepUp() {
	if (value > 0) {
		value -= 1;
		pos = value * maxPos / max;
		updatePos();
	}
}
function stepDown() {
	if (value < max) {
		value += 1;
		pos = value * maxPos / max;
		updatePos();
	}
}
function updatePos() {
	var fn = function() {
		if (isVertical)
			thumb.style.top =  pos / (maxPos)*100 + '%';
		else
			thumb.style.left =  pos / (maxPos)*100 + '%';
	};
	window.requestAnimationFrame(fn);
}
var onmove = function(e) {
	var mousePos = isVertical ? e.clientY : e.clientX;
	pos = mousePos - startPos + curPos;
	if (pos < 0)
		pos = 0;
	if (pos > maxPos)
		pos = maxPos;
	updatePos();
	value = pos / (maxPos) * max;
	// out.value = Math.round(value);
};
var onup = function(e) {
	document.removeEventListener('mousemove', onmove);
	document.removeEventListener('mouseup', onup);
};
})();

		</script>
	</body>
</html>


Часовой пояс GMT +3, время: 22:53.