【问题标题】:Ribbon with a "3D" effect具有“3D”效果的功能区
【发布时间】:2015-02-14 18:18:29
【问题描述】:

我的菜单有以下代码:

HTML:

<div class="container wrapper">
<nav>
    <ul class="menu">
        <li><a href="#">Home</a></li>
        <li><a href="#">page1</a></li>
        <li><a href="#">page2</a></li>
    </ul>
</nav>

还有 CSS:

.wrapper{
    padding:20px;
    background:#d3d3d3;
    height:200px;

}
.menu{
    background:#7F7979;
}
.menu li{
    padding-top: 20px;
    padding-bottom: 20px;
    padding-left: 15px;
    display: inline-block;
}
.menu li a{
    color:white;
}
nav ul{
    list-style:none;
    margin:0
        padding:0;
}

我想要实现的是在左右角看起来就像它来自容器后面(如果我们可以这样称呼它,就像一个 3D 效果)。没有尝试过任何事情,因为我不知道如何实现这一点。

我用谷歌搜索了一下,但没有找到任何网站来检查代码。如果有人知道,请指出我。

另外,我怎样才能通过忽略container padding 来做到这一点?是否有可能在这个container 中使用我的菜单来实现它,它有一个padding 并且仍然迫使边距超出它?

注意:我不是要让别人为我做这件事,我是想弄清楚我应该使用哪些 CSS 属性来实现我想要的。

为了更好地解释我想要什么:

如果有帮助,我的演示:

demo

非常感谢您为我指明了正确的方向。

【问题讨论】:

    标签: html css menu css-shapes


    【解决方案1】:

    您可以在伪元素上使用边框来使菜单栏左上角和右上角的 2 个较暗的三角形。

    要使菜单栏比它的容器更宽,您可以使用负左/右边距:

    DEMO

    header{
        width:80%;
        margin: 0 auto;
        background:#D3D3D3;
        padding:100px 0 200px;
    }
    nav{
        position:relative;
        height:50px;
        background: #7E7979;
        margin: 0 -25px;
    }
    nav:before, nav:after{
        content:'';
        position:absolute;
        top:-10px;
        border-bottom:10px dotted #5C5C5B;
    }
    nav:before{
        left:0;
        border-left:25px solid transparent;
    }
    nav:after{
        right:0;
        border-right:25px solid transparent;
    }
    <header>
        <nav></nav>
    </header>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多