2017-02-04 4 views
0

Я пытаюсь исправить это, но я не могу заставить его работать. Я сделал это JSFiddle, чтобы проиллюстрировать мою проблему:Как изменить положение поля ввода при фокусировке?

https://jsfiddle.net/5rj2jtym/1/

<div class="wrapper"> 
    <p>Test header</p> 
</div> 

<input type="text" class="bla" onclick="changepos()" placeholder="put some text here" /> 

И в JS:

function changepos() { 
    if(document.getElementsByClassName("bla")[0].style.top == '300px'){ 
     document.getElementsByClassName("bla")[0].style.top="0px";  
    }else{ 
     document.getElementsByClassName("bla")[0].style.top="300px"; 
    } 
} 

То, что я хочу добиться, является то, что поле ввода должно занять место абзаца/заголовка вы можете увидеть в скрипке. Поэтому, когда кто-то фокусирует/щелкает по полю ввода, поле ввода должно двигаться вверх (желательно с анимацией), чтобы мы хорошо взаимодействовали. Я попробовал его с помощью JavaScript, но я не могу заставить его работать.

+0

Пожалуйста, не катит свои правки назад. Это хорошие исправления, и я буду их восстанавливать. Пожалуйста, не надо звонить модератору. – halfer

ответ

1

Я определенно рекомендую вышеупомянутый метод CSS, но только в том случае, если вы хотите использовать свой оригинальный метод JavaScript.

function changepos(input) { 
 
    input.style.top = "0"; 
 
    input.style.transition = "all 0.8s"; 
 
} 
 

 
function resetpos(input) { 
 
    input.style.top = "300px"; 
 
    input.style.transition = "all 0.8s"; 
 
}
input { 
 
    width: 100%; 
 
    top: 300px; 
 
    position: relative; 
 
}
<div class="wrapper"> 
 

 
    <p> 
 
    Test header 
 
    </p> 
 
</div> 
 

 
<input type="text" class="bla" onfocus="changepos(this)" onblur="resetpos(this)" placeholder="put some text here" />

+1

Вопрос ... почему исходное поле уже вниз, изначально? Я бы ожидал обратного? В любом случае, спасибо человеку! – Siyah

+1

Я всегда предлагаю разместить все элементы на странице с помощью стандартных HTML и CSS, а затем использовать JavaScript для управления этими элементами. У небольшого количества пользователей могут возникнуть проблемы с JS или отключить их в браузере, поэтому рекомендуется ТОЛЬКО изменять их с помощью JS. С учетом этого стиль стиля CSS является позицией «top: 300px». Затем JS устанавливает его в «top: 0» после того, как он сфокусирован, и когда пользователь нажимает кнопку, он возвращается к позиции «top: 300px», используя функцию resetpos. Надеюсь это поможет. – DubDJ

+0

Спасибо, признателен. – Siyah

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