如何解决从Bootstrap 3升级到5导致的布局变化

4

安全性要求我通过 NuGet 升级 jQuery 从 3.2.1 到 3.6.0,bootstrap 从 3.3.7 到 5.0.1,并删除旧的手动安装的 jQuery/bootstrap 文件,但现在我遇到了一些无法解决的布局问题。

症状1

现在我有一个显示的按钮“切换导航”,以前这个按钮是看不见的。我在 css 类 sr-only 上找到的信息说它应该在屏幕阅读器上是不可见的(将屏幕内容阅读给盲人用户),但我没有屏幕阅读器,只有火狐/谷歌浏览器。我猜想这个类应该只对屏幕阅读器可见。无论如何,这个按钮没用,所以我把它注释掉了。

<nav>
    <div class="navbar navbar-default">
        <div class="container-fluid">
            <div class="navbar-header">
                <!-- button type="button" class="navbar-toggle collapsed"
                    data-toggle="collapse" data-target="#navbar" 
                    aria-expanded="false" aria-controls="navbar">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button -->
                <a href="/" class="pull-left">
                    <img src="/Images/company_logo.png" />
                </a>
                <span id="span_pagetitle" class="pull-left span_pagetitle" runat="server">
                   Page Title
                </span>
            </div>

奇怪的是,Chrome开发工具中的元素样式显示,sr-only由bootstrap.min.css处理,但在新的Bootstrap5中由_reboot.scss处理。下划线表明这是一个临时文件,并且扩展名与高级CSS系统SCSS或SASS有关。在DevTools中的网络选项卡中仍然可以看到从Content文件夹下载了bootstrap.min.css。 症状2 在上面的标题代码中,徽标图像和页面标题在浅灰色标题栏中漂亮地显示在同一高度。但是,在升级后,布局消失了,被破坏了。图像和文本已经下降,但下降的量不同,并且没有浅灰色标题栏作为图像和文本的背景。
我需要学习SASS来解决这个问题吗?
还是安装bootstrap可能出了问题?
老实说,我不得不手动将jQuery文件从packages复制到Scripts。我现在也在想来自mutty-keyboard包的jquery-ui.min.js/css和jquery-latest.min.js的版本是否不升级,如DevTools的网络选项卡所示。那会对bootstrap产生干扰吗?
感谢任何可能将我引导正确方向的提示。
更新:
尽管这个问题的答案实际上非常有用,但我也发现从Bootstrap 3升级到5没有这样的东西。它们只是不同的工具包。因此,这个问题在某种程度上已经过时了。真正的答案应该是不要升级。在你的新项目中使用Bootstrap 5。
建议升级的安全扫描可能会做出太多的升级建议,也许是为了让你害怕并拿出钱包 :-)

你好Roland。 你有找到解决这个问题的方法吗?因为我在升级到Bootstrap 4或5等新版本后,我的网站也会出现问题。我看到了你的更新。 这是否意味着我们无法在不对网站布局进行大规模更改的情况下从Bootstrap 3升级到5? - Matin
1
@Matin 总之,Bootstrap 5 并不是 Bootstrap 3 或 4 的升级版。它们实际上是不同的项目。如果您选择了 Bootstrap 3 或 4,请继续使用,并且不要尝试 "升级" 到 5。向更高版本的 Bootstrap 转换更像是一个转化项目,而且绝对不是小事。最好考虑将 Bootstrap 5 用于您的下一个项目或网页。 - Roland
1个回答

6

实际上,在新版的Bootstrap中有很多东西发生了变化。首先,你不需要学习SASS,这只是在新版本中更改了类名而已。

例如,您已经强调了sr-only类,但在新版本中,该类的名称已更改。

将 .sr-only 和 .sr-only-focusable 重命名为 .visually-hidden 和 .visually-hidden-focusable

您需要做的唯一一件事就是阅读此文档,所有问题都会得到解决。

此外,在新版本中,无需使用jQuery。

阅读有关Bootstrap版本迁移的所有内容,请单击以下链接 - https://getbootstrap.com/docs/5.0/migration/


1
所以基本上没有平稳迁移的方法,只能修改所有已更改的类... 因为我也有类似的问题。一开始我没有检查文件中使用的版本。 - Okiemute Gold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接