我使用一個自適應網站如何阻止點擊時移動菜單跳躍?
http://osvaldas.info/examples/drop-down-navigation-touch-friendly-and-responsive/
它使用下面的HTML中的以下移動菜單類 -
<nav id="nav" role="navigation">
<span href="#nav" title="Show navigation">Show navigation</span>
<span href="#" title="Hide navigation">Hide navigation</span>
<ul class="clearfix">
<li><a href="">Home</a></li>
<li>
<a href="" aria-haspopup="true"><span>Blog</span></a>
<ul>
<li><a href="">Design</a></li>
<li><a href="">HTML</a></li>
<li><a href="">CSS</a></li>
<li><a href="">JavaScript</a></li>
</ul>
</li>
<li>
<a href="" aria-haspopup="true"><span>Work</span></a>
<ul>
<li><a href="">Web Design</a></li>
<li><a href="">Typography</a></li>
<li><a href="">Front-End</a></li>
</ul>
</li>
<li><a href="">About</a></li>
</ul>
</nav>
下面CSS -
#nav
{
width: 60em; /* 1000 */
font-family: 'Open Sans', sans-serif;
font-weight: 400;
position: absolute;
top: 25%;
left: 50%;
margin-left: -30em; /* 30 480 */
}
#nav > span
{
display: none;
}
#nav li
{
position: relative;
}
#nav li a
{
color: #fff;
display: block;
}
#nav li a:active
{
background-color: #c00 !important;
}
#nav span:after
{
width: 0;
height: 0;
border: 0.313em solid transparent; /* 5 */
border-bottom: none;
border-top-color: #efa585;
content: '';
vertical-align: middle;
display: inline-block;
position: relative;
right: -0.313em; /* 5 */
}
/* first level */
#nav > ul
{
height: 3.75em; /* 60 */
background-color: #e15a1f;
}
#nav > ul > li
{
width: 25%;
height: 100%;
float: left;
}
#nav > ul > li > a
{
height: 100%;
font-size: 1.5em; /* 24 */
line-height: 2.5em; /* 60 (24) */
text-align: center;
}
#nav > ul > li:not(:last-child) > a
{
border-right: 1px solid #cc470d;
}
#nav > ul > li:hover > a,
#nav > ul:not(:hover) > li.active > a
{
background-color: #cc470d;
}
/* second level */
#nav li ul
{
background-color: #cc470d;
display: none;
position: absolute;
top: 100%;
}
#nav li:hover ul
{
display: block;
left: 0;
right: 0;
}
#nav li:not(:first-child):hover ul
{
left: -1px;
}
#nav li ul a
{
font-size: 1.25em; /* 20 */
border-top: 1px solid #e15a1f;
padding: 0.75em; /* 15 (20) */
}
#nav li ul li a:hover,
#nav li ul:not(:hover) li.active a
{
background-color: #e15a1f;
}
@media only screen and (max-width: 62.5em) /* 1000 */
{
#nav
{
width: 100%;
position: static;
margin: 0;
}
}
@media only screen and (max-width: 40em) /* 640 */
{
html
{
font-size: 75%; /* 12 */
}
#nav
{
position: relative;
top: auto;
left: auto;
}
#nav > span
{
width: 3.125em; /* 50 */
height: 3.125em; /* 50 */
text-align: left;
text-indent: -9999px;
background-color: #e15a1f;
position: relative;
}
#nav > span:before,
#nav > span:after
{
position: absolute;
border: 2px solid #fff;
top: 35%;
left: 25%;
right: 25%;
content: '';
}
#nav > span:after
{
top: 60%;
}
#nav:not(:target) > span:first-of-type,
#nav:target > span:last-of-type
{
display: block;
}
/* first level */
#nav > ul
{
height: auto;
display: none;
position: absolute;
left: 0;
right: 0;
}
#nav:target > ul
{
display: block;
}
#nav > ul > li
{
width: 100%;
float: none;
}
#nav > ul > li > span
{
height: auto;
text-align: left;
padding: 0 0.833em; /* 20 (24) */
}
#nav > ul > li:not(:last-child) > span
{
border-right: none;
border-bottom: 1px solid #cc470d;
}
/* second level */
#nav li ul
{
position: static;
padding: 1.25em; /* 20 */
padding-top: 0;
}
然後它利用doubletaptogo.js來控制移動設備上的觸摸水龍頭。
一切看起來都很酷 - 除了瀏覽器在點擊時跳到#nav元素的頂部 - 這有點惱人 - (您可以在移動屏幕寬度中看到這個URL http://www.liquidclients.co.uk/landsail/ls4/tester.html)。
是否有一個好的跨設備/瀏覽器解決方案,使視口保持原位而不是跳轉到#nav定位點?
或者任何人都可以推薦更好的響應式菜單解決方案?
歡呼@austinthedeveloper - 這並不跳 - 但阻止菜單,打開 – Dancer 2014-11-04 10:06:51
如果你創建一個搗鼓這個,我可以解決這個問題。或者你可以發佈打開菜單的JS代碼 – austinthedeveloper 2014-11-04 13:14:13
hi奧斯汀 - 菜單通過上面的CSS選擇器而不是js打開 - 雖然簡單的js腳本可能是一個答案嘿 - 我會創建一個小提琴 – Dancer 2014-11-04 16:31:15