Bootstrap 按钮 margin/padding 在 dotnet 发布后不同

Bootstrap button margin/padding different after dotnet publish

我正在使用 webpack 捆绑器开发 Angular 5,ASP.NET Core 2.0,Bootstrap 项目。我无法弄清楚为什么 运行 在 Visual Studio 中设置我的网站与 运行 在 dotnet publish.[=21= 中设置我的网站之间的某些按钮位置不同]

问题出在这里,我的按钮被压在一起了。

它应该是这样的;注意按钮之间的间距:

当我在 Visual Studio 中 运行 时,按钮看起来是正确的,无论是作为独立的还是在 IIS Express 中。但是,在我的实时网站 (dotnet publish) 上,按钮被压扁了。这种情况发生在站点的其他放置按钮的区域 side-by-side。现在,我可以添加样式来纠正该行为,但在我消除现有差异之前它没有任何意义。

我试过的

  1. 检查元素的不同 CSS 样式。我检查了我的实时站点和我的调试站点,它们完全相同。但是,如果它们看起来不同,那怎么可能是真的呢?
  2. 由于我在 Visual Studio 中通常处于 Debug 模式,而我的 live 站点是 Release 版本,因此我在 Visual Studio 中尝试了 运行ning Release 模式。它看起来仍然正确 运行这样处理。
  3. 我知道我的实时网站最终使用 dotnet publish 来生成我的网站。因此,通过 Powershell,我 运行 dotnet publishdotnet run 并在 localhost 上查看了它。啊哈!我的按钮被压扁了。

然而,我仍然在每个版本之间检查 Chrome 中的元素,并且我仍然有不同的按钮位置和相同的 CSS。我什至不知道为什么正确版本的按钮之间有填充,它们上面没有 margin/padding!不确定还能尝试什么。

HTML很简单:

<div *ngIf="user?.username">
    <button class="btn btn-sm btn-outline-secondary" (click)="likeClick()">Like</button>
    <button class="btn btn-sm btn-outline-secondary" (click)="comment()">Reply</button>
</div>

我正在使用 "bootstrap": "4.0.0-beta.2"

所以,好像是因为我的HTML输入的是

<div *ngIf="user?.username">
    <button class="btn btn-sm btn-outline-secondary" (click)="likeClick()">Like</button>
    <button class="btn btn-sm btn-outline-secondary" (click)="comment()">Reply</button>
</div>

按钮之间的换行符在我调试时创建了一个 space 字符。这解释了为什么我在 Chrome 开发工具中看不到任何 CSS 边距或宽度的差距;我很幸运,不小心用光标选择了space字符。

我猜测是webpack的热重载与此有关。如果我删除换行符,space 字符就会消失,如果我对按钮应用边距,它也会消失,我认为这很有趣。

所以,我现在只需将 .btn-toolbar 添加到代表工具栏和样式的任何按钮分组中即可:

<div class="btn-toolbar" *ngIf="user?.username">
    <button class="btn btn-sm btn-outline-secondary" (click)="likeClick()">Like</button>
    <button class="btn btn-sm btn-outline-secondary" (click)="comment()">Reply</button>
</div>

.

.btn-toolbar > button {
    margin-right: 0.5rem;
}

.btn-toolbar > button:last-child {
    margin-right: 0;
}