2014-11-26 1 views
-1

기본적으로 페이지가로드 될 때 페이지의 맨 위에있는 검색 표시 줄이 헤더 아래에 있도록 스크롤되도록 미리 지정해야합니다. 사용자가 위로 스크롤하면 볼 수 있고 사용할 수 있습니다. 이 ... 어떤 아이디어를 작동하지 않는 몇 가지 이유를 들어사용자가 위로 스크롤 할 때까지 검색 표시 줄을 숨길 수있는 방법이 있습니까? iPhone의 메시지 앱과 비슷합니까?

var lastScrollTop = 0; 
$(window).scroll(function(){ 
    var st = $(this).scrollTop(); 
    if(st<=lastScrollTop){ 
     //scroll up 
     if($(this).scrollTop()>235) $('#searchInput').removeClass('slideIn').addClass('stickySearch'); 
     else $('#searchInput').removeClass('stickySearch').addClass('slideIn'); 
    } 
    else $('#searchInput').removeClass('stickySearch').removeClass('slideIn'); 
    lastScrollTop = st; 
}); 

: I는 이것을 사용

.stickySearch{ 
    width:56% !important; 
    position:fixed !important; 
    left:0; 
    right:0; 
} 

JS :

나는 이런 식으로 CSS를 설정?

+1

당신의 질문에 대답 : 예, 그것은이다. 따라서 다른 답변을 원한다면 Stackoverflow가 여기에 있음을 알고있는 동안 http://stackoverflow.com/help/how-to-ask를 읽은 후 (그리고 따르고 있는지) 확인한 후에 올바른 질문을하는 것이 중요합니다. 당신이 이미 시도하고있는 것이 작동하지 않는 이유를 알아낼 수있게 도와줍니다. 그것은 당신이 처음부터 시작하는 데 도움이되지 않습니다, 그게 당신의 책임 (구글 검색, 그래서 검색 등) 그리고 그때 당신이 일해야 뭔가가 있다고 생각하지만, 그렇지 않으면 그 stackoverflow에 대한 질문을 할 시간이야. –

+0

CSS :'.stickySearch { 너비 : 56 %! 중요; 위치 : 고정! 중요; 왼쪽 : 0; 오른쪽 : 0; }'이것은 페이지로드시 실행되는 자바 스크립트입니다 :'var lastScrollTop = 0; $ (this) .scrollTop(); $ (this) .scrollTop(); // 스크롤 업 // (st <= lastScrollTop) addClass ('stickInSearch'); else $ ('# searchInput') removeClass ('stickinSearch'). } else $ ('# searchInput'). removeClass ('stickySearch'). removeClass ('slideIn'); lastScrollTop = st; })'아이디어 –

+0

질문에 연구 노력/결과를 언급하고 jsfiddle.net을 사용하고 달성하려는 목표에 대한 높은 수준의 개념을 작성하는 대신 문제를 올바르게 설명하십시오. –

답변

0

로직이 약간 잘못되었습니다. if 문에 대괄호를 추가하면 문제를 빨리 볼 수있었습니다. 사용자가 화면의 맨 위를 지났을 때 테스트 할 위치도 변경했습니다.

JS

var lastScrollTop = 0; 

$(window).scroll(function(){ 

    var st = $(this).scrollTop(); 

    if(st > 235) {   
     if(st<=lastScrollTop){ 
      //scroll up 
      $('#searchInput').removeClass('slideOut'); 
     } else { 
      //Scroll down 
      $('#searchInput').addClass('slideOut'); 
     } 

    } else { 
     //At top of page 
     $('#searchInput').removeClass('slideOut'); 
    } 

    lastScrollTop = st; 
}); 

CSS

.stickySearch{ 
    width:56% !important; 
    position:fixed !important; 
    left:0; 
    right:0; 
    border:1px solid grey; 
    overflow: hidden; 
    height: 1.5em; 
    line-height: 1.5em; 
    transition: height 100ms linear; 
} 

.slideOut { 
    height: 0em; 
} 

제공 바이올린 : http://jsfiddle.net/op6p9xb7/1/

+0

코드를 전혀 사용하지 않는 것과는 다른 어떤 것도하지 않는 것처럼 보입니다. 나는 이것이 웹 사이트가 아닌 전화를위한 애플 리케이션을위한 것입니다. 사용자가 위로 스크롤하지 않으면 머리글 아래에 숨겨진 "searchInput"구성 요소가 필요합니다. –

+0

html5 앱이라면 차이가 없어야합니다. 당신은 그것과 함께 적절한 CSS를 지적, 바이올린을 보셨나요? – Calummm

+0

나는 바이올린을보고 CSS를 애플 리케이션에 추가했지만 아직 차이점을 만들지 않았다. 페이지를 이미 조금만 스크롤하면 더 쉬울까요? –

관련 문제