我正在使用Bootstrap创建个人网站/博客。我对这个框架以及一般而言的Web开发都是新手,所以我希望获得一些指导。 我希望添加的任何新页面都具有相同的布局:侧面导航菜单占据3列,内容占据其余9列。以小格式,我将使它们各自占据全部12列。 我想制作此模板,是因为如果我决定一天更改网站布局,则不需要遍历每个文件。 那么有什么方法可以创建模板并将其导入到每个页面中?
我用Google搜索了它,但似乎找不到任何东西。在我看来,这似乎是一个非常明显的功能,因此我认为自己可以找到一些东西,但我一直无法做到。
这是我的页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Intro</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="../main.css">
<link rel="stylesheet" type="text/css" href="template.css">
</head>
<body>
<!-- Top navbar -->
<nav class="navbar navbar-expand-md">
<a class="navbar-brand" href="#">Logo</a>
<button class="navbar-toggler navbar-dark" type="button" data-toggle="collapse" data-target="#main-navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="main-navigation">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</div>
</nav>
<!-- Main body of page -->
<div class="container-fluid">
<div class="row">
<!-- Sidebar -->
<div class="col-lg-3 col-md-3 col-sm-12" id="sideBar">
<h4 class="feature-title">Table of Contents</h4>
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><a data-toggle="collapse" href="#collapse1">Introduction</a></h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<ul class="list-group">
<li class="list-group-item">One</li>
<li class="list-group-item">Two</li>
<li class="list-group-item">Three</li>
</ul>
</div>
<div class="panel-heading">
<h4 class="panel-title"><a data-toggle="collapse" href="#collapse2">Fundamentals</a></h4>
</div>
<div id="collapse2" class="panel-collapse collapse">
<ul class="list-group">
<li class="list-group-item">One</li>
<li class="list-group-item">Two</li>
<li class="list-group-item">Three</li>
</ul>
</div>
<div class="panel-heading">
<h4 class="panel-title"><a data-toggle="collapse" href="#collapse3">Software</a></h4>
</div>
<div id="collapse3" class="panel-collapse collapse">
<ul class="list-group">
<li class="list-group-item">One</li>
<li class="list-group-item">Two</li>
<li class="list-group-item">Three</li>
</ul>
</div>
</div>
</div>
</div>
<!-- Page Contents -->
<div class="col-lg-9 col-md-9 col-sm-12" id="main">
<h3 class="feature-title">Introduction</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</p>
</div>
</div>
</div>
<!--- Script Source Files -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<script src="../main.js"></script>
<script src="template.js"></script>
<script src="https://use.fontawesome.com/releases/v5.5.0/js/all.js"></script>
</body>
我希望导航栏和侧边栏在我的所有页面中保持不变。只是页面内容(id =“ main”)会在正文中有所不同。另外,我也希望页面标题(在他的标题中)也要更改。有什么办法可以使该变量吗? 我更喜欢这样做的另一个原因是,随着我添加更多页面,目录将发生变化,因此,我不想每次都要进行每个文件更改目录的更改一个新页面。
感谢您的帮助。谢谢
编辑: 这是template.css的CSS
#main {
transition: margin-left .5s;
padding: 20px;
}
#sideBar {
background: black;
padding: 20px;
}
.list-group-item {
background: black;
}
.list-group-item:hover {
color: green;
}
答案 0 :(得分:2)
仅供参考::根据我的建议,您应该使用一些好的脚本/编程语言,例如Ruby On Rails,Django或PHP,以实现具有一个模板动态呈现所有其他页面内容的功能。因此,您只需要更改主模板即可在所有页面上反映出来。这是最佳做法。
好吧,我仍在为您提供学习阶段的解决方案,您可以使用JQuery来实现这一点:)一个仅出于学习目的的好主意。
[不是出于生产目的-只是解决您的问题]
请在github repo上找到您问题的解决方案。我结合了您的代码,并创建了一个示例项目供您使用:
它具有一个名为template.html的模板,以及(id =“ main”)index.html,about.html和contact.html通过遵循template.html模板呈现其自身内容的其他不同内容特定页面。
请看一下这个github回购: https://github.com/ashishprajapati/template-for-basic-html
git clone git@github.com:ashishprajapati/template-for-basic-html.git
要启动html服务器,请按照以下步骤操作
npm install http-server -g
请在存在克隆项目的目录中使用此命令
http-server