Bootstrap 新手问题
Bootstrap newbie issues
刚开始尝试Bootstrap;我有少量 HTML 和 JS 经验。
获得了一个使用导航栏和标签页的基本页面,但发现了两个问题:
a) 每个标签页的顶部隐藏在导航栏下;
b) 'login' 的页面第一次出现正常,但在显示其他页面后拒绝再次出现。
显示问题的代码在 jsfiddle.
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data- target="#navbar" aria-expanded="false" aria-controls="navbar">
<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="#">BLE Log</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav" role="tablist">
<li class="active"><a href="#home" id="home-tab" role="tab" data-toggle="tab" aria-controls="home" aria-expanded="true">Home</a></li>
<li><a href="#profile" role="tab" id="profile-tab" data-toggle="tab" aria-controls="profile">Profile</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#signin" role="tab" id="signin-tab" data-toggle="tab" aria-controls="signin">Sign In</a></li>
</ul>
</div>
</div>
</nav>
<div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home" aria-labelledBy="home-tab">
<div class="container">
<p>Line 1</p>
<p>Line 2</p>
<p>Line 3</p>
<p>Line 4</p>
<p>Line 5</p>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="profile" aria-labelledBy="profile-tab">
<div class="container">
<div class="jumbotron" id="jumbo">
<p>Line 1</p>
<p>Line 2</p>
<h2>Navbar example</h2>
<p>This example is.....</p>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="signin" aria-labelledBy="signin-tab">
<div class="container">
<form class="form-signin">
<h3 class="form-signin-heading">Please sign in</h3>
<label for="inputEmail" class="sr-only">Username or Email address</label>
<input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>
</div>
</div>
</div>
对于您的第一个问题,如果您将 header 更改为已修复,这会导致该元素从流程中删除,您需要下推其余内容。这是通过添加顶部边距或填充来完成的:
#myTabContent { margin-top:70px; }
或
#myTabContent { padding-top:70px; }
您的登录选项卡不起作用,因为它与其他选项 ul
不同。如果您在使用选项卡时查看浏览器,您会注意到当您单击选项时,active
class 会添加到您单击的选项中,并从 ul
。如果您的选择已经有了 active
class 则什么也不会发生。因此,当您单击 #signin
元素时,active
class 不会从第一个 ul
的选项中删除,反之亦然。
要解决此问题,您需要改变方法。两个最简单的选择是将两个 ul
合并为一个(这将导致登录选项不再出现在右侧)或将登录选项卡更改为其他类型的 bootstrap 元素(例如模式)并将其显示在其余内容上。
此外,您只是打错了字 (data-target
)。这个:
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data- target="#navbar" aria-expanded="false" aria-controls="navbar">
应该是这样的:
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
这是一个活生生的例子:http://jsfiddle.net/npk9w0ak/1/
附带说明一下,不要忘记在 fiddle 等上分叉或保存您的更改,然后再发布它们。您的 link 转到具有不同代码的 fiddle。
如果您使用固定位置的导航栏,请查看 GetBootstrap.com 上的示例。您会注意到 body 有一个 padding-top: 等于或大于导航栏的高度,这将阻止您在紧随其后的每个元素上添加边距或填充。
body {padding-top:70px;}
如果你使用固定位置导航栏。 examples/docs 对此进行了解释。
Body padding required
The fixed navbar will overlay your other content, unless you add
padding to the top of the <body>
. Try out your own values or use our
snippet below. Tip: By default, the navbar is 50px high.
刚开始尝试Bootstrap;我有少量 HTML 和 JS 经验。 获得了一个使用导航栏和标签页的基本页面,但发现了两个问题: a) 每个标签页的顶部隐藏在导航栏下; b) 'login' 的页面第一次出现正常,但在显示其他页面后拒绝再次出现。 显示问题的代码在 jsfiddle.
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data- target="#navbar" aria-expanded="false" aria-controls="navbar">
<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="#">BLE Log</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav" role="tablist">
<li class="active"><a href="#home" id="home-tab" role="tab" data-toggle="tab" aria-controls="home" aria-expanded="true">Home</a></li>
<li><a href="#profile" role="tab" id="profile-tab" data-toggle="tab" aria-controls="profile">Profile</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#signin" role="tab" id="signin-tab" data-toggle="tab" aria-controls="signin">Sign In</a></li>
</ul>
</div>
</div>
</nav>
<div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home" aria-labelledBy="home-tab">
<div class="container">
<p>Line 1</p>
<p>Line 2</p>
<p>Line 3</p>
<p>Line 4</p>
<p>Line 5</p>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="profile" aria-labelledBy="profile-tab">
<div class="container">
<div class="jumbotron" id="jumbo">
<p>Line 1</p>
<p>Line 2</p>
<h2>Navbar example</h2>
<p>This example is.....</p>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="signin" aria-labelledBy="signin-tab">
<div class="container">
<form class="form-signin">
<h3 class="form-signin-heading">Please sign in</h3>
<label for="inputEmail" class="sr-only">Username or Email address</label>
<input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" placeholder="Password" required>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>
</div>
</div>
</div>
对于您的第一个问题,如果您将 header 更改为已修复,这会导致该元素从流程中删除,您需要下推其余内容。这是通过添加顶部边距或填充来完成的:
#myTabContent { margin-top:70px; }
或
#myTabContent { padding-top:70px; }
您的登录选项卡不起作用,因为它与其他选项 ul
不同。如果您在使用选项卡时查看浏览器,您会注意到当您单击选项时,active
class 会添加到您单击的选项中,并从 ul
。如果您的选择已经有了 active
class 则什么也不会发生。因此,当您单击 #signin
元素时,active
class 不会从第一个 ul
的选项中删除,反之亦然。
要解决此问题,您需要改变方法。两个最简单的选择是将两个 ul
合并为一个(这将导致登录选项不再出现在右侧)或将登录选项卡更改为其他类型的 bootstrap 元素(例如模式)并将其显示在其余内容上。
此外,您只是打错了字 (data-target
)。这个:
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data- target="#navbar" aria-expanded="false" aria-controls="navbar">
应该是这样的:
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
这是一个活生生的例子:http://jsfiddle.net/npk9w0ak/1/
附带说明一下,不要忘记在 fiddle 等上分叉或保存您的更改,然后再发布它们。您的 link 转到具有不同代码的 fiddle。
如果您使用固定位置的导航栏,请查看 GetBootstrap.com 上的示例。您会注意到 body 有一个 padding-top: 等于或大于导航栏的高度,这将阻止您在紧随其后的每个元素上添加边距或填充。
body {padding-top:70px;}
如果你使用固定位置导航栏。 examples/docs 对此进行了解释。
Body padding required
The fixed navbar will overlay your other content, unless you add padding to the top of the
<body>
. Try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.