스크롤 내리면 상단에 붙는 메뉴관련.

스크롤 내리면 상단에 붙는 메뉴관련.

QA

스크롤 내리면 상단에 붙는 메뉴관련.

본문

스크롤을 내리면 중간메뉴가 상단에 고정되게 작업을 했습니다.

각 메뉴 카테고리마다 해당 위치로 가면 스타일이 바뀌게 까지 작업을 했습니다.

문제는, 크롬에서는 이상이 없는데 익스플로러에서

메뉴 클릭시 해당 메뉴부분 스타일이 활성화가 안됩니다.

 

아래 소스 보시면 이해가 쉬을듯 합니다.

빨간색으로 표기한 스타일 부분에 높이값을 주면 이상없이 보여지긴 하는데, 각 영역마다 강제로 높이값을 줄수는 없는 상황입니다.

 

어떤 부분이 문제인지 아시는분 계실까요..이것저것 시도해봐도 안되네요;;

 

------------------------------------------------------------------------------------

<script src="http://code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
<style type="text/css">
*{padding:0;margin:0;}
.tabBt {overflow:hidden; position:absolute; top:0; text-align:center; width:100%; z-index:9;}
.tabBt li {width:200px; display:inline-block; font-size:17px;}
.tabBt li a {display:block; padding:10px; border:1px solid #ddd; background:#fff; text-align:center; color:#666;}
.tabBt li.on a { padding:10px; border:1px solid #007daa; background:#fff; color:#007daa;}

 

/*아래 부분 패딩값말고 height:1200px; 와같이 높이값을 주면 이상없이 보여짐*/
#sCon01 { padding:600px 0; background:#ccc;}
#sCon02 { padding:600px 0; background:#ddd;}
#sCon03 { padding:600px 0; background:#eee;}
</style>

 

<script type="text/javascript">
 //<![CDATA[
  $(document).ready(function(){
   tabScroll(".tabBt");
  });
  function tabScroll(id){
   var tabId = $(id);
   var tabIdtop = tabId.offset().top;
   var tabIdHe = tabId.height();

   $(window).scroll(function(){
    if ($(this).scrollTop() >= tabIdtop) {
     tabId.css({"position":"fixed"});
    } else {
     tabId.css({"position":"absolute"});
    }
   });

   tabId.find("li").each(function(){
    var liThis = $(this);
    var divId = liThis.find("a").attr("href");
    var divIdtop = $(divId).offset().top-tabIdHe;
    liThis.bind("click", function(e){
     e.preventDefault();
     $('body,html').animate({scrollTop: divIdtop},300);
    });
    $(window).scroll(function(){
     if ($(this).scrollTop() >= divIdtop ) {
      liThis.addClass("on").siblings().removeClass("on");
     }
    });
   });
  }
</script>

<div class="sub_content">
    <ul class="tabBt">
  <li class="on"><a href="#sCon01">메뉴1</a></li>
  <li><a href="#sCon02">메뉴2</a></li>
  <li><a href="#sCon03">메뉴3</a></li>
 </ul>

 <div id="sCon01">111</div>
 <div id="sCon02">222</div>
 <div id="sCon03">333</div>

</div>

------------------------------------------------------------------------------------

이 질문에 댓글 쓰기 :

답변 2

아래부분을

  if ($(this).scrollTop() >= divIdtop ) {
      liThis.addClass("on").siblings().removeClass("on");
     }

아래처럼 고쳐보세요

  if ($(this).scrollTop() >= divIdtop-1 ) {
      liThis.addClass("on").siblings().removeClass("on");
     }

주소를 알려주시는게 더 파악하기 쉽습니다.

http://ydh5676.dothome.co.kr/web/test01.html
위 주소는 sCon01~sCon03부분에 패딩값을 줘서, 네비게이션 스타일이 안먹히는 경우구요..

http://ydh5676.dothome.co.kr/web/test02.html
위 주소는 sCon01~sCon03부분에 높이값을 줘서, 이상없이 작동되는 경우입니다..

답변을 작성하시기 전에 로그인 해주세요.
전체 5
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT