【问题标题】:replacing global css with local css用本地 css 替换全局 css
【发布时间】:2018-05-10 01:51:25
【问题描述】:

我正在尝试编辑弹出框的样式。在这种情况下,我想编辑显示的宽度。但是,我有一个全局弹出框样式表,适用于应用程序中的所有弹出框。

/* ========================================================================
     Component: popovers
 ========================================================================== */

.popover {
    border-radius: 0;
    border: none;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
    .arrow {
        margin-left: -7px !important;
    }
    .popover-header {
        padding: 1rem 0.75rem 0.5rem;
        display: block;
        background-color: $secondary;
        border-bottom: none;
        border-top-left-radius: 0;
        border-top-right-radius: 0;
    }
    .popover-body {
        padding: 0.5rem 1rem;
        color: $body-color;
    }
    .popover-close {
        position: absolute;
        top: -2px;
        right: 0;
        padding: 0 0.5rem;
        color: $gray-lighter;
        font-size: 2rem;
        font-weight: 400;
        line-height: 1;
        text-shadow: 0 1px 0 #fff;
        &:hover {
            cursor: pointer;
            color: $body-color;
        }
    }

我想知道如何在我的本地 css 文件中覆盖/添加到这些继承的样式。

本地样式表:

.team-activity-container {

    .icon {
      background-image: 
      background-repeat: no-repeat;
      display: inline-block
    }

    .icon .icon-team {
      background-position: -5px -5px;
      width: 25px;
      height: 25px
    }
}
.popover {
  background-color: aqua !important;
  width: 500px;
}

编辑:本地样式表在显示popover的容器中,html中的classes都与填充popover的内容相关。虽然弹出框及其样式表处于全局级别。如何在本地级别编辑弹出框而无需触摸全局样式表。

另外,弹出框来自 ng-bootstrap,我认为问题是我无法覆盖引导设置的默认宽度

【问题讨论】:

  • 如果你创建另一个css文件并在你的全局文件之后加载它,那么所有的样式都会覆盖以前的样式。这是假设您只想要某个页面上的样式。如果您只想在某个弹出框上使用它,您可以使用更改创建一个新类并将其添加到该特定弹出框。
  • 你能粘贴你的代码吗!
  • 我的问题是我应用于弹出框的所有类都不会覆盖全局更改。由于弹出框的内容是在本地样式表中编辑的,但弹出框本身及其所有样式都在全局级别。如何编辑弹出框样式本身,但只能在本地级别。
  • 您发布的本地样式不是有效的 CSS,您是否使用了 CSS 预处理器?例如更少或无礼
  • 是的,这些是提供给我的样式主题以及引导程序设置的任何默认样式

标签: css inheritance


【解决方案1】:

我不知道您所处的所有上下文,但有 3 种主要方法可以覆盖现有的 CSS 规则:

  • 在现有规则之后添加带有新规则的新样式表;

  • 1234563 ;
  • 将“!important”添加到您添加的规则中,并打算覆盖其他规则,但请注意,如果现有规则已经有了,它将无法正常工作。

如果您的新弹出框与之前的示例有所不同,则可能有其他解决方案,例如利用 HTML 标记或 HTML 标记属性,具体取决于上下文。

我希望这会有所帮助。

编辑:我看到你已经编辑了你的问题,添加了一些东西。 查看全局 CSS,如果您的弹出框位于特定容器中,只需将新规则绑定到容器,如下所示: .team-activity-container .popover {...rules};

【讨论】:

  • 为了完整起见(在大多数情况下不推荐),第四种方法是在 HTML 元素本身上应用内联样式。
  • 我正在使用 ng-bootstrap,我认为问题是我无法覆盖引导的设置宽度
  • @Benthon,是的,但是由于您可以控制特定的 HTML(要点 2),因此最好采用我在那里写的那种方式;
  • @Haq.H,唯一的说法就是直接处理代码。无论如何,我想说如果你使用 Angular 的 Boostrap 没关系,我写的那个解决方案是关于 CSS 的性质,作为“级联”样式表。所以你必须检查 CSS 的顺序,看看你对 HTML 等有什么控制权。
  • 我发现我可以在全局样式表中编辑宽度,但我不知道如何在本地文件中引用类 .popover。全局通过其模块导出,并通过我尝试编辑的弹出框所在的应用程序部分的模块导入。如上面的代码所示,我试图覆盖它,但我的本地更改都没有覆盖全局类.全局 css 处于 src 级别,首先加载,然后加载本地组件单个文件,因此加载顺序应该没有任何问题,我引用的类是错误的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2019-04-03
  • 1970-01-01
  • 2011-12-15
相关资源
最近更新 更多