바탕 화면에서 예상대로 작동하는 CSS 전용 드롭 다운 메뉴가 있습니다. iPad의 모바일 Safari에서 최상위 탐색 링크 중 하나를 클릭하면 해당 드롭 다운 메뉴가 잠시 표시되지만 링크를 따라 가면 사용자가 새 페이지로 이동합니다.iPad에서 CSS 드롭 다운 메뉴가 예상대로 작동하지 않습니다.
나는 이것에 대해 알 수있는 모든 것을 읽었으며, 기본 동작은 iPad가 첫 번째 탭을 공중에 떠올리게 할 것이며 실제로 두 번째 탭이있을 때까지 링크를 따라 가지 않는 것으로 생각됩니다. 이는 :hover
스타일이 해당 하위 메뉴의 display
속성을 변경하므로 장치가 첫 번째 탭에서 링크를 따르지 않는다는 것을 알고 있기 때문입니다.
이 동작은 다른 사이트에서 제대로 작동하는 것으로보고 내 웹 사이트의 다른 부분에서 제대로 작동하는 것을 보았지만 어떤 이유로 내 CSS 드롭 다운 메뉴에서 올바르게 동작하지 않습니다.
메뉴는 내 사이트 https://www.storeyourboard.com에서 볼 수 있습니다. 페이지 상단 근처에는 카테고리 이름이 나열된 가로 메뉴가 있습니다. iPad에서 이것을보고 메뉴 항목 중 하나 (예 : "Surfboard")를 누르면 iPad가 첫 번째 탭에서 드롭 다운 메뉴를 표시하지 않고 Surfboard 페이지로 이동하는 것을 볼 수 있습니다. 이상하게도, 내 태핑이 임의로 예상대로 동작하고 드롭 다운 메뉴가 탐색하지 않고 표시되는 경우가 있었지만 이는 드문 경우이며 일관되게 재현 할 수 없습니다.
이 메뉴에 대한 관련 마크 업입니다 :
HTML
<ul class="mainNav-menu">
<li>
<a href="/sup-racks-bags/">SUP</a>
<div class="mainNav-submenu">
<ul class="mainNav-submenu-menu">
<!-- Submenu items here -->
</ul>
</div>
</li>
<li>
<a href="/surfboard-racks-bags/">Surfboard</a>
<div class="mainNav-submenu">
<ul class="mainNav-submenu-menu">
<!-- Submenu items here -->
</ul>
</div>
</li>
</ul>
CSS 나는 다른 게시물 말을 본 적이
.mainNav-submenu {
display: none;
position: absolute;
left: 0;
right: 0;
top: auto;
background-color: #8a8a8a;
z-index: 20;
padding: 1rem;
}
.mainNav-menu > li:hover .mainNav-submenu {
display: block;
}
그에게 onclick="return true"
추가 메뉴 링크 또는 메뉴 컨테이너가 문제를 해결할 것이지만, 이것은 어떤 ef도 가지고 있지 않습니다. 나를 위해 fect. 나는 또한 사이트에서 fastclick.js을 사용하고 있다고 언급해야합니다. 이것이 문제의 원인이 될 수 있다고 생각했지만, 제거하면 정확한 동작을 볼 수 있습니다.
정확하게 작동하는지 확인하기 위해 코드 this article을 내 사이트에 추가했습니다. 즉, 내 사이트에 코드의이 작은 조각을 추가 :
<style>
p {height: 100px;}
p span {
display: none;
}
p:hover span {
display: block;
}
</style>
<p>
<a href="/">Tap me</a>
<span>You tapped!</span>
</p>
이것은 (심지어 fastclick 활성에) 제대로했다. 링크를 탭하면 "You tapped"스팬이 표시되고 다시 탭하면 길을 건너 뜁니다.
내 탐색 메뉴에서이 동일한 동작이 올바르게 작동하지 않는 이유를 알 수 없습니다. 내가 마크 업하거나 스타일을 지정한 방식입니까? 누구 아이디어가 있습니까? 내가 뭘해야할지 모르겠다.
UPDATE 아래 문서의 대답에
덕분에, 나는이 솔루션을 마련 할 수 있었다 :
.mainNav-menu > li > a {
pointer-events: none;
}
.mainNav-menu > li:hover > a {
pointer-events: all;
}
지금 사이트에 라이브 그리고 당신은 행동에서 볼 수 있습니다. 나는 이것이 왜 필요한지, 왜 그것이 원래 효과가 없었던 지 모르겠다. 그래서 아무도 아이디어가 있다면, 나에게 알려주기 바란다.
대단히 감사합니다. 그것은 내가 고려하지 않은 매우 똑똑한 해결책입니다. 나는 실제로 이것이 내가 생각한 더 단순한 해결책이라고 생각했다. 내가 처음에는 링크에'pointer-events : none;'을 설정하고 마우스를 올리면'pointer-events : all'을 설정합니다. 이것은 작동하는 것 같습니다. 내가 사용하고있는 CSS로 내 질문을 업데이트했고, 그것이 효과가 있었을 것이라고 생각하기 때문에 대답을 받아 들였고, 100 %는 내가 사용하고있는 해결책에 영감을 주었다. 나는 아직도 그것이 처음에는 효과가 없었던 이유를 모른다. 누군가 아이디어가 있다면, 나는 그것을 듣고 싶다. – flyingL123