티스토리 뷰

# body 스크롤 중앙 도달시 클래스 추가

/**
*    바디 스크롤 중앙(_wH / 2) 클래스 추가 
*    타겟 클래스 : .js-motions
*    모션 클래스 : .m_active
*/
function motionActive() { 
    var _wH = window.innerHeight; //$(window).innerHeight();
    $('.js-motions').each(function() {
        var _t = $(this).offset().top + (_wH / 2); 
        if ($(window).scrollTop() + _wH > _t) {
            $(this).addClass('m_active');
        } else {
            $(this).removeClass('m_active');
        }
    });        
}    
$(window).on('scroll resize', motionActive);
/**
* scroll_motion()
* 바디스크롤:	중앙 못미치면(under), 
		중앙 도달하면(over), 
              	화면 도달해 넘어가면(pass)
* 타겟 클래스 : .js-secton_motion
* 모션 클래스 : .m_active
*/

function scroll_motion() { 
	var _wH = window.innerHeight; 
	var _wS = $(window).scrollTop();
	var _wHS = (_wH + _wS);
	$('.section').each(function () { 			
		var _t = $(this).offset().top + (_wH / 2); 
		var _th = $(this).offset().top + $(this).innerHeight(); 
        console.log(_wHS , _t, _th)
        
		if (_wS > _th) { 
			$(this).removeClass('m_active');    // pass 
		} else if (_wHS > _t) { 
			$(this).addClass('m_active');	   // over
		} else {								
			$(this).removeClass('m_active');    // under
		} 	
	}); 
}
$(window).on('scroll resize', scroll_motion);
$(window).trigger('scroll resize');             // 초기 실행

 

 

# 스크롤 끝도달 이밴트

/*  
* .jscss-scroll-area : 스크롤 컨테이너
* .scroll-type       : 스크롤 영역
*/
$(".jscss-scroll-area .scroll-type").scroll( function() {
  var elem = $(this); {
    if ( (elem[0].scrollHeight - elem.scrollTop() - 1) <= elem.outerHeight()){
      elem.closest(".jscss-scroll-area").addClass("scroll_end");
    }else{
      elem.closest(".jscss-scroll-area").removeClass("scroll_end");
    }
  }
});

 

# 타겟 위치에 따른 X스크롤 중앙이동

  <div class="tab-wrap js-tabmenu">
    <div class="tab_btn-area">
		
      <div class="scroll_system-type">
          <ul class="tabmenu-list">
            <li class="trp-tabitem js-tabBtn">
              <a href="#" class="tab_btn">tab1</a>                
            </li>
            <li class="trp-tabitem js-tabBtn">
              <a href="#" class="tab_btn">tab2</a>           
            </li>
            ....
          </ul>
      </div>
      
    </div>
  </div>
  $('.js-tabmenu a').on('click', function($e) {
    $e.preventDefault();
    var tar_li   = $(this).closest(".trp-tabitem"); 
    var tar_left = tar_li.position().left; 
    var js_wrap  = $(this).closest(".js-tabmenu");
    var scrollX  = tar_left - ( js_wrap.parents(".scroll_system-type").width() / 2 ) + $(this).width() / 2;
	
    /* 텝이 활성화 되있으면, 활성화 재실행 되지 않음. */
    if (tar_li.hasClass('active')){
      return false;
    }else{
      js_wrap.find(".trp-tabitem").removeClass('active');
      tar_li.addClass('active');
      console.log( "aaa", tar_left ,scrollX );
      js_wrap.find(".scroll_system-type").scrollLeft( scrollX );
    }
  });

 

 

 

'HMLT&CSS&JS > jQuery' 카테고리의 다른 글

[텍스트 글자수 제한]  (0) 2017.10.17
# 특정위치로 스크롤 ( scrollTop )  (0) 2015.04.22
jQuery css 크기 측정  (0) 2013.08.09
# jQuery 회전  (0) 2013.08.07
# chapter06 객체지향 프로그래밍  (0) 2013.02.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday