2016-06-04 2 views
0

크기를 조정할 때 로고와 메뉴에 어려움을 겪고 있습니다. 페이지를로드하고 창 너비가 500px 미만이고 navicon을 클릭하면 모든 것이 올바르게 작동합니다. 그러나 브라우저 창을 더 높은 너비로 크기를 조정하고 500px 아래로 다시 조정하면 로고와 탐색 도구가 둘 다 전환됩니다.Jquery Menu and Logo Toggle

내비게이션을 클릭하자마자 내 로고가 나타나기를 바라고, 특히 크기가 조정될 때 내비게이션을 사용하고 싶습니다.

var menu = $(".nav"); 
 
var toggle = $('#navicon'); 
 

 

 
$(function() { 
 
    $(toggle).on('click', function(e) { 
 
    e.preventDefault(); 
 
    menu.toggle(); 
 
    if ($(window).resize && $(window).width() <= 500) { 
 
     $('#logo').toggle(); 
 
    } 
 

 
    }); 
 

 
}); 
 

 

 
$(window).resize(function() { 
 
    if ($(window).width() > 500) { 
 
    $('.nav').show(); 
 
    $('#logo').show(); 
 
    } 
 
})
#logo { 
 
    width: 150px; 
 
} 
 

 
.nav { 
 
    display: inline; 
 
    position: relative; 
 
} 
 

 
#navicon { 
 
    position: absolute; 
 
    right: 2.5em; 
 
    top: 2em; 
 
    display: none; 
 
} 
 

 
@media (max-width: 780px) { 
 
    .navbar { 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: space-between; 
 
    } 
 
    .nav { 
 
    display: none; 
 
    } 
 
    #navicon { 
 
    display: block; 
 
    } 
 
    #logo { 
 
    width: 100px !important; 
 
    } 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" rel="stylesheet"/> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav class="navbar navbar-light navbar-fixed-top "> 
 

 
    <a href><img id="logo" class="img-fluid pull-md-left m-a-0" src="http://www.trainingsrausch.net/wp-content/uploads/2015/07/TR-logo-CMYK.png"></a> 
 
    <span class="m-r-3" id="navicon"> 
 
     <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#exCollapsingNavbar"> 
 
      &#9776; 
 
     </button> 
 
     </span> 
 
    <ul class="nav navbar-nav pull-md-right m-y-2 m-r-3"> 
 
    <li class="nav-item active"> 
 
     <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> 
 
    </li> 
 
    <li class="nav-item"> 
 
     <a class="nav-link" href="#">Mitmachen</a> 
 
    </li> 
 
    <li class="nav-item"> 
 
     <a class="nav-link" href="#">About</a> 
 
    </li> 
 
    </ul> 
 
</nav> 
 
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js" integrity="sha384-vZ2WRJMwsjRMW/8U7i6PWi6AlO1L79snBrmgiDpgIWJ82z8eA5lenwvxbMV1PAh7" crossorigin="anonymous"></script>

나는 비슷한 질문을 찾기 위해 노력하고 몇 가지가있는 경우, 저에게 알려주세요!

감사합니다.

+0

내비게이션이 나타나지 않으므로 스 니펫에 오류가있는 것으로 보입니다. 또한 원하는 동작이 무엇인지 명확하게하려는 경우 : 화면이 500px보다 넓고 <= 500px 인 경우 탐색기에 로고와 탐색 아이콘을 표시하고 탐색 아이콘을 클릭하면 전환해야합니다. 로고와 nav 사이에? 탐색이 켜져 있고 크기를 크게 조정 한 다음 다시 작게 조정하면 탐색을 닫은 상태로 재설정 하시겠습니까? 아니면 열렸던 상태 (열린 상태)를 유지하고 싶습니까? – ryantdecker

+0

안녕하세요. 힌트를 보내 주셔서 감사합니다. :) 코드 스 니펫의 닫기 버튼이 내 navicon을 커버한다고 생각합니다. 500px 미만으로 축소하면 nav가 다시 닫히면 더 쉬울 것이라고 생각하지만 시도해야합니다. – Hendrik

+0

이 코드를 jsfiddle에 추가 할 수 있습니까? – frnt

답변

0

첫째, 부트 스트랩이 모바일 우선 접근 방식을 사용하기 때문에 코드를 조금 업데이트했습니다.

나는이 당신이 원하는 것을 생각 :

http://jsbin.com/rufuyebufu/10/edit?html,css,js

+0

완벽하게 고마워요! isLogoShown =을 사용하셨습니까? isLogoShown; 무한 루프를 피하기 위해? 미안 해요 초보자입니다 :) – Hendrik

+0

'isLogoShown =! isLogoShown'는이 상황에서 작동하지 않습니다. 왜냐하면 로고가 보이기 때문에 메뉴가 감추어 지거나 뒤집어지기 때문입니다. 또한 isLogoShown =! isLogoShown은 새 할당 후에 isLogoShown이 true이면 isLogoShown이 false가됨을 의미합니다. 이것은 일종의 마누엘 토글입니다. –

+0

이것은 분명히 질문의 목표를 달성하고 있지만 (가능한 한 원래 코드와 유사하기 위해) 실제로 행동을 수행하는 데 필요한 것보다 훨씬 많은 JS입니다. – ryantdecker

0

당신은이 (이하 JavaScript)를 할 수있는 훨씬 가볍고 방법을 고려할 수 있습니다 :

$('#navicon').click(function() { 
    $('body').toggleClass('menuOn'); 
}); 

$(window).resize(function() { 
    if ($(window).width() > 780) { 
    $('body').removeClass('menuOn'); 
    } 
}); 

추가 CSS :

@media (max-width:780px) { 

    .menuOn #logo {display:none;} 

    .nav {display:none;} 

    .menuOn .nav {display:inline;} 
} 

https://jsfiddle.net/ft2o8ra9/