如何在 header 中制作固定菜单,同时显示在移动浏览器中的 header 和内容上
How to make a fixed menu in header, appear over both the header and content in mobile browsers
我正在建立一个仍在进行中的网站,但我被困在一些我无法弄清楚的事情上。
该网站目前在 http://adhoc.fiberspa.nl 上可见
我首先开发移动设备,所以如果在浏览器中查看时缩小浏览器屏幕看起来最好。
当您在浏览器中查看它并单击菜单按钮(右上角)时,菜单会滑入。菜单仍然没有样式,但关键是它很好地滑入了所有内容之上。
如果您使用 chrome 在移动设备上查看同一网站,菜单也会滑入 header 之上,但隐藏在内容下方。我注意到它在我的 firefox 手机上运行良好。
通过阅读,我发现它与拥有自己的 z-index 堆栈的固定元素有关。所以我不能使用 z-index 来解决问题。可能我必须更改文档的整个结构,但我无法弄明白。
我拥有的是一个带有固定 header 和页脚的页面。我不知何故想要一个从顶部滑入的菜单,在单击菜单按钮时出现在 header 和内容之上。
我最终得到了使用 JQuery:
后的工作版本
我将菜单固定在页面加载时页面的右侧和上方。
我使用 JQuery 来计算单击菜单按钮时 header 的高度并将其向下移动到该位置,并在单击按钮、菜单或页面时返回再次.
(function ($) {
Drupal.behaviors.adhocTheme = {
attach: function (context, settings) {
$('#l-navbutton').click(function () {
var menu = $('.l-region--navigation');
menu.css('top', $('.l-header').outerHeight() + "px");
if(!menu.hasClass('show'))
menu.addClass('show');
else
{menu.removeClass('show'); menu.css('top', "0px");}
});
$('.l-region--navigation, .l-main, .l-footer').click(function () {
var menu = $('.l-region--navigation');
if(menu.hasClass('show'))
{menu.removeClass('show'); menu.css('top', "0px");}
});
}
};
}(jQuery));
我为下滑动画添加了CSS。
.l-region--navigation{
position: fixed;
top: 0px;
right: 0px;
visibility: hidden;
background-color: #cccccc; // Old browsers
@include filter-gradient(#cccccc, #cccccc, vertical); // IE6-9
@include background-image(linear-gradient(top, #cccccc 0%,#ededed 62%,#cccccc 100%));
transition: 0.5s ease;
-webkit-transition: 0.5s ease;
-moz-transition: 0.5s ease;
@include span (6 of 9);
@include bleed($grid-padding);
}
.l-region--navigation.show{
visibility: visible;
transition: 0.5s ease;
-webkit-transition: 0.5s ease;
-moz-transition: 0.5s ease;
}
我给 header 打了 z-index 100,以确保菜单滑到下方而不是上方。总而言之,这一切都很棒!
如果我不希望它从 header 下方滑下,而是像我原来的问题那样滑到 header 上方,它现在可以通过从 -200px 滑到 0px 来工作,而不是 header 高度并从 header 中删除 z-index。我先有那个,但我更喜欢这个。
我正在建立一个仍在进行中的网站,但我被困在一些我无法弄清楚的事情上。
该网站目前在 http://adhoc.fiberspa.nl 上可见 我首先开发移动设备,所以如果在浏览器中查看时缩小浏览器屏幕看起来最好。 当您在浏览器中查看它并单击菜单按钮(右上角)时,菜单会滑入。菜单仍然没有样式,但关键是它很好地滑入了所有内容之上。
如果您使用 chrome 在移动设备上查看同一网站,菜单也会滑入 header 之上,但隐藏在内容下方。我注意到它在我的 firefox 手机上运行良好。
通过阅读,我发现它与拥有自己的 z-index 堆栈的固定元素有关。所以我不能使用 z-index 来解决问题。可能我必须更改文档的整个结构,但我无法弄明白。
我拥有的是一个带有固定 header 和页脚的页面。我不知何故想要一个从顶部滑入的菜单,在单击菜单按钮时出现在 header 和内容之上。
我最终得到了使用 JQuery:
后的工作版本我将菜单固定在页面加载时页面的右侧和上方。
我使用 JQuery 来计算单击菜单按钮时 header 的高度并将其向下移动到该位置,并在单击按钮、菜单或页面时返回再次.
(function ($) {
Drupal.behaviors.adhocTheme = {
attach: function (context, settings) {
$('#l-navbutton').click(function () {
var menu = $('.l-region--navigation');
menu.css('top', $('.l-header').outerHeight() + "px");
if(!menu.hasClass('show'))
menu.addClass('show');
else
{menu.removeClass('show'); menu.css('top', "0px");}
});
$('.l-region--navigation, .l-main, .l-footer').click(function () {
var menu = $('.l-region--navigation');
if(menu.hasClass('show'))
{menu.removeClass('show'); menu.css('top', "0px");}
});
}
};
}(jQuery));
我为下滑动画添加了CSS。
.l-region--navigation{
position: fixed;
top: 0px;
right: 0px;
visibility: hidden;
background-color: #cccccc; // Old browsers
@include filter-gradient(#cccccc, #cccccc, vertical); // IE6-9
@include background-image(linear-gradient(top, #cccccc 0%,#ededed 62%,#cccccc 100%));
transition: 0.5s ease;
-webkit-transition: 0.5s ease;
-moz-transition: 0.5s ease;
@include span (6 of 9);
@include bleed($grid-padding);
}
.l-region--navigation.show{
visibility: visible;
transition: 0.5s ease;
-webkit-transition: 0.5s ease;
-moz-transition: 0.5s ease;
}
我给 header 打了 z-index 100,以确保菜单滑到下方而不是上方。总而言之,这一切都很棒!
如果我不希望它从 header 下方滑下,而是像我原来的问题那样滑到 header 上方,它现在可以通过从 -200px 滑到 0px 来工作,而不是 header 高度并从 header 中删除 z-index。我先有那个,但我更喜欢这个。