【问题标题】:Create a toggle search box in Navbar with Bootstrap 4使用 Bootstrap 4 在导航栏中创建切换搜索框
【发布时间】:2020-04-06 23:06:21
【问题描述】:
我正在尝试在 SEARCH BOX 中创建类似的效果,例如 uikit #SEARCH IN NAVBAR with Bootstrap,但直到现在都没有成功。
示例 -> https://codepen.io/thiagobraddock/pen/mdJNMBJ
<div class="uk-navbar-item uk-width-expand">
<form class="uk-search uk-search-navbar uk-width-1-1">
<input class="uk-search-input" type="search" placeholder="Search..." autofocus>
</form>
</div>
这里有完整的例子 -> https://getuikit.com/docs/search
“搜索图标可用作打开导航栏内搜索的开关[...]”
当点击搜索图标时,输入字段覆盖了所有“行”,看起来很简单但我找不到任何示例,我确实搜索了很多。
谢谢:)
【问题讨论】:
标签:
bootstrap-4
uisearchbar
searchbar
【解决方案1】:
Bootstrap 4 不提供这种“开箱即用”,但您可以使用 Collapse 组件轻松实现它。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css">
</head>
<body>
<nav class="navbar navbar-expand navbar-light bg-light">
<a class="navbar-brand" href="#">Brand</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar1">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar1">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<li class="nav-item d-flex">
<div class="collapse fade" id="searchForm">
<input id="search" type="search" class="form-control border-0 bg-light" placeholder="search" />
</div>
<a class="nav-link ml-auto" href="#searchForm" data-target="#searchForm" data-toggle="collapse">
<i class="mdi mdi-magnify"></i>
</a>
</li>
</ul>
</div>
</nav>
<div class="container py-4">
<div class="row">
<div class="col">
<h2 class="font-weight-light">Hello codeplyer?</h2>
<p>
This is a Bootstrap starter example snippet.
</p>
</div>
</div>
</div>
</body>
</html>
https://codeply.com/p/x0lPBz5p63
而且,这里有一个更强大的示例,其中 full-width 搜索覆盖了整个导航栏:
https://codeply.com/p/K5PKPo5c7f
【解决方案2】:
只需在元素上使用 Jquery;s toggle() 就可以了:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css">
<link rel="stylesheet" href="style.css">
<title>Title</title>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
<input id="search1" class="form-control mr-sm-2" type="search" placeholder="search" aria-label="Search">
<button id="search2" class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/js/bootstrap.min.js"></script>
<script>
$('#search2').click(function() {
$('#search1').toggle();
});
</script>
</body>
</html>