首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular Material 7 mat-sidenav样式基础元素

Angular Material 7 mat-sidenav样式基础元素
EN

Stack Overflow用户
提问于 2018-10-31 20:38:53
回答 1查看 2K关注 0票数 2

在升级到Angular 7和Material 7之前,我们有一个类似这样的dom结构:

代码语言:javascript
复制
<mat-sidenav-container>
  <mat-sidenav #sidenav mode="side" [opened]="sideNavOpen">
    <ul>
      <li>
        <a mat-icon-button color="primary" [routerLink]="['']">
          <mat-icon>home</mat-icon>
        </a>
      </li>
     ...
    </ul>
  </mat-sidenav>
  <mat-sidenav-content>
    <router-outlet></router-outlet>
  </mat-sidenav-content>
</mat-sidenav-container>

在scss中,我们有

代码语言:javascript
复制
:host {
...

  > mat-toolbar {
   ...
  }

  > mat-sidenav-container {
    ...
    > mat-sidenav {
      ...
      > ul {
        margin: 0;
        padding: 0;
        list-style-type: none;
        ...

新版本的问题是,mat-sidenav的模板已经从<ng-content></ng-content>更改为<div class="mat-drawer-inner-container"><ng-content></ng-content></div>

将样式更改为

代码语言:javascript
复制
    > mat-sidenav {
      > div {
        > ul {
          margin: 0;
          padding: 0;
          list-style-type: none;

不会应用ul元素的样式,因为mat-sidenav中的没有获得shadow-dom _ngcontent-c0选择器。对于应用于此div的直接祖先的样式,有人有解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-13 13:23:04

在尝试将某些样式应用于mat-sidenav元素时也遇到了类似的问题。这可能是因为Angular的视图封装。我的解决方案是将mat-sidenav中包含的项包装在div中,并让div继承我应用于sidenav的样式。

代码语言:javascript
复制
//HTML
<mat-sidenav #sidenav>
  <!-- // wrapper -->
  <div class="sidenav-items-wrapper">
    <!-- // Items in sidenav -->
    <ul>
      ...
    </ul>
  </div>
</mat-sidenav>

//CSS
.sidenav-items-wrapper {
  display: flex;
  height: inherit;
  width: inherit;
  ...
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53083539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档