css - 如何在固定菜单上创建透明的当前状态槽口?

标签 css menu z-index css-position

我知道我们可以使用与背景颜色颜色相同的三 Angular 形,以便在导航的当前状态下放置一个缺口。但是,我在固定位置的 div 中创建了一个导航菜单,它具有高 z-index 和背景颜色设置为 .7 的不透明度,以便整个导航位于页面内容的顶部,但您可以向下滚动页面时可以看穿它。是否可以创建一个当前状态槽口,在您向下滚动页面时“切入”不透明的 div 以显示其下方的内容?

作为引用,我正在尝试复制您在 iOS 应用商店中获得的体验。不幸的是,图片已被删除,点击图片链接会出现 404 页面。您可以查看修订历史以查看图像的原始 URL。

最佳答案

有很多方法可以做到这一点,这是我的看法:

这是我会使用的布局。 <nav>固定在顶部 <div>对于下方的缺口。内容位于两个顶部填充等于导航和槽口高度的内容下方。

+--------------------------------+--+
|                                |  |
|               nav (fixed)      |  |   <-- the content is below these fixeds,
|                                |  |       which have a higher z-index
+--------------------------------+  |
|              notch (fixed)     |  |
+--------------------------------+  |
|                                   |
|                                   |
|                                   |
|              content              |
|              section              |
| (padding-top = nav+notch heights) |
|                                   |
|                                   |
+-----------------------------------+

我假设你想要一个流畅的布局,所以我选择使用 FlexBox (http://www.w3.org/TR/css3-flexbox/) 来保持缺口的位置,因为浏览器调整大小。如果您有固定布局,则有几个更直接的解决方案,它们不需要 FlexBox 或计算应在柔性容器中放置凹口的位置。

由于其他部分应该相当简单,这里是缺口的分割 <div>

+---------------------------------------------------+
|                 |       |       |                 |
|     spacing     | notch | notch |     spacing     |
|   (flexible)    | left  | right |    (flexible)   |
|                 |       |       |                 |
+---------------------------------------------------+

二外<div> s 是 flex 的并且具有相同的 background-color作为<nav> .然后,两个内部槽口使用渐变来创建三 Angular 形。

background: -webkit-linear-gradient(
    top left,
    rgba(145, 145, 145, 1) 0%,
    rgba(145, 145, 145, 1) 50%,
    transparent 50%,
    transparent 100%
);

通过从左上角和右上角开始渐变,<div> s 填充在对 Angular 线上的一半。

剩下的只是确定当您点击导航链接时应该放置凹口的位置。我通过在灵活的 <div> 中添加和删除宽度来做到这一点s 在确定用户点击的位置之后。需要一些时间来了解 FlexBox 在为 flex 的元素添加和减去宽度时如何工作,但您可以检查代码以了解这一点。

我在 Chrome 中使用 -webkit- 前缀完成了所有这些,所以请在 Chrome 或 Safari 中运行这个 JSFiddle:http://jsfiddle.net/dwJbq/

正如我之前所说,还有其他几种方法可以做到这一点,如果不使用流体布局,它也会容易得多。您可以尝试的另一个想法是为每个导航链接设置一个缺口,然后在单击的链接下方显示/隐藏该缺口。这不需要您进行任何计算,而只需更改凹口的背景即可。

这是一个如何做到这一点的例子:http://jsfiddle.net/V4K6K/1/

关于css - 如何在固定菜单上创建透明的当前状态槽口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196588/

相关文章:

android - 将 TabActivity 菜单与包含的 Activity 菜单合并

menu - Android 菜单来自底部,如 Google Drive

html - 标题 Z-Index 呈现链接不可点击

c# - 如何强制 Asp.net 3.5 菜单控件呈现为 UL 列表项

css - 使用 Avada 页脚的 Z-Index 定位

jquery - Z-index悬停jquery问题

javascript - WinJS - 如何访问 LED 闪光灯(在 Windows Phone 上)?

php - 我正在尝试使用 php 和 jquery.php 变量更改 div 的背景图像,但未获取值

html - 在我的 Windows 上的不同目录中将 CSS 文件与 HTML 文档链接

javascript - 用 CSS 重新排序 div?在父 2 的子之间插入父 1