bootstrap - 如何将导航栏放在背景图像之上?
Posted
技术标签:
【中文标题】bootstrap - 如何将导航栏放在背景图像之上?【英文标题】:bootstrap - how to put your navbar on top of your background image? 【发布时间】:2016-05-11 07:20:56 【问题描述】:我是新手。 这是我正在尝试制作的设计:
如您所见,导航栏位于背景图像的顶部。 这就是我所拥有的:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<style>
<style>
.navbar-default
background: none;
border: none;
body
height:100%;
html
background: url('sun.jpg') no-repeat center center fixed;
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;
background-position: 0 0;
</style>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container">
<ul class="nav navbar-nav">
<li class="active"><a href="#">home</a></li>
<li><a href="#">ask a question!</a></li>
<li><a href="#">learn</a></li>
<li><a href="#">contact</a></li>
</ul>
</div>
</nav>
</body>
</html>
给予:
我不知道如何将它放在图像本身而不是上面。
简短的问题:是什么让 vimeo 的图片看起来比我使用的来自太阳的图片好得多?在我的图像上你可以看到所有的像素等等...这是因为它可能是一个太小的图像并且它必须被拉伸很多以适应整个页面?
编辑:
这是我尝试过但没有奏效的方法
<nav class="navbar navbar-default">
<div class="container">
<ul class="nav navbar-nav">
<li class="active"><a href="#">home</a></li>
<li><a href="#">ask a question!</a></li>
<li><a href="learn.html">learn</a></li>
<li><a href="#">contact</a></li>
</ul>
<style>
.navbar
background:transparent;
</style>
</div>
</nav>
【问题讨论】:
尝试将背景图片设置为包含导航栏以外所有内容的容器? 让你的导航栏背景透明 【参考方案1】:您需要从导航栏中删除背景:
.navbar-default
background: none;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<style>
html,
body
height: 100%;
background: red;
.navbar-default
background: none;
border: none;
</style>
<!-- Wrap all page content here -->
<div id="wrap">
<!-- Fixed navbar -->
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="dropdown-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
【讨论】:
我也尝试了您的解决方案,但没有奏效。我编辑了我的问题(我也尝试过非透明的),我误解了什么吗? Ps:关于附带问题的任何想法? 您在代码的哪个位置加载 bootstrap.css?您的自定义样式需要在之后加载引导程序【参考方案2】:.navbar
background:transparent;
这将使您的背景透明。
【讨论】:
【参考方案3】:引导程序 4
导航栏没有背景颜色,所以默认是透明的。请记住使用navbar-light
或navbar-dark
,以便链接颜色 与背景图像的对比度一起使用。显示toggler is also based on navbar-(dark or light)。
https://www.codeply.com/go/FTDyj4KZlQ
<nav class="navbar navbar-expand-sm fixed-top navbar-light">
<div class="container">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbar1">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Brand</a>
<div class="collapse navbar-collapse" id="navbar1">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
引导程序 3
使用navbar-fixed-top
,然后更改 CSS 以使其透明。这是自定义透明导航栏的示例。
http://www.codeply.com/go/JNy8BtYSem
<nav id="nav" class="navbar navbar-fixed-top" data-spy="affix">
<div class="container">
<div class="navbar-header">
<a href="#" class="navbar-brand">Brand</a>
<a class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<i class="fa fa-bars"></i>
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
<ul class="nav pull-right navbar-nav">
<li>
<a href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
此问题仅用于制作透明导航栏。要在滚动后或在某个导航栏位置更改样式,请参阅:Animate/Shrink NavBar on scroll using Bootstrap 4
【讨论】:
关于附带问题的任何想法? 这看起来很糟糕。 Fixed-top 使导航栏在向下滚动时与文本重叠。 @MilesDavis - 所以你认为它值得一票否决,即使它专门回答了这个问题? “这看起来很糟糕”不是我的错。如果您想在滚动后更改样式/颜色,请参阅:问题/答案***.com/questions/42237406/…【参考方案4】:只需在 Body 中取背景图片,然后使用此代码
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-
toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Brand</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Username</a></li>
</ul>
</div>
</div>
</div>
<div class="wide">
<div class="col-xs-5 line"><hr></div>
<div class="col-xs-2 logo">Logo</div>
<div class="col-xs-5 line"><hr></div>
</div>
<div class="container">
<div class="text-center">
<h1>Content</h1>
</div>
</div>
也使用了样式 style="opacity:0.6;"在导航栏 div 中
【讨论】:
【参考方案5】:背景颜色是在 .navbar-default 类上设置的,因此请确保您的 css 使用该类来将栏目设为透明。例如
.navbar-defaultbackground-color: transparent;
正如 Turnip 所说,这需要在 <head>
中的引导样式之后应用
如果你真的想在让它工作时强制它,请将以下属性添加到你的 <nav>
元素中
style="background-color: transparent;"
所以你的nav
元素看起来像这样:
<nav class="navbar navbar-default" style="background-color: transparent;">
但是,将其放在 CSS 文件中显然比作为内联 HTML 更好
【讨论】:
以上是关于bootstrap - 如何将导航栏放在背景图像之上?的主要内容,如果未能解决你的问题,请参考以下文章
在 IE 的 Twitter Bootstrap 导航栏中替换背景