테스트 사이트 - 개발 중인 베타 버전입니다

부트스트랩으로 메뉴 만드는중인데 클릭 오류가 나네요. 채택완료

천사밍 3년 전 조회 1,825

안녕하세요.

 

부트스트랩4 버전을 사용해 메뉴를 만드는중인데 스타일에 dropdown:hover 만 적용하면

 

모바일에서 메뉴가 더블 클릭 되네요.

 

테스트 페이지 모바일로 들어가셔서 메뉴 누르고 Messages1 메뉴를 눌렀다가 Messages2, 3 메뉴를

 

터치하면 메뉴가 열려야 되는데 더블클릭 현상으로 열려있던 Messages1 의 메뉴가 닫혀 버리네요.

 

dropdown:hover 를 스타일에서 빼면 모바일에서는 정상이지만 pc에서 hover 기능이 안되서 난감하네요.

 

모바일에서 더블클릭 안되게 해결 방법이 있을까요?

 

</p>

<p><!doctype html>

<html lang="ko">

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<meta http-equiv="imagetoolbar" content="no">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title>테스트</title>

</head></p>

<p><!-- Latest compiled and minified CSS -->

<link rel="stylesheet" href="<a href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">" target="_blank" rel="noopener noreferrer">https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css"></a></p>

<p><!-- jQuery library -->

<script src="<a href="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>" target="_blank" rel="noopener noreferrer">https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script></a></p>

<p><!-- Popper JS -->

<script src="<a href="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>" target="_blank" rel="noopener noreferrer">https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script></a></p>

<p><!-- Latest compiled JavaScript -->

<script src="<a href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>" target="_blank" rel="noopener noreferrer">https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script></a></p>

<p><style>

    .dropdown:hover .dropdown-menu{

        display: block;

    }

    .dropdown-menu{

        margin-top: 0;

    }

</style></p>

<p><script>

$(document).ready(function(){

    $(".dropdown").hover(function(){

        var dropdownMenu = $(this).children(".dropdown-menu");

        if(dropdownMenu.is(":visible")){

            dropdownMenu.parent().toggleClass("open");

        }

    });

});     

</script></p>

<p><body>

    <nav class="navbar navbar-expand-md navbar-dark bg-dark">

        <a href="#" class="navbar-brand">Brand</a>

        <button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarCollapse">

            <span class="navbar-toggler-icon"></span>

        </button></p>

<p>        <div class="collapse navbar-collapse" id="navbarCollapse">

            <div class="navbar-nav">

                <a href="#" class="nav-item nav-link active">Home</a>

                <a href="#" class="nav-item nav-link">Profile</a>

                <div class="nav-item dropdown">

                    <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Messages1</a>

                    <div class="dropdown-menu">

                        <a href="#" class="dropdown-item">Inbox</a>

                        <a href="#" class="dropdown-item">Sent</a>

                        <a href="#" class="dropdown-item">Drafts</a>

                        <a href="#" class="dropdown-item">Inbox</a>

                        <a href="#" class="dropdown-item">Drafts</a>

                        <a href="#" class="dropdown-item">Inbox</a>

                        <a href="#" class="dropdown-item">Sent</a>

                        <a href="#" class="dropdown-item">Drafts</a>

                        <a href="#" class="dropdown-item">Inbox</a>

                        <a href="#" class="dropdown-item">Sent</a>

                    </div>

                </div></p>

<p>

                <div class="nav-item dropdown">

                    <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Messages2</a>

                    <div class="dropdown-menu">

                        <a href="#" class="dropdown-item">Inbox</a>

                        <a href="#" class="dropdown-item">Sent</a>

                        <a href="#" class="dropdown-item">Drafts</a>

                    </div>

                </div></p>

<p>                <div class="nav-item dropdown">

                    <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">Messages3</a>

                    <div class="dropdown-menu">

                        <a href="#" class="dropdown-item">Inbox</a>

                        <a href="#" class="dropdown-item">Sent</a>

                        <a href="#" class="dropdown-item">Drafts</a>

                    </div>

                </div>

            </div>

        </div>

    </nav>

</body>

</html></p>

<p>

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
m
3년 전

navbar 분기를 navbar-expand-md로 사용했으니까

CSS와 JS에 768기준으로 분기점을 지정해서 사용 

</p>

<p>@media (min-width: 768px) { 

.dropdown:hover .dropdown-menu{

        display: block;

    }

 }</p>

<p>

$(document).ready(function(){

if (matchMedia("screen and (min-width: 768px)").matches) {

    $(".dropdown").hover(function(){

        var dropdownMenu = $(this).children(".dropdown-menu");

        if(dropdownMenu.is(":visible")){

            dropdownMenu.parent().toggleClass("open");

        }

    });

}

});   </p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

천사밍
3년 전
감사합니다. 덕분에 잘 해결 했습니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인