动画期间的mat-sidenav滚动条可见性

时间:2019-01-04 07:48:06

标签: css angular

我正在使用mat-sidenav并设法设置了一个非常基本的图标,该图标位于左侧,打开和关闭的程度足以显示mat-icons。这部分很好,可以正常工作。我已经通过css包含了幻灯片动画以进行打开和关闭。现在的问题是动画过程中滚动条的可见性。我知道为什么存在滚动,这是因为我正在使用ngif在mat-icon之后隐藏内容,所以当它处于部分关闭状态时,图标的字母/说明不会在末端窥视...这就是通过切换功能插入动画时插入-我使用此处现有的滚动条就可以了。我的问题是使滚动条不可见但仍然存在。原因是菜单也可以根据权限垂直增长,我希望用户能够滚动,即使他们看不到滚动条。现在,这不是我研究后看到的新问题-但是,我不明白如何将下面链接中的内容应用于我的问题。这与我观察到的css属性覆盖观察到的东西一起,是因为我没有正确使用css范围。弥补了我的问题。

以下是流行解决方案的链接: Hide scroll bar, but while still being able to scroll

检查元素时,我发现mat-drawer-inner-container是具有溢出属性的元素,而我发现通过css设置的任何属性都没有。下面是用于调试的html的剥离版本,也是我正在尝试使其工作的内容:

<mat-sidenav-container fullscreen>
   <mat-sidenav #sidenav mode="side" class="navbarComponent" [ngStyle]="{ 'width.em': sidenavWidth }" opened="true">

   <mat-nav-list>

      <div id="menu" class="custom-selector">
        <mat-list-item (click)="toggle()">
         <mat-icon mat-list-icon class="noselect">menu</mat-icon>
         </mat-list-item>

         <div *ngIf="sidenavWidth > 6" class="sidenav-item noselect" style="background-color:#d56a00; padding:20px 30px 20px 10px; line-height:0px; text-align:left;">
          <table width="100%">
            <tr>
              <td><img src="assets/images/avatar.png" width="100" height="100"></td>
              <td id="avatar-table" style="color:#fff; vertical-align:top; padding:10px; line-height:15px;" class="col text-truncate"><p><b>Some name</b><br/>
                   Some other text</p>
            </tr>
          </table>
        </div>

         Will use ngfor to generate all the menus. This one is just one and the Html is just a menu with hardcoded values
        <app-menu-list-item [sidenavWidth]="sidenavWidth" [subMenuEnabled]="subMenuEnabled"></app-menu-list-item>

      </div>




     </mat-nav-list>

   </mat-sidenav>


</mat-sidenav-container>

这是我尝试过的CSS。解决方案的链接基本上使用了确切的内容,但是据我了解,您需要将负责滚动的元素包装在另一个元素中,并使该元素具有隐藏的位置和相对的位置。我已经尝试使用mat-sidenav作为父/包装器并将.mat-drawer-inner-container作为子/内部元素进行这种包装:

html, body {
    height: 99%;
    border: 1px solid red;
    overflow:hidden;
}

mat-sidenav {
    height: 100%;
    width: 100%;
    border: 1px solid green;
    overflow: hidden;
    position: relative;
}

.mat-drawer-inner-container {
    position: absolute;
    top: 0px;
    bottom: 0px;
    left: 0px;
    right: -15px;
    border: 1px solid blue;
    overflow: auto;
}

现在为最后一部分...假设我正确无误。 CSS不采取。这是因为CSS作用域? .mat-drawer-inner-container保持不变-这是检查元素后看到的:

.mat-drawer-inner-container {
    width: 100%;
    height: 100%;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}

如果我将浏览器中的overflow元素更改为“ hidden”只是为了看看是否需要-它确实删除了滚动条(不是我想要的,而是一种很好的测试方法)...这应该表示我的方式应用我的CSS属性不正确。

是的,我对前端很陌生。渴望学习,尽管在我从事该项目时需要。

有什么建议吗?

编辑:请求的屏幕截图。 The inspected element

css:

.mat-drawer-inner-container {
    overflow-x: hidden !important;
}

0 个答案:

没有答案