【问题标题】:My own styles in angular material ui我自己在角度材料 ui 中的风格
【发布时间】:2015-05-19 23:47:43
【问题描述】:

material-ui,我想自定义它。不幸的是,我自己的样式被框架样式覆盖了。例如,当我为 md-toolbar 声明样式时

md-toolbar {
    background: red;
}

此声明被材料覆盖。我添加了!important 指令,它有所帮助,但我不想到处使用它。我应该如何以适当的方式自定义材料?

【问题讨论】:

    标签: angularjs angularjs-material


    【解决方案1】:

    您可以在组件的主题页面上直接应用不同的主题:https://material.angularjs.org/#/Theming/04_multiple_themes

    如果没有适用的内置主题,您可以自己滚动:https://material.angularjs.org/#/Theming/03_configuring_a_theme

    如果您需要像paddingmargin 进行调整,请更新scss 文件,为自己获取自定义版本:https://material.angularjs.org/#/Theming/01_introduction

    如果您确实想覆盖样式,请不要将样式直接应用于md- 指令,而是深入研究由指令创建的元素并为子元素设置样式:

    md-toolbar > h2 {
        background: red;
    }
    

    【讨论】:

    • Angular 指令的样式子不会有帮助。我有 h3 元素的背景,但工具栏的其余部分在默认调色板中具有自己的蓝色。这些主题没问题,但就我而言,我有一个非常丰富多彩的页面要构建,所以我想在我的 css 样式表中使用 delcare 颜色,但框架没有帮助
    • 它也不仅仅是关于颜色。我想改变许多其他的东西,比如填充、边距、表单元素的位置..
    • 然后你让 h3 占据全宽和全高。无论如何,如果您需要进行这样的调整,请按照他们的建议 here 并更新 scss 文件并自定义构建。
    • 我应该下载这些文件然后编译它吗? github.com/angular/material/tree/master/src/core/style
    • 我还没有这样做,来自their instructions,你应该下载整个东西运行 gulp 以构建 js 和 css 文件。
    【解决方案2】:

    我所知道的最好的方法,无需重新编译 less、sass 等:

    您应该应用自定义主题:

    angular.module('myApp').config(['$mdThemingProvider', function($mdThemingProvider) {
        $mdThemingProvider.theme('myAwesome')
            .primaryPalette('blue')
            .accentPalette('cyan')
            .warnPalette('red');
        $mdThemingProvider.setDefaultTheme('myAwesome');
    }]);
    

    之后元素获得类:md-myAwesome-theme,这样您就可以在您的 css(或更少)文件中添加样式:

    md-select.md-myAwesome-theme {
        margin: 0;
        padding: 0;
    }
    

    【讨论】:

      【解决方案3】:

      我找到了有关如何使工具栏透明的解决方法。您将工具栏包装在一个 div 中并给它一个类名。然后在你的css中,你通过你放在包装div中的类名来访问你的工具栏。这是我的代码的 sn-p。

      这是我的 HTML

      <section id="learn" class="navbar">
      <md-toolbar layout="row" layout-align="space-between center">
          <span>
              <h3 class="md-toolbar-tools">Something</h3>
          </span>
      

      这是我的css

      .navbar md-toolbar {
      background-color: transparent;
      }
      

      希望对您有所帮助!

      【讨论】:

      • 我认为这是避免重新编译角材料的 sass/less 的最简单和干净的解决方案。
      【解决方案4】:

      我为此苦苦挣扎,因为我不想创建一个全新的面板,只想为新的布局做一个模型。我使用了这样的 CSS 内联样式,并且效果很好!

      <md-toolbar style="background:indigo" layout="row" layout-align="space-between center">
      ...
      </md-toolbar>
      

      【讨论】:

      • 我猜内联样式可以快速模拟单个元素,但 OP 询问如何包含多个样式。
      • 成功了。有人可以从中受益,所以我发布了它。有很多例子可以从问题的严格措辞中详细说明答案以帮助某人。根据你的推理,你可以随意否决这个问题,因为他提到了多种风格,但只举了一个例子。
      【解决方案5】:

      您还可以禁用 Angular 材质主题:

      angular.module('myApp', ['ngMaterial'])
         .config(function($mdThemingProvider) {
             $mdThemingProvider.disableTheming();
         });
      

      【讨论】:

        【解决方案6】:

        覆盖 UI 设计可能会非常痛苦。使用 Angular Material,我发现制作一个单独的 css 文件,通常称为 override-material-ui,并使用 id 选择器来更改样式而不是类名效果很好。因此,对于您的代码,它将是:

        #override-toolbar {
           background: red;
        }
        

        html 中的标签如下所示:

        <md-toolbar id="override-toolbar">
        </md-toolbar>
        

        显然工具栏标签可能会有更多内容,但对于覆盖样式,我发现这效果最好。当您必须以相同的方式设置多个标签的样式时,这很好。尽管 inline 有效地覆盖了所有内容,但稍后更改样式可能会很烦人。

        但是,如果即使是 ID 选择器也无法满足要求,并且您不想处理自定义主题,请使用内联样式选择器。

        希望这会有所帮助!

        【讨论】:

          【解决方案7】:

          **Angular 材质中的自定义 css ** 您可以通过使用 ::ng-deep

          在 Angular 材质组件中使用您的自定义 scss 或 css

          ::ng-deep .customeNavbar{
              padding: 32px 0px;
              .customeNavbarDropdown{
                  &::after{
                      content: "";
                      position: absolute;
                      right: -11px !important;
                      top: 19px;
                 }
              }
          } 
          
          
          /* you can use either first or second    */
          
           mdb-navbar ::ng-deep{
               .customeNavbar{
                  padding: 32px 0px;
              }
              .customeNavbarDropdown{
                 &::after{
                       content: "";
                       position: absolute;
                      right: -11px !important;
                       top: 19px;
                 }
               }
           }
          <mdb-navbar SideClass="navbar navbar-expand-lg navbar-dark bg-primary customeNavbar"> 
                  <links>
                      <!-- Links -->
                      <ul class="navbar-nav mr-auto">
                          <li class="nav-item active">
                          <a class="nav-link waves-light" mdbWavesEffect>Home<span class="sr-only">(current)</span></a>
                          </li>
                          <li class="nav-item">
                          <a class="nav-link waves-light" mdbWavesEffect>Features</a>
                          </li>
                          <li class="nav-item">
                          <a class="nav-link waves-light" mdbWavesEffect>Pricing</a>
                          </li>
                  
                          <!-- Dropdown -->
                          <li class="nav-item dropdown" dropdown>
                          <a dropdownToggle mdbWavesEffect type="button" class="nav-link dropdown-toggle waves-light customeNavbarDropdown" mdbWavesEffect>
                              Basic dropdown<span class="caret"></span></a>
                          <div *dropdownMenu class="dropdown-menu dropdown dropdown-primary" role="menu">
                              <a class="dropdown-item waves-light" mdbWavesEffect href="#">Action</a>
                              <a class="dropdown-item waves-light" mdbWavesEffect href="#">Another action</a>
                              <a class="dropdown-item waves-light" mdbWavesEffect href="#">Something else here</a>
                              <div class="divider dropdown-divider"></div>
                              <a class="dropdown-item waves-light" mdbWavesEffect href="#">Separated link</a>
                          </div>
                          </li>
                      </ul>
                      <!-- Links -->
                  </links>
              </mdb-navbar>

          【讨论】:

            猜你喜欢
            • 2019-05-07
            • 2016-03-11
            • 1970-01-01
            • 1970-01-01
            • 2018-05-05
            • 2016-01-25
            • 2019-03-10
            • 2017-05-13
            • 2016-12-07
            相关资源
            最近更新 更多