如何在 Bootstrap 5 中使用 CSS 变量?

问题描述 投票:0回答:4

我一直在玩 Bootstrap 的全新 5.0.1。

官方文档中,他们说他们在编译的CSS中使用CSS变量。

对我来说,我可以在运行时覆盖某些颜色。例如,我想要 e。 g。整个“主要”主题使用红色而不是默认的蓝色。

看这个非常简单的示例。什么也没发生。徽章和按钮仍然是蓝色的。

<html>
    <head>
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
        <style>
          :root{--bs-primary: red;}
         </style>
     </head>
     <body>        
        <div class="badge bg-primary">100</div>
        <button class="btn btn-primary">Just a button</div>
    </body>
</html>

大家觉得怎么样?我做错了什么吗?或者 Bootstrap 团队还没有准备好为每个组件提供 CSS 变量?

重要提示:我知道我可以使用 SASS 在编译时从蓝色切换到红色。但我需要一个解决方案,让我在运行时期间更改颜色,因为我根本不知道编译时所需的颜色。

更新 05/16/2021:此时我想知道的是 Bootstrap 团队是否仍在致力于将 CSS 变量添加到 compiled css(可能在 v5.x.x 中) - 或者如果我误解了整个事情?谢谢你们。

更新 05/17/2021:修改徽章非常简单,正如@Sameer 在下面向我们展示的那样。然而,修改按钮并不是那么简单。所以我在我的示例中添加了一个按钮。

更新 05/18/2021: 对于任何感兴趣的人,我在 Bootstrap 社区论坛上开了一个帖子。

twitter-bootstrap
4个回答
6
投票
检查徽章后,引导程序似乎没有使用变量应用背景颜色。

所以你不能通过更改 bootstrap CSS 变量来覆盖 CSS,我认为他们添加了 CSS 变量来允许我们设计自己的元素样式。

一种方法是手动覆盖

.bg-primary { background-color: var(--bs-primary) !important; }
但是如果您使用SASS,那么更改主题和颜色很容易。

  1. 如何使用SASS更改引导程序默认主题
  2. 官方文档

更新: 有人已经请求了这个
(参见这里),但是引导团队由于各种原因不想实现这个,比如对旧浏览器的支持,没有计划重新架构所有代码库来做到这一点,等等。

所以不会有官方支持,但在同一页面上我发现

this有用。

Hermanya 用户更改了 Bootstrap CSS 的输出以使用 CSS 变量,因此在运行时我们可以更改颜色。

这是

codepen 演示 这是一篇关于他如何做到这一点的
文章 他还发布了
cdn链接

虽然它可能有效,但是每次 bootstrap 更新时你都必须一次又一次地这样做。


1
投票
您需要在 css 中使用 important 和 style,并且应该在 bootstrap 加载之后。

.bg-primary { background-color: var(--bs-primary) !important; }
    

0
投票
看起来在 Bootstrap 5.1 中引入了运行时 CSS 变量,并在 5.2 中添加了变量!

https://blog.getbootstrap.com/2022/05/16/using-bootstrap-css-vars/


0
投票
我发现覆盖它的最简单方法是为自定义类中的这些根变量提供值。

例如类 img-thumbnail 有

border-radius: var(--bs-border-radius);


test-img-class { --bs-border-radius : 20px }
可能想确保班级优先级。

<img src="..." className="img-thumbnail test-img-class" />
    
© www.soinside.com 2019 - 2024. All rights reserved.