如何样式化 ng-bootstrap - 替代 /deep/

Posted

技术标签:

【中文标题】如何样式化 ng-bootstrap - 替代 /deep/【英文标题】:How to Style ng-bootstrap - Alternative to /deep/ 【发布时间】:2018-01-08 18:37:06 【问题描述】:

我在我的一个应用程序中使用来自 ng-bootstrap 的 accordion 组件和 /deep/(又名:::ng-deep>>>)选择器来设置其样式。但是我看到这个选择器一直是deprecated。

是否可以设置 ng-bootstrap 组件的样式?

【问题讨论】:

这也适用于角材料,我想知道这个问题的答案。我写了here 和this plunker example,如果有人想试试的话 【参考方案1】:

我已经进行了一些挖掘,如果您关闭组件的 view encapsulation,则可能会覆盖 ng-bootstrap 样式,如下所示:

@Component(
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.scss'],
  encapsulation: ViewEncapsulation.None
)
export class ExampleComponent 

    constructor(public activeModal: NgbActiveModal)  


例如,我在这里为 modal dialog 自定义样式,因为我假设我的示例组件应该显示为模式对话框,并且我希望它的宽度最大为小屏幕中视口的 70%尺寸:

.modal-dialog 
  @include media-breakpoint-down(xs) 
    max-width: 70vw;
    margin: 10px auto;
  

请注意,关闭视图封装意味着该特定组件的样式将在整个应用程序中可用,因此其他组件将可以访问它们,如果您不小心,最终将使用它们。

【讨论】:

【参考方案2】:

您必须自定义样式以覆盖 scss 中的默认引导变量。

你可以在这里找到所有可能的variables../node_modules/bootstrap/scss/_variables.scss

Bootstrap 还为我们提供了一个custom 文件添加我们的样式../node_modules/bootstrap/scss/_custom.scss

例如:这里我覆盖了两个影响我的手风琴的变量(我改变了一些随机颜色)

$link-color:$brand-warning;
$card-bg:$green;

别忘了删除 _custom.scss 中的 !default,然后自定义样式就完成了。

现在需要从scss 构建css

首先全局安装npm install -g grunt-cli

然后导航到\my-app\node_modules\bootstrap> npm install,这将安装所有依赖项。

最后运行\my-app\node_modules\bootstrap> grunt,这将创建css文件。

这应该可以正常工作。

在我的情况下,“bootstrap.min.css”没有正确生成,所以现在我在我的 .angular-cli.json 文件中使用“../node_modules/bootstrap/dist/css/bootstrap.css”。

【讨论】:

【参考方案3】:

支持模拟的 /deep/ CSS 选择器(Shadow-Piercing 后代组合器又名 >>>) 已被弃用以匹配浏览器 实现和 Chrome 的删除意图。 ::ng-deep 已经 添加为当前使用的开发人员提供临时解决方法 这个功能。

从这里:http://angularjs.blogspot.com/2017/07/angular-43-now-available.html

【讨论】:

以上是关于如何样式化 ng-bootstrap - 替代 /deep/的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ng-bootstrap 中更改模态框的位置

Angular 6 - ng-bootstrap - 样式标签

ng-bootstrap - Typeahead 下拉宽度

如何在 ng-bootstrap 轮播中用 div 替换图像?

如何在角度 4 中使用 ng-bootstrap 将数据模态组件传递给父组件

如何使用 angular-cli 和 ng-bootstrap 自定义 Bootstrap 4 SCSS 变量?