Показать сообщение отдельно
  #27 (permalink)  
Старый 27.04.2016, 02:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

slider зависимый ползунок + создание шкалы
Сообщение от fos
А отображать на позунке деления можно? не обязательно циферные значения, хотябы тупо черточки
мысли вслух ...
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  body {
  font-family: sans-serif;
  font-size: 12px;
}

#amount, #amount2, #amount3 {
  font-size: 22px;
  font-weight: bold;
  border:none;
  color: #ff5555;
  background: none;

}
#slider{    background-image:-webkit-gradient(linear,left,right,color-stop(0,#FFD700),color-stop(1,#FF4500));
    background-image:-o-linear-gradient(left,#FFD700,#FF4500);
    background-image:-moz-linear-gradient(left,#FFD700,#FF4500);
    background-image:-webkit-linear-gradient(left,#FFD700,#FF4500);
    background-image:linear-gradient(to right,#FFD700,#FF4500);
  margin-bottom: 40px;
   height: 6px;
   width: 300px;
}
 #slider2{
     background-image:-webkit-gradient(linear,left,right,color-stop(0,#FFD700),color-stop(1,#FF4500));
    background-image:-o-linear-gradient(left,#FFD700,#FF4500);
    background-image:-moz-linear-gradient(left,#FFD700,#FF4500);
    background-image:-webkit-linear-gradient(left,#FFD700,#FF4500);
    background-image:linear-gradient(to right,#FFD700,#FF4500);
    height: 300px;
    width: 6px;
}


 </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js">
</script>
  <script>
$(function() {
var price = {
    30: {
        30: 905,
        40: 1095
    },
    40: {
        30: 1095,
        40: 1305,
        60: 1730
    },
   50: {
        50: 1755,
        70: 2230
   },
   60: {
        40: 1730,
        60: 2255,
        90: 3045
    },
   70: {
        50: 2230,
        70: 3000,
        100: 3670
    },
   80: {
        80: 3500,
        120: 4655
    },
   90: {
        60: 3045,
        90: 4200
    },
   100: {
        70: 3670,
        100: 4755
    },
   120: {
        80: 4655,
        120: 6305
    }
};

    function comb(a) {
        return Object.keys(a)
    }

    var steps = comb(price);
    var num = steps[0];
    var steps2 = comb(price[num]);

    $("#slider2").slider({  orientation: "vertical",
        value: 0,
        min: 0,
        max: steps2.length - 1,
        step: 1,
        slide: function(event, ui) {
            var Y = steps2[ui.value];
            $("#amount2").val(Y);
            $("#amount3").val(price[num][Y]);
        },
        change: function(event, ui) {
            var Y = steps2[ui.value];
            $("#amount2").val(Y);
            $("#amount3").val(price[num][Y]);
        }
    });
    $("#slider").slider({
        value: 0,
        min: 0,
        max: steps.length - 1,
        step: 1,
        slide: function(event, ui) {
            num = steps[ui.value];
            $("#amount").val(num);
            steps2 = comb(price[num]);
            $("#slider2").slider("option","max", steps2.length - 1);
            $("#slider2").slider("option", "value", 0);
            scale(steps2, "#slider2")
        },
        change: function(event, ui) {
            num = steps[ui.value];
            $("#amount").val(num);
            steps2 = comb(price[num]);
            $("#slider2").slider("option","max", steps2.length - 1);
            $("#slider2").slider("option", "value", 0);
            scale(steps2, "#slider2")
        }
    });
    $("#slider").slider("option", "value", 0) ;
    function scale(arr, elem, width)
    {
    $(".cm", elem).remove();
    var w = 100/(arr.length-1)||100;
    !width && (arr = arr.slice().reverse());
    $.each(arr, function(i, num){
    var css = width ? {left : w * i+"%", width : w} : {top : w * i+"%", height : w};
    $("<div>",{"class" : "cm", "rel" : num, "css" : css}).appendTo(elem);
          });
    }
    scale(steps, "#slider", true)



});
  </script>
<style type="text/css">
#slider .cm {
 margin: 10px auto;
 position: absolute;
 border-left: 1px solid #555;
 height: 14px;
}
#slider .cm:after {
 position: absolute;
 bottom: -15px;
 font: 11px/1 sans-serif;
}
#slider2 .cm {
 margin:  auto 10px;
 position: absolute;
 border-top: 1px solid #555;
 width: 14px;
}
#slider2 .cm:after {
 position: absolute;
 right: -15px;
 font: 11px/1 sans-serif;
}


.cm:after {
 content:  attr(rel);
}
.ui-slider-handle{border-radius:50%; font-size: 12px;}
.ui-slider-horizontal .ui-slider-handle {
    top: -0.5em;
}
.ui-slider-vertical  .ui-slider-handle {
    left: -0.5em;
}
:focus{
    outline:0;
    border:0;
  }

</style>
</head>

<body>
    <p>
  <input type="text" id="amount" readonly>
</p>

<div id="slider"></div>

<p>
  <input type="text" id="amount2" readonly>
</p>

<div id="slider2"></div>
<p>
  <input type="text" id="amount3" readonly>
</p>
</body>
</html>

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