2013-09-27 2 views
2

Долгосрочный lurker здесь. Это мой первый пост (и я инженер-электрик, а не программист).HTML-элемент, разделенный пополам горизонтальной линией (на ее талии)

Я хотел бы иметь элемент в HTML, для которого я могу обнаружить щелчок по его верхней половине и нижней половине. В частности, предположим, что у меня есть большая числовая цифра, и если вы нажмете над своей «талией», она увеличивается, и если вы нажмете ниже ее талии, она уменьшится. Затем мне нужно поместить несколько из них рядом друг с другом, например, «раздвижной лоскут» на вокзале.

У меня уже есть все javascript, работающие только для инкремента, но я хочу, чтобы было проще уменьшать, вместо того, чтобы обернуть все вокруг с помощью многих кликов. Я до сих пор избегал использования jquery, поэтому, если вы можете думать о способе только для HTML, я бы хотел услышать об этом.

Я понимаю, что, вероятно, мне придется обернуть два меньших контейнера (верхний и нижний) в контейнер большего размера, но как получить текст, чтобы покрыть высоту обоих внутренних контейнеров? Я, вероятно, хочу избежать резки шрифта пополам и обновлять верхний и нижний отдельно.

Спасибо, Paul

+0

Можете ли вы опубликовать код, который вы имеете до сих пор ? И, если возможно, демо на jsfiddle.net? –

+0

да, код пожалуйста. концептуально, но это довольно просто ... на стороне html вам нужен элемент с двумя внутренними элементами, которые используют половину родительского элемента каждый. то все, что вам нужно сделать, это присоединить событие к верхнему элементу для увеличения, а событие для уменьшения нижнего элемента. –

+0

Какой код вы хотите? Javascript или HTML? Прямо сейчас это буквально просто 0, и я обновляю его до 1, когда обнаружен щелчок. Мой javascript похож на то, что Markasoftware поставил ниже: просто клик-слушатель (а для сенсорных экранов - другой слушатель). – Paul

ответ

5

Это должны работы:

element.addEventListener('click',function(e){ 
    //here's the bounding rect 
    var bound=element.getBoundingClientRect(); 
    var height=bound.height; 
    var mid=bound.bottom-(height/2); 
    //if we're above the middle increment, below decrement 
    if(e.clientY<mid) 
     ;//we're above the middle, so put some code here that increments 
    else 
     ;//we're below the middle, so put some code here that decrements 
},false); 

element является элементом, который вы хотите применить этот эффект на

+0

Он действительно работает http://jsfiddle.net/FemZ7/ очень хорошо –

+0

Он работает! Большое спасибо Markasoftware! Я попытался дать вам преимущество, но мне нужно больше очков репутации, чтобы это сделать. – Paul

+0

@Paul Спасибо! Если ответ отвечает на ваш вопрос, вы можете нажать на маленькую галочку ниже счетчика голосов. Это «принимает» вопрос, дает вам 2 репутации и дает мне 15. – Markasoftware

Смежные вопросы