|
21.02.2013, 02:56
|
Новичок на форуме
|
|
Регистрация: 01.02.2013
Сообщений: 9
|
|
Помогите советом! Как реализовать идею?
Помогите советом! Представим что страница сайта поделена вертикально пополам: к примеру одна сторона зелёная, а другая красная. На обеих сторонах по кнопке, при нажатии на которые, пропорции сторон будут меняться. Если на зелёной стороне кнопка была нажата 200 раз, а на красной 800 раз, то соответственно зелёная область будет занимать 20% страницы, а красная - 80%. Желательно что-бы во время нажатия происходило изменение сторон, т.е. динамически.
У кого-то есть какие либо идеи как это можно реализовать?
|
|
21.02.2013, 03:20
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Если на красной стороне кнопка будет нажата раз, а на зеленой ни одного разу, то какая пропорция предполагается?
Какая формула зависимости размера частей от количества нажатий?
|
|
21.02.2013, 03:43
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
<!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>
Последний раз редактировалось Deff, 21.02.2013 в 04:01.
|
|
21.02.2013, 05:36
|
Новичок на форуме
|
|
Регистрация: 01.02.2013
Сообщений: 9
|
|
Спасибо большое Хорошая реализация, все работает, но мне нужно что бы размер сторон определялся процентным соотношением левого и правого нажатий. К примеру кол-во нажатий левой кнопки это leftButton, а правой - rightButton; длина левой части(в процентах) это leftPercent, а правой - rightPercent.
Тогда:
Код:
|
leftPercent = leftButton*100/(leftButton+rightButton);
rightPercent = 100-leftPercent;
или
rightPercent = rightButton*100/(leftButton+rightButton); |
На счет пропорции 3:0, думаю пусть изначально будет 1:1.
|
|
21.02.2013, 11:56
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
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>
Последний раз редактировалось Deff, 21.02.2013 в 12:01.
|
|
21.02.2013, 12:03
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от lazerru
|
leftPercent = leftButton*100/(leftButton+rightButton);
rightPercent = 100-leftPercent;
|
В скрипте это соответствует
var attLeft = (100*LeftClick/1000).toFixed(2)
var attRight=(100-attLeft).toFixed(2)
|
|
21.02.2013, 14:17
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Предложу такой вариант...
<!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>
|
|
21.02.2013, 16:23
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
ksa,
Из-за Math.floor(100*LeftClick/AllClick); под конец двигается не на каждый клик
Имхо (LeftClick/AllClick).toFixed(2) - ощутимей
(Проценты меняются в DOM с двумя знаками после запятой однозначно(а может и больше
|
|
21.02.2013, 22:22
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Deff
|
toFixed(2) - ощутимей
|
Согласен...
Просто решил посмотреть как будет смотреться с округлением.
|
|
27.02.2013, 15:52
|
Новичок на форуме
|
|
Регистрация: 01.02.2013
Сообщений: 9
|
|
Ребят, спасибо вам огроменное! Всё работает))
|
|
|
|