10 плавающих уровней
Помогите сконструировать правильно страницу
Хочу сделать такое: левый столбик - заполнен цветом градиентом а значения от 0 до 100 правый столбик - до 10 уровней выделения, изначально равен высоте левого столбика, если потянуть за границу - должен появиться второй уровень, третий и т.д. до 10, высота уровней может быть разной, но в сумме по высоте они должны быть равны левому. Минимальная высота 5% от высоты левого столбика Приготовил такой скелет HTML: jsfiddle.net Кнопка адд - добавляет, делете - удаляет последний, клеар - удаляет все кроме первого, сет дефаулт - устанавливает по умолчанию 10 уровней, пытаюсь сделать чтоб ширина дива менялась от их количества - может посоветуете какой алгоритм а? |
попытался изобразить попонятнее, может теперь появяться советчики? :)
|
Цитата:
может 2 картинки ? было, за чего то тянем??? стало ... |
что касаеться тянем потянем, вроде UI с этим справиться, но принцып тот же, мне нужно чтобы бары заполняли всю высоту, но в тоже время их высота менялась, скажем если вся высота 100% и 2 бара - то 50% на 50% - потянув один в сторону другого - первый уменьшаеться на столькоже второй увеличиваеться - максимальное разрешоное сотношение в даном случае получиться 5% высоты бар 0, 95% высоты - бар 1, в идеале такое должно работать для всех 10 баров, но только за счет соседей - тоесть если мы имеем 5 баров то сжать - расширить можно только соседние бары а не все.
|
обновил еще раз фидлю:
http://jsfiddle.net/Kvark/xZKUU/14/embedded/result/ в статике - почти так как я и хотел, раздражает только маленький промежуток который появляеться при дробных процентах - как с таким бороться? И еще вылезла странность - в ИЕ (чтоб его...) как то неправильно считаеться высота дива - с чем это связано и как побороть может подскажете? |
Kvark,
размышления на тему ))) ... <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title> - jsFiddle demo by Kvark</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <link rel="stylesheet" type="text/css" href="/css/result-light.css"> <style type='text/css'>html,body{margin:0;padding:0;height:100%} body{font:76% arial,sans-serif} p{margin:0 10px 10px} a{display:block;color:#981793;padding:10px} div#header h1{height:80px;line-height:80px;margin:0;padding-left:10px;background:#EEE;color:#79B30B} div#range0{background:#CD0A31;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range1{background:#F43445;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range2{background:#F44C34;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range3{background:#F47634;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range4{background:#F49C34;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range5{background:#F4C934;height:10%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range6{background:#F4F434;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range7{background:#D5F434;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range8{background:#AEF434;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div#range9{background:#5BBE3C;height:100%;width:600px;border-top:2px #000000 groove;border-bottom:2px #000000 groove;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;display:table} div.range{display:table-cell;vertical-align:middle} div.ranges p{line-height:1.4} div#footer{background:#333;color:#FFF} div#footer p{margin:0;padding:5px 10px} div#wrapper{float:left;width:600px;height:500px;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px;} div#rangbar{float:left;width:80px;height:500px;background:#B9CAFF;font:bold 100% arial,sans-serif} div#controls{background:#FF8539;float: right;width:100%} </style> <script type='text/javascript'> $(window).load(function(){ $(document).ready(function() { var RangesColors = ["#CD0A31", "#F43445", "#F44C34", "#F47634", "#F49C34", "#F4C934", "#F4F434", "#D5F434", "#AEF434", "#5BBE3C"]; var num = $('#wrapper').size() - 1; var wrapper = $("#wrapper"); //alert("nr.: " + num); $('#add').click(function() { if (num > 9) { num = 10; } else { if (num != 10) { wrapper.append('<div id="range' + num + '">' + num + '</div>').appendTo('.wrapper'); num++; $("[id ^= range]").css({"height": ((500-500%num)/num)-4+"px"}); if(500%num)$("[id ^= range]").last().css({"height": 500%num +((500-500%num)/num)-4+"px"}); // alert(num); } }; }); $('#cls').click(function() { if(num > 1) { do { num--; $('#range' + num + ':last').remove(); } while (num > 1); } $("[id ^= range]").css({"height": "496px"}) }); $('#del').click(function() { if (num > 1) { $("[id ^= range]").last().remove(); num--; $("[id ^= range]").css({"height": ((500-500%num)/num)-4+"px"}); if(500%num)$("[id ^= range]").last().css({"height": 500%num +((500-500%num)/num)-4+"px"}); } }); $('#set').click(function() { if (num > 1) { do { num--; $('#range' + num + ':last').remove(); } while (num > 1); }; do { wrapper.append('<div id="range' + num + '">' + num + '</div>').appendTo('.wrapper'); num++; } while (num < 10); $("[id ^= range]").css({"height": ((500-500%num)/num)-4+"px"}); }); }); }) </script> </head> <body> <div id="container"> <div id="header"> <h1> Range Definition </h1> </div> <form> <div id="wrapper"> </div> </form> <div id="rangbar"> <p> - [100 %] -</p> <p> - [ 90 %] -</p> <p> - [ 80 %] -</p> <p> - [ 70 %] -</p> <p> - [ 60 %] -</p> <p> - [ 50 %] -</p> <p> - [ 40 %] -</p> <p> - [ 30 %] -</p> <p> - [ 20 %] -</p> <p> - [ 10 %] -</p> <p> - [ 0 %] -</p> </div> <div id="controls"> <p><input id="cls" name="cls" type="button" value="Clear all"><input id="add" name="add" type="button" value="Add range"><input id="del" name="del" type="button" value="Delete range"><input id="set" name="set" type="button" value="Set default"></p> </div> <div id="footer"> </div> </div> </body> </html> |
спасибо за вставку, я пока так и не понял как вставлять такое типа "запустить"
div#range5{background:#F4C934;height:10%; < очепятка =) и wrapper.append('<div id="range' + num + '">' + num + '</div>').appendTo('.wrapper'); .appendTo('.wrapper') ненужен это я не чтоб придраться, а для тех кто может тоже будет искать как да что |
Цитата:
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Cпасибо! Научился, почти :) вот только с размерами фрэйма что то нелады... если указываю ширину - получаю мелкий четырех угольник...
На текущий момент такое: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"> <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" > <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="robots" content="noindex,nofollow,noodp,noydir,noarchive,nosnippet"/> <base target="_parent"> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> <title> Ranges </title> <style type="text/css"> html, body { margin: 0; padding: 0; height: 100%; } body { font: 76% arial,sans-serif; } p { margin: 0px 5px 5px 0px; line-height:1.7; } a { display:block; color: #981793; padding:10px; } div#header { width: 720px; } div#header h1 { height:80px; line-height:80px; margin:0; padding-left:10px; background: #EEE; color: #2540D0 } div#range0 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range1 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range2 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range3 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range4 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range5 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range6 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range7 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range8 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div#range9 { width: 650px; border-top: 2px #000000 groove; border-bottom: 2px #000000 groove; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 0px; display: table; } div.range { display: table-cell; vertical-align: middle; } div#footer { background: #333; color: #FFF; } div#footer p { margin: 0; padding: 5px 10px; } div#wrapper { float: left; width: 650px; height: 490px; margin: 14px 0px 0px 14px; padding: 0px 0px 0px 0px; } div#rangs { float: left; background: #B9CAFF; height: 530px; } div#rangsbar { display: table; float: left; width: 56px; height: 530px; background: #B9CAFF; font: bold 100% arial,sans-serif } div#controls { display: table; float: left; clear:both; background: #FF8539; height: 30px; width: 710px; margin: 0px 0px 0px 0px; padding: 0px 0px 0px 10px; } </style> <script type='text/javascript'> $(window).load(function() { $(document).ready(function() { var RangesColors = ["#CD0A31", "#F43445", "#F44C34", "#F47634", "#F49C34", "#F4C934", "#F4F434", "#D5F434", "#AEF434", "#5BBE3C"]; var RangesNames = ["Range A", "Range B", "Range C", "Range D", "Range E", "Range F", "Range G", "Range H", "Range J", "Range I"]; var RangesBorders = ["90-100", "80-90", "70-80", "60-70", "50-60", "40-50", "30-20", "20-10", "10-20", "0-10"]; var num = $('#wrapper').size() - 1; var wrapper = $("#wrapper"); $('#add').click(function() { if (num > 9) { num = 10; } else { if (num != 10) { wrapper.append('<div id="range' + num + '"><div class="range"> ' + num + '<b> Color: </b><input type="text" name="bar' + num + '" class="field" value="' + RangesColors[num] + '" maxlength="7" align="middle" style="width: 60px;"><b> Name: </b><input type="text" name="barname' + num + '" class="field" value="' + RangesNames[num] + '" style="width: 300px;"><b> % Borders: </b><input type="text" name="border' + num + '" class="field" value="' + RangesBorders[num] + '" style="width: 42px;"></div></div>'); $('#range'+ num).css({ "background": RangesColors[num] }); num++; $("[id ^= range]").css({"height": ((500-500%num)/num)-4+"px"}); if(500%num)$("[id ^= range]").last().css({"height": 500%num +((500-500%num)/num)-4+"px"}); // alert(num); } }; }); $('#cls').click(function() { if(num > 1) { do { num--; $('#range' + num + ':last').remove(); } while (num > 1); } $("[id ^= range]").css({"height": "496px"}) }); $('#del').click(function() { if (num > 1) { $("[id ^= range]").last().remove(); num--; $("[id ^= range]").css({"height": ((500-500%num)/num)-4+"px"}); if(500%num)$("[id ^= range]").last().css({"height": 500%num +((500-500%num)/num)-4+"px"}); } }); $('#set').click(function() { if (num > 1) { do { num--; $('#range' + num + ':last').remove(); } while (num > 1); }; do { wrapper.append('<div id="range' + num + '"><div class="range"> ' + num + '<b> Color: </b><input type="text" name="bar' + num + '" class="field" value="' + RangesColors[num] + '" maxlength="7" align="middle" style="width: 60px;"><b> Name: </b><input type="text" name="barname' + num + '" class="field" value="' + RangesNames[num] + '" style="width: 300px;"><b> % Borders: </b><input type="text" name="border' + num + '" class="field" value="' + RangesBorders[num] + '" style="width: 42px;"></div></div>'); $('#range'+ num).css({ "background": RangesColors[num] }); num++; } while (num < 10); $("[id ^= range]").css({"height": ((500-500%num)/num)-4+"px"}); }); }); }); </script> </head> <body> <div id="header"> <h1> Range Definition </h1> </div> <div id="container"> <form> <div id="rangs"> <div id="wrapper"> </div> </div> </form> <div id="rangsbar"> <div class="range"> <p> - [100 %]</p> <p>-</p> <p> - [ 90 %]</p> <p>-</p> <p> - [ 80 %]</p> <p>-</p> <p> - [ 70 %]</p> <p>-</p> <p> - [ 60 %]</p> <p>-</p> <p> - [ 50 %]</p> <p>-</p> <p> - [ 40 %]</p> <p>-</p> <p> - [ 30 %]</p> <p>-</p> <p> - [ 20 %]</p> <p>-</p> <p> - [ 10 %]</p> <p>-</p> <p> - [ 0 %]</p> </div> </div> </div> <div id="controls"> <div class="range"> <input id="cls" name="cls" type="button" value="Clear all"><input id="add" name="add" type="button" value="Add range"><input id="del" name="del" type="button" value="Delete range"><input id="set" name="set" type="button" value="Set default"> </div> </div> </body> </html> Я почти завершил что хотелось получить! Последние штрихи остались: - никак не придумаю как сделать чтобы ширина регионов менялась в зависимости указаных пределов (от драг дропа пока решил отказаться - не работает, или не сумел настроить правильно :() - сделать смену цвета для дива в зависимости указаного в ячейке кода как только будет кликнуто из нее - подскажите как это "заметить"? |
Часовой пояс GMT +3, время: 11:13. |