【发布时间】:2014-12-11 07:25:33
【问题描述】:
我一直在研究如何创建一个楔形菜单并发现了以下 stackoverflow 帖子:Diagonal Wedge Shaped CSS - Edge to Edge Centered in Browser
我重新设计了 Varazi 绘制的示例图像,以更好地解释我自己的情况(请原谅上面的旧文字)。我添加了 2 个菜单项,家庭和联系人,以显示我正在尝试的内容。
我一直在玩的代码(从上面的链接中找到)。
HTML
<div class="shape">
<div class="top"></div>
<div class="bottom"></div>
</div>
CSS
.shape {
width:400px;
margin:0 auto;
}
.top {
height:0;
border-width:0 0 150px 400px;
border-style:solid;
border-color:transparent #d71f55 #d71f55 transparent;
}
.bottom {
height: 50px;
background-color:#d71f55;
}
/* Support transparent border colors in IE6. */
* html .top {
filter:chroma(color=#123456);
border-top-color:#123456;
border-left-color:#123456;
}
更新:在玩了很多次之后,我必须说真的很有趣的挑战,我终于完全按照我需要的方式获得了它,Talkingrock(谢谢老兄!)。我剩下的挑战是在 overflow: hidden 元素 (#masthead) 中显示 .sub-menu,但这并不太重要,因为我可以将链接贴在主页上的相关内容部分。
希望下面的代码可以帮助像我这样需要帮助的可怜人。享受! :)
HTML(我使用的是 WordPress/Bootstrap)
<header id="masthead" class="site-header" role="banner">
<nav id="site-navigation" class="navbar navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="http://demo.dev/" title="demo" rel="home">
<img width="159" height="134" src="http://demo.dev/wp-content/uploads/2014/10/logo.png" class="img-responsive" alt="logo">
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul id="menu-main-menu" class="nav navbar-nav pull-right">
<li><a href="http://demo.dev/">Home</a></li>
<li><a href="http://demo.dev/us/">About Us</a></li>
<li><a href="http://demo.dev/services/">Services</a>
<ul class="sub-menu">
<li><a href="http://demo.dev/industrial-electrical/">Industrial Electrical</a></li>
<li><a href="http://demo.dev/commercial-electrical/">Commercial Electrical</a></li>
<li><a href="http://demo.dev/domestic-electrical/">Domestic Electrical</a></li>
</ul>
</li>
<li><a href="http://demo.dev/contact/">Contact</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
</header>
CSS(使用 Less)
/* --- header */
#masthead {
overflow: hidden;
position: relative;
bottom: 50px; height: 200px;
background: red;
transform: skew(0deg, -3deg);
}
/* --- main navigation */
#site-navigation {
position: relative;
bottom: -50px;
height: 100%;
margin-bottom: 0;
border-radius: 0;
background: none;
border: none;
transform: skew(0deg, 3deg);
.container,
.navbar-collapse {
height: 100% !important;
}
.nav {
height: 100%;
&>li {
height: 100%;
&>a {
height: 100%;
padding: 80px 15px 0;
color: #fff;
}
&.current-menu-item,
&:hover {
&>a {
background-color: @tree-poppy;
}
}
}
}
}
更新 2: 只是想快速提一下,您还可以轻松地将楔形部分附加到现有元素上,而无需使用任何其他元素!
CSS
#masthead:after {
content: "";
position: absolute;
top: -45px; left: 0;
z-index: -1;
width: 100%; height: 80px;
background-color: red;
transform: skew(0deg, -3deg);
}
【问题讨论】:
-
请发布您的相关代码,可能通过 jsfiddle(或类似方式)。
-
我今天遇到了这个布局的一个实例,其中包含您可能感兴趣的菜单项。它位于 www.1and1.com。他们使用绝对定位的倾斜 div 来覆盖页眉区域的底部。它具有标准的 div 设置,这些设置会随着您的设计而变化,例如顶部和左侧,以及高度和宽度。关键样式是 background-color:#ffffff (设置为匹配网站背景的颜色);和变换:倾斜(0度,-3度);创建角度。
-
@Talkingrock 嗨,谢谢你的提示!最后,这就是我最终自己做的事情,因为它是唯一适用于所有设备的东西。再次感谢朋友! :)
-
感谢您为这个有趣的问题发布您的解决方案:)我尝试在 div 上使用边框来创建三角形的白色楔形,但它很乱,需要隐藏在容器上的溢出(不是很好涉及菜单时的想法)。我还创建了几个不同角度的彩色倾斜 div,并使用 z-index 将它们分层放置在菜单项的前面和后面,以获得很酷的效果。
-
这很聪明,你歪曲了#masthead。这是 JSFiddle,其中倾斜的 div 绝对位于底部,z-indexes 用于分层。 jsfiddle.net/TalkingRock/eu7txndg