Bootstrap:是否可以创建可以导入网站上每个新页面的模板?

时间:2019-05-22 22:17:25

标签: twitter-bootstrap templates web-frontend

我正在使用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;
}

1 个答案:

答案 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