Помогите советом! Как реализовать идею?
Помогите советом! Представим что страница сайта поделена вертикально пополам: к примеру одна сторона зелёная, а другая красная. На обеих сторонах по кнопке, при нажатии на которые, пропорции сторон будут меняться. Если на зелёной стороне кнопка была нажата 200 раз, а на красной 800 раз, то соответственно зелёная область будет занимать 20% страницы, а красная - 80%. Желательно что-бы во время нажатия происходило изменение сторон, т.е. динамически.
У кого-то есть какие либо идеи как это можно реализовать? |
Если на красной стороне кнопка будет нажата раз, а на зеленой ни одного разу, то какая пропорция предполагается?
Какая формула зависимости размера частей от количества нажатий? |
<!DOCTYPE HTML> <html> <head> <style> * { margin:0; padding:0; } body { width:100%; } #green { display:inline-block; height:200px; width:50%; background-color:green; } #red { text-align:right; display:inline-block; height:200px; width:50%; background-color:red; } </style> <script> (function(){ var LeftClick=500; var RightClick=500; return attitude = function(a){ if(!a){if(RightClick-1)LeftClick++;RightClick--;} if(a) {if(LeftClick-1) LeftClick--;RightClick++;} //alert(LeftClick+RightClick) var attLeft = (100*LeftClick/1000).toFixed(2) var attRight=100-attLeft document.getElementById('green').style.width=''+attLeft+'%'; document.getElementById('red').style.width=''+attRight+'%'; } })(); </script> </head> <body> <div id=green><input type=button value=" Жми " onclick="attitude(0)"></div><div id=red><input type=button value=" Жми " onclick="attitude(1)"></div> </body> </html> |
Спасибо большое :thanks: Хорошая реализация, все работает, но мне нужно что бы размер сторон определялся процентным соотношением левого и правого нажатий. К примеру кол-во нажатий левой кнопки это leftButton, а правой - rightButton; длина левой части(в процентах) это leftPercent, а правой - rightPercent.
Тогда: Код:
leftPercent = leftButton*100/(leftButton+rightButton); |
lazerru,
Оно вроде как в % добавил Вывод соотношений <!DOCTYPE HTML> <html> <head> <style> * { margin:0; padding:0; } body { width:100%; } #green { display:inline-block; height:200px; width:50%; background-color:green; } #green span,#red span{ background-color:#fff; padding: 0 6px; border:1px #000 solid; } #red { text-align:right; display:inline-block; height:200px; width:50%; background-color:red; } </style> <script> (function(){ var LeftClick=500; var RightClick=500; Out=function (){ var attLeft = (100*LeftClick/1000).toFixed(2) var attRight=(100-attLeft).toFixed(2) document.getElementById('Left').innerHTML=''+ attLeft +'%'; document.getElementById('Right').innerHTML=''+ attRight +'%'; document.getElementById('green').style.width=''+ attLeft +'%'; document.getElementById('red').style.width=''+ attRight +'%'; } return attitude = function(a){ if(!a){if(RightClick-1)LeftClick++;RightClick--;} if(a) {if(LeftClick-1) LeftClick--;RightClick++;} Out (); } })(); window.onload = Out; </script> </head> <body> <div id=green><span id="Left"></span> <input type=button value=" Жми " onclick="attitude(0)"></div><div id=red><span id="Right"></span> <input type=button value=" Жми " onclick="attitude(1)"></div> </body> </html> |
Цитата:
var attLeft = (100*LeftClick/1000).toFixed(2) var attRight=(100-attLeft).toFixed(2) |
Предложу такой вариант...
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> * { margin:0; padding:0; } body { width:100%; } #green { float:left; height:200px; width:50%; min-width: 5%; max-width: 95%; background-color:green; } #green span,#red span{ background-color:#fff; padding: 0 6px; border:1px #000 solid; } #red { float: right; text-align:right; height:200px; width:50%; min-width: 5%; max-width: 95%; background-color:red; } </style> <script type="text/javascript"> (function(){ var AllClick=2; var LeftClick=1; var RightClick=1; Out=function (){ var attLeft = Math.floor(100*LeftClick/AllClick); var attRight=Math.floor(100*RightClick/AllClick) attLeft+=100-attLeft-attRight; document.getElementById('Left').innerHTML=''+ attLeft +'%'; document.getElementById('Right').innerHTML=''+ attRight +'%'; document.getElementById('green').style.width=''+ attLeft +'%'; document.getElementById('red').style.width=''+ attRight +'%'; } return attitude = function(a){ AllClick++; if(!a) {LeftClick++;} if(a) {RightClick++;} Out (); } })(); window.onload = Out; </script> </head> <body> <div id=red> <span id="Right"></span> <input type=button value=" Жми " onclick="attitude(1)" /> </div> <div id=green> <span id="Left"></span> <input type=button value=" Жми " onclick="attitude(0)" /> </div> </body> </html> |
ksa,
Из-за Math.floor(100*LeftClick/AllClick); под конец двигается не на каждый клик Имхо (LeftClick/AllClick).toFixed(2) - ощутимей (Проценты меняются в DOM с двумя знаками после запятой однозначно(а может и больше |
Цитата:
Просто решил посмотреть как будет смотреться с округлением. |
Ребят, спасибо вам огроменное! Всё работает))
|
Часовой пояс GMT +3, время: 04:41. |