altimetry
Simple use of jQuery UI slider.
Simple use of jQuery UI slider.
<section id="recorrido" class="black">
<section id="recorrido" class="black">
<div class="content">
<div class="text_desc">
<span class="kilo_dat">0Kms</span><br><span class="ruta_desc">Partida neutra, Las Cascadas hasta Puerto Klocker. Asfalto</span>
</div>
</div>
<div class="ruta content cf">
<div class="drag col span-2">
<div class="barra">
<span class="alti">100Msnm</span>
<span class="kilo">PARTIDA</span>
</div>
<img src="http://s.cdpn.io/953/path.svg" alt="" width="100%" heigth="100%">
<div id="recor"></div>
<p class="pie">Haz click o arrastra</p>
</div>
<div class="col span-2">
<div class="marcas"></div>
<div class="volcan"></div>
</div>
</div>
</section>
<script class="cssdeck" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="http://s.cdpn.io/953/jquery-ui.min.js"></script>
@import url(http://fonts.googleapis.com/css?family=Lato:100,300,400,900);
@import url(http://fonts.googleapis.com/css?family=Lato:100,300,400,900);
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
overflow: hidden;
}
body {
background: #222;
font-family: 'Lato', sans-serif;
}
.content {
position: relative;
margin: 0 auto;
width: 960px;
}
.span-2 {
width: 49.2%;
}
.col {
display: block;
position: relative;
float:left;
margin: 0 0 2% 1.6%;
}
.col:first-child { margin-left: 0; }
.black{
background-color: #333;
color: #FFF;
}
.black a{
color: #FF3333;
}
#recorrido {
width: 100%;
}
.marcas {
background-image: url(http://s.cdpn.io/953/secuencia.svg);
background-position: 0 0;
position: absolute;
top: 0;
left: 0;
width: 480px;
height: 425px;
z-index: 10;
}
.volcan {
background-image: url(http://s.cdpn.io/953/aereo_trans.png);
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 480px;
height: 425px;
}
.ruta {
text-align: center;
height: 430px;
}
.mas_info {
margin-top: 2em;
font-weight: 300;
text-align: center;
}
.mas_info a {
margin: 1em auto 0 auto;
}
.text_desc {
padding: 2em 0;
text-align: center;
}
.drag {
margin-top: 8em;
height: 225px;
}
.drag img {
height: 220px;
}
.barra {
background: #FF3333;
position: absolute;
bottom: 0;
left: 0;
width: 1px;
height: 120%;
}
.kilo_dat {
font-size: 4em;
font-weight: 100;
}
.ruta_desc {
font-weight: 300;
}
.alti,
.kilo {
background: #222;
box-shadow: 0 0 6px #444,
0 2px 2px #000;
display: block;
position: absolute;
font-weight: 300;
padding: 2px 4px;
transition: all 200ms ease-in-out;
transition: all 200ms ease-in-out;
transition: all 200ms ease-in-out;
transition: all 200ms ease-in-out;
transition: all 200ms ease-in-out;
}
.alti {
bottom: 5%;
left: 0;
}
.kilo {
top: -10px;
left: 0;
}
.option {
position: relative;
padding-bottom: 1em;
text-align: center;
}
.pie {
color: #FFF;
text-align: left;
font-size: 0.7em;
font-weight: 300;
line-height: 5em;
}
/* configuraciones slider */
.ui-slider-horizontal {
border-bottom: 5px solid #555a69;
cursor:pointer;
width: 100%;
height:100%;
position: absolute;
left: 0;
top: 0;
}
.ui-slider-range {
position:absolute;
left:0; bottom:0;
width:100%;
}
.ui-slider-handle {
background:#FF3333;
box-shadow: 0 0 6px #444,
0 2px 2px #000;
border-radius:100%;
cursor:pointer;
position:absolute;
bottom: -0.8em;
margin-left: -.6em;
width:20px;
height:20px;
}
.ui-slider-handle:focus {
box-shadow: 0 0 4px #555,
0 1px 2px #000;
outline:none;
}
/* ClearFix */
.cf:before,
.cf:after {
content: " ";
display: table;
}
.cf:after {
clear: both;
}
.cf {
*zoom: 1;
}
(function () {
(function () {
// altimetría
var barra = $('.barra'),
alti = $('.alti'),
kilo = $('.kilo'),
ruta_desc = $('.ruta_desc'),
marca = $('.marcas'),
marcaW = marca.width(),
marcaH = marca.height();
$('#recor').slider({
range: 'min',
min: 0,
max: 77,
step: 1,
value: 0,
slide: function (e, ui) {
var valor = (ui.value);
var unidad = 'Msnm';
if (valor >= 0) {
kilo.css('color', '#FFFFFF');
ruta_desc.text('Partida neutra, Las Cascadas hasta Puerto Klocker. Asfalto');
alti.css('bottom', 5 + '%').text('100' + unidad);
marca.css('background-position', '0 0');
}
if (valor >= 7) {
kilo.css('color', '#FF3333');
ruta_desc.text('Pto. Klocler, desvío hacia Refugio la Picada. Ripio.');
}
if (valor >= 27) {
kilo.css('color', '#FFFFFF');
ruta_desc.text('Refugio la Picada. Arena Volcánica. 1er. Abastecimiento Isotónico.');
}
if (valor >= 30) {
kilo.css('color', '#FF3333');
ruta_desc.text('Inicio Paso Desolación. Arena Volcánica.');
}
if (valor >= 42) {
kilo.css('color', '#FFFFFF');
ruta_desc.text('Lago Todos los Santos – Petrohué, Ripio, camino público. ');
}
if (valor >= 48) {
kilo.css('color', '#FF3333');
ruta_desc.text('Saltos del Petrohué, asfalto, camino público.');
}
if (valor >= 50) {
kilo.css('color', '#FFFFFF');
ruta_desc.text('Inicio Sendero El Solitario, raices, senda, corrida volcánica. 2do. Abastecimiento Isotónico.');
}
if (valor >= 56) {
kilo.css('color', '#FF3333');
ruta_desc.text('Bajada por la Burbuja hasta Lago Llanquihue. Asfalto.');
}
if (valor >= 59) {
kilo.css('color', '#FFFFFF');
ruta_desc.text('Ribera del lago y faldas del volcán, camino público. Nueva ruta asfaltada con ciclovía.');
}
if (valor >= 77) {
kilo.css('color', '#FF3333');
ruta_desc.text('Meta en Las Cascadas.');
}
// altimetría
if (valor >= 9) {
alti.css('bottom', 10 + '%').text('200' + unidad);
marca.css('background-position', -(marcaW) + 'px 0');
}
if (valor >= 12) {
alti.css('bottom', 20 + '%').text('300' + unidad);
marca.css('background-position', -(marcaW * 2) + 'px 0');
}
if (valor >= 18) {
alti.css('bottom', 35 + '%').text('400' + unidad);
marca.css('background-position', -(marcaW * 3) + 'px 0');
}
if (valor >= 21) {
alti.css('bottom', 45 + '%').text('500' + unidad);
marca.css('background-position', '0px ' + -(marcaH) + 'px');
}
if (valor >= 23) {
alti.css('bottom', 55 + '%').text('600' + unidad);
marca.css('background-position', -(marcaW) + 'px ' + -(marcaH) + 'px');
}
if (valor >= 25) {
alti.css('bottom', 60 + '%').text('700' + unidad);
marca.css('background-position', -(marcaW * 2) + 'px ' + -(marcaH) + 'px');
}
if (valor >= 26) {
alti.css('bottom', 65 + '%').text('800' + unidad);
marca.css('background-position', -(marcaW * 3) + 'px ' + -(marcaH) + 'px');
}
if (valor >= 27) {
alti.css('bottom', 75 + '%').text('900' + unidad);
marca.css('background-position', '0px ' + -(marcaH * 2) + 'px');
}
// altura maxima.
if (valor >= 28) {
alti.css('bottom', 85 + '%').text('1200' + unidad);
marca.css('background-position', -(marcaW) + 'px ' + -(marcaH * 2) + 'px');
}
if (valor >= 31) {
alti.css('bottom', 80 + '%').text('1000' + unidad);
marca.css('background-position', -(marcaW * 2) + 'px ' + -(marcaH * 2) + 'px');
}
if (valor >= 33) {
alti.css('bottom', 75 + '%').text('900' + unidad);
marca.css('background-position', -(marcaW * 3) + 'px ' + -(marcaH * 2) + 'px');
}
if (valor >= 34) {
alti.css('bottom', 60 + '%').text('700' + unidad);
marca.css('background-position', '0px ' + -(marcaH * 3) + 'px');
}
if (valor >= 36) {
alti.css('bottom', 25 + '%').text('400' + unidad);
marca.css('background-position', -(marcaW) + 'px ' + -(marcaH * 3) + 'px');
}
if (valor >= 37) {
alti.css('bottom', 20 + '%').text('300' + unidad);
marca.css('background-position', -(marcaW * 2) + 'px ' + -(marcaH * 3) + 'px');
}
if (valor >= 43) {
alti.css('bottom', 10 + '%').text('200' + unidad);
marca.css('background-position', -(marcaW * 3) + 'px ' + -(marcaH * 3) + 'px');
}
if (valor >= 53) {
alti.css('bottom', 20 + '%').text('300' + unidad);
marca.css('background-position', '0px ' + -(marcaH * 4) + 'px');
}
if (valor >= 57) {
alti.css('bottom', 10 + '%').text('200' + unidad);
marca.css('background-position', -(marcaW) + 'px ' + -(marcaH * 4) + 'px');
}
if (valor >= 65) {
alti.css('bottom', 5 + '%').text('100' + unidad);
marca.css('background-position', -(marcaW * 2) + 'px ' + -(marcaH * 4) + 'px');
}
if (valor >= 70) {
marca.css('background-position', -(marcaW * 3) + 'px ' + -(marcaH * 4) + 'px');
}
if (valor >= 76) {
marca.css('background-position', '0 0');
}
barra.css({
'left': (valor / 77 * 100) + '%'
});
$('.kilo_dat').text(valor + 'Kms');
// ancho + relleno devuelto como numero entero
var barraW = barra.width();
barraW += parseInt(barra.css('padding-left'), 10) + parseInt(barra.css('padding-right'), 10);
var altiW = alti.width();
altiW += parseInt(alti.css('padding-left'), 10) + parseInt(alti.css('padding-right'), 10);
var kiloW = kilo.width();
kiloW += parseInt(kilo.css('padding-left'), 10) + parseInt(kilo.css('padding-right'), 10);
if (valor <= 6) {
kilo.css('margin-left', -barraW + 'px').text('PARTIDA');
alti.css('margin-left', -barraW + 'px');
} else if (valor >= 71) {
kilo.css('margin-left', -(kiloW - 10) + 'px').text('META'); // fuck
alti.css('margin-left', -(altiW - barraW) + 'px');
} else {
kilo.css('margin-left', (-kiloW) / 2 + 'px').text(valor + 'Kms');
alti.css('margin-left', (-altiW) / 2 + 'px');
}
}
});
})();