객체로 간단한 부트스트랩 매뉴 제작 함수
아직 초보여서 오류가 있으면 알려주세요^^
<!-- index.php -->
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Menu demo</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
</head>
<body>
<?php
$MENUS = [
[
"name" => "home",
"href" => "/"
],
[
"name" => "dropdown test",
"dropdown" => [
[
"name" => "test",
"href" => "/test"
],
[
"name" => "dropdown test",
"dropdown" => [
[
"name" => "test1",
"href" => "/test1"
]
]
]
]
]
];
function dropdownMenu($active, $menus) {
$html = '';
$isActive = false;
foreach ($menus as $element) {
if (!isset($element['dropdown'])) {
$menuHref = strtolower(trim($element['href'], '/'));
$activeHref = strtolower(trim($active, '/'));
$activeMenu = $menuHref === $activeHref;
if ($activeMenu) $isActive = true;
$html .= '<li><a class="dropdown-item' . ($activeMenu ? " active" : "") . '" href="' . $element['href'] . '">' . $element['name'] . '</a></li>';
} else {
$menuData =Menu($active, $element['dropdown']);
if ($menuData[1]) $isActive = true;
$html .= '<li class="dropdown dropend"><a class="dropdown-item dropdown-toggle' . ($menuData[1] ? " active" : "") . '" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">' . $element['name'] . '</a><ul class="dropdown-menu">' . $menuData[0] . '</ul></li>';
}
}
return [
$html,
$isActive
];
}
function menu($active, $menus) {
$html = '';
$isActive = false;
foreach ($menus as $element) {
if (!isset($element['dropdown'])) {
$menuHref = strtolower(trim($element['href'], '/'));
$activeHref = strtolower(trim($active, '/'));
$activeMenu = $menuHref === $activeHref;
if ($activeMenu) $isActive = true;
$html .= '<li class="nav-item"><a class="nav-link' . ($activeMenu ? " active" : "") . '" aria-current="page" href="' . $element['href'] . '">' . $element['name'] . '</a></li>';
} else {
$menuData = dropdownMenu($active, $element['dropdown']);
if ($menuData[1]) $isActive = true;
$html .= '<li class="nav-item dropdown"><a class="nav-link dropdown-toggle' . ($menuData[1] ? " active" : "") . '" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">' . $element['name'] . '</a><ul class="dropdown-menu">' . $menuData[0] . '</ul></li>';
}
}
return [
$html,
$isActive
];
}
?>
<nav class="navbar navbar-expand-lg bg-body-tertiary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-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 me-auto mb-2 mb-lg-0">
<? echo menu($_SERVER['REQUEST_URI'], $MENUS)[0] ?>
</ul>
</div>
</div>
</nav>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
</body>
</html>
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5216 | 2년 전 | 953 | |||
| 5215 | 2년 전 | 1089 | |||
| 5214 | 2년 전 | 726 | |||
| 5213 | PHP |
swallow
|
2년 전 | 675 | |
| 5212 | PHP |
swallow
|
2년 전 | 1697 | |
| 5211 | PHP |
swallow
|
2년 전 | 1460 | |
| 5210 | PHP |
swallow
|
2년 전 | 2145 | |
| 5209 | PHP | 2년 전 | 697 | ||
| 5208 | JavaScript |
swallow
|
2년 전 | 836 | |
| 5207 | JavaScript |
swallow
|
2년 전 | 686 | |
| 5206 | JavaScript |
swallow
|
2년 전 | 610 | |
| 5205 | PHP |
|
2년 전 | 701 | |
| 5204 | 기타 |
techstar
|
2년 전 | 753 | |
| 5203 | JavaScript |
swallow
|
2년 전 | 579 | |
| 5202 | JavaScript |
swallow
|
2년 전 | 606 | |
| 5201 | JavaScript |
swallow
|
2년 전 | 671 | |
| 5200 | JavaScript |
swallow
|
2년 전 | 863 | |
| 5199 | JavaScript | 2년 전 | 625 | ||
| 5198 | 기타 |
swallow
|
2년 전 | 657 | |
| 5197 | PHP |
swallow
|
2년 전 | 735 | |
| 5196 | JavaScript |
swallow
|
2년 전 | 606 | |
| 5195 | PHP |
swallow
|
2년 전 | 2056 | |
| 5194 | PHP |
swallow
|
2년 전 | 618 | |
| 5193 | 기타 |
swallow
|
2년 전 | 670 | |
| 5192 | MySQL |
swallow
|
2년 전 | 1388 | |
| 5191 | JavaScript |
swallow
|
2년 전 | 1075 | |
| 5190 | PHP |
swallow
|
2년 전 | 1932 | |
| 5189 | MySQL |
swallow
|
2년 전 | 6190 | |
| 5188 | node.js |
swallow
|
2년 전 | 1048 | |
| 5187 | node.js |
swallow
|
2년 전 | 794 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기