ejs文件和html文件的页边距不同,本应为白色的背景为灰色

Margins of the page are different in ejs file and html file, and background is gray when it should be white

当我比较 html 文件(在浏览器中)和 ejs 文件时,页面的页边距不同。我正在使用 node/express 和 Bootstrap 4。我最初在 html 中构建了该页面。我希望内容从一侧边缘到另一侧边缘填充页面,我能够通过 html 页面做到这一点。

html,body {
  height: 100%;
  width: 100%;
}
{
    margin:0;
}
body {
    overflow-x: hidden;
} 
<div> 
  <div class="row"> 
     <div class="col-lg-12 pl-5 pr-5 pb-5 pt-5 text-light" style="font-size:30px; background-color: pink;">
         My Website
     </div>
  </div> 
</div> 

这将产生一个 div,它是从屏幕的一个边缘到另一个边缘的粉红色带。

但是,当我将相同的html页面转换为ejs文件时,div和边缘之间有大约1.3厘米的白色space屏幕。不仅如此,白色背景 divs 变成了非常浅的灰色背景。

我没有添加任何其他 css 样式来使背景颜色变为这种淡灰色。而且这种浅灰色背景只出现在 ejs 文件中,而不出现在 html 个文件中。

我没有 partials ejs 文件,除了一个包含消息的文件,而且那个 ejs 文件没有样式信息。每个主页,例如主页、关于页面等,都应该是独立的 css 和 html.

我不知道灰色背​​景是从哪里来的。

Bootstrap(我正在使用 Bootstrap 4)对我来说工作正常。最初打开下拉菜单时出现问题,但我通过下载 Bootstrap 并将 css 文件放入 Public 文件夹而不是使用 cdn link 到 Bootstrap 来解决这个问题], 但无论如何,边距问题甚至在我这样做之前就已经存在了。

BS 有 2 个 classes“container”和“container-fluid”,您需要 class“container-fluid”来强制内容从左边缘扩展到右边缘。下面的代码应该可以解决这个问题。如果一切都好,请告诉我。

<div class="container-fluid"> 
  <div class="row"> 
     <div class="col-lg-12 pl-5 pr-5 pb-5 pt-5 text-light" style="font-size:30px; background-color: pink;">
         My Website
     </div>
  </div> 
</div> 

嗨,这听起来很奇怪,所以我只是使用我的 Bootstrap 4 模板进行了双重检查。粉红色背景 运行 左边缘到右边缘没有空白,效果很好。下面的完整模板供您参考。我希望它是带软件安装的 smt。无论如何,您需要确保 Bootstrap、jQuery、popper.js 都已正确安装在您的项目中。让我知道。

<!DOCTYPE html>
<html lang="en">

<head>
    <!-- Required meta tags always come first -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta http-equiv="x-ua-compatible" content="ie=edge">

    <!-- Bootstrap CSS -->

    <!-- build:css css/main.css -->
    <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="node_modules/font-awesome/css/font-awesome.min.css">
    <link rel="stylesheet" href="node_modules/bootstrap-social/bootstrap-social.css">
    <link rel="stylesheet" href="css/styles.css">
    <!-- endbuild -->

   
</head>

<body>

    <div class="container-fluid"> 
        <div class="row"> 
           <div class="col-lg-12 pl-5 pr-5 pb-5 pt-5 text-light" style="font-size:30px; background-color: pink;">
               My Website
           </div>
        </div> 
      </div> 

   
    
    <!-- jQuery first, then Popper.js, then Bootstrap JS. -->
    <!-- build:js js/main.js -->
    <script src="node_modules/jquery/dist/jquery.slim.min.js"></script>
    <script src="node_modules/popper.js/dist/umd/popper.min.js"></script>
    <script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
    <script src="js/scripts.js"></script>
    <!-- endbuild -->

    

</body>

</html>

你的代码对我来说工作得很好,确保你已经像这样正确地编写了你的​​后端代码

const express = require('express');
const ejs = require('ejs');
const app = express();
app.set('view engine', 'ejs');
app.use(express.static('public'));

app.get('/', (req, res)=>{
    res.render('home', {Title: 'Welcome'});
});

app.listen(3000, ()=>{
    console.log('Server is running on port 3000');
});

确保您的 EJS 文件位于名为 'views' 的文件夹中,并且您的 css 文件位于名为 'public'

的文件夹中

我找到问题所在了。就是我安装使用的express-ejs-layouts模块。我忘记了我做过那件事,这就是为什么我没有在问题中提到这一点。我也不认为它会对布局产生如此大的影响,我认为我必须安装它以及 ejs 模块才能使 ejs 正常工作。老实说,我不知道 express-ejs-layouts 模块做了什么。

一旦我删除了 const expressLayouts = require('express-ejs-layouts')app.use(expressLayouts) 中间件,ejs 文件现在可以正常渲染了。页边距与页面边缘齐平 container-fluid。没有淡灰色背景了。

我还必须提到上面 hang-coder 建议的将样式表按正确顺序放置的解决方案适用于 html 文件。尽管这不是主要问题,但它解决了 html 文件在使用 container-fluid 时无法在浏览器中正确显示边距的问题。我错误地将 Bootstrap 脚本放在了 jQuery 脚本之上。我也在 ejs 文件中以错误的顺序放置了这些脚本,这也是为什么边距无法正确显示的问题的一部分,但我在询问 ejs 文件中的边距问题之前更正了顺序,因为我必须这样做才能使下拉菜单正常工作,这是我在问边距问题之前遇到的另一个问题,但我不确定它们是否对边距问题产生了影响。

所以问题与 mac 屏幕或 Chrome 浏览器在 mac 秒内的显示方式无关,正如我最初认为的那样。

此脚本为我显示 html 文件中的正确页边距:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Bootstrap 4 Example</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- jQuery library -->
    <script 
     src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">. 
    </script>

    <!-- Popper JS -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" 
  href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

    <!-- Latest compiled JavaScript -->
    <script 
    src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js">. 
    </script>

  </head>
  <body>
    <div class="container-fluid bg-primary">
      <h1>My First Bootstrap Page</h1>
      <p>This is some text.</p>
    </div>
 </body>
</html>

所以总而言之,以正确的顺序放置 jQuery 和 Bootstrap 脚本并删除 express-ejs-layouts 解决了问题。