导航栏上的浮动徽标,横幅为内部阴影 - Bootstrap

时间:2016-04-16 14:23:50

标签: html css twitter-bootstrap css3 less

使用Bootstrap实现以下的正确方法是什么?

Mockup of floating logo over navigation bar with inner shadow

徽标“从导航栏中”出来并延伸到横幅上。横幅有内部阴影,图像应在其后面旋转。在响应时,导航应以典型的Bootstrap方式崩溃。

到目前为止,我已经能够将徽标置于中心,并且具有以下两部分导航功能:

<nav class="navbar navbar-inverse navbar-main">
    <div class="container">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
        <a class="navbar-brand visible-xs" href="index.php">Logo</a>
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
    </div>
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav">
            <li class="active"><a href="index.php">Home <span class="sr-only">(current)</span></a></li>
            <li><a href="about-us.php">About Us</a></li>
            <li><a href="media.php">Media</a></li>
            <li><a href="events.php">Events</a></li>
        </ul>
        <div class="navbar-brand hidden-xs">
            <a class="white-circle" href="index.php">
                <img class="logo" src="http://excitive.me/demo/temp/logo.svg" alt="Logo">
            </a>
        </div>
        <ul class="nav navbar-nav navbar-right">
            <li><a href="things-to-do.php">Things To Do</a></li>
            <li><a href="offers.php">Offers</a></li>
            <li><a href="index.php#location">Location</a></li>
            <li><a href="book-now.php">Book Now</a></li>
        </ul>
    </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

<div class="container">
    <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
        <!-- Indicators -->
        <ol class="carousel-indicators">
            <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
            <li data-target="#carousel-example-generic" data-slide-to="1"></li>
            <li data-target="#carousel-example-generic" data-slide-to="2"></li>
        </ol>
        <!-- Wrapper for slides -->
        <div class="carousel-inner" role="listbox">
            <div class="item active">
                <img src="http://excitive.me/demo/temp/banner-home-01.jpg" alt="Banner Alt">
                <div class="carousel-caption">
                    Lorem ipsum
                </div>
            </div>
            <div class="item">
                <img src="http://excitive.me/demo/temp/banner-home-02.jpg" alt="Banner Alt">
                <div class="carousel-caption">
                    Dolor sit
                </div>
            </div>
            <div class="item">
                <img src="http://excitive.me/demo/temp/banner-home-03.jpg" alt="Banner Alt">
                <div class="carousel-caption">
                    Amet consectetur
                </div>
            </div>
        </div>
    </div>
</div>

CSS:

.navbar .container {
  text-align: center;
}
.navbar-collapse .navbar-brand {
  display: inline-block;
  float: none;
  padding: 0;
  margin: 0 !important;
  overflow: visible;
}
.navbar-collapse .navbar-brand .white-circle {
  display: block;
  width: 161px;
  height: 161px;
  background-color: white;
  border-radius: 50%;
  border: 1px dotted red;
}
.navbar-collapse .navbar-brand .white-circle .logo {
  width: 144px;
}

https://jsfiddle.net/rvnwp1xv/

(请在JSFiddle中扩展输出面板以查看正常导航)

现在问题仍然是阴影以及如何使徽标与横幅重叠。

布局设置为固定宽度,因此我的下一次尝试是使用绝对定位。但是,对于那个横幅必须在用HTML导航之前,这听起来不对。

1 个答案:

答案 0 :(得分:1)

要制作徽标重叠横幅,您需要向图片的父级添加属性positionz-index

.navbar-collapse .navbar-brand .white-circle {
  ...

  position: relative;
  z-index: 2;
}

然后,您需要增加图像的大小,使其与父级的大小相同:

.navbar-collapse .navbar-brand .white-circle .logo {
    width: 161px;
    height: 161px;
}

制作图像圈,你可以添加border-radius: 50%,我刚刚使用了bootstrap的类img-circle
为了使图像居中,我将text-center用于div.collapse(它是navbar-brand的父级)。 然后,为navbarlogo制作阴影,我使用了格林的建议,谢谢他:

.navbar-header,
.collapse.navbar-collapse,
img.logo {
  box-shadow: 0px 2px 14px 2px rgba(0, 0, 0, 0.7);
}

但是现在你还有另外一个问题,当缩小屏幕大小时,navbar的右侧部分会缩小图像!在我的示例中,我已将container课程更改为container-fluid,然后添加div.row以使navbar更大一些。然后我更改了@ media-queries以折叠navbar。如果您只需要container课程,只需在@ media-queries中使用max-width来增加课程。

JSFiddle-example