Угловой материал 2 - Как запереть матовую панель и матовые вкладки вверх
Для моего веб-сайта я пытаюсь заблокировать <Mat-Toolbar> в верхней части экрана, а затем прямо под ним я хочу заблокировать <Mat-Tabs>.
Проблема, с которой я сталкиваюсь, заключается в том, что положение: исправлено в CSS, оно вообще не блокирует его, и когда я на самом деле захожу на сайт и проверяю его элемент, вставляя <div>
Как я должен заблокировать эти два элемента наверх, как я должен обойти этот автоматически созданный Div? У меня был предыдущий вопрос, похожий на этот, но я решил это, используя фиксированное и абсолютное позиционирование, которое не применяется в этой более новой версии Angular/Angular Material.
Исходный код для моего сайта
Ответы
Ответ 1
Вы имели в виду липкую панель инструментов?
Просто добавьте класс на панель инструментов и сделайте его липким:
.app-toolbar {
position: sticky;
position: -webkit-sticky; /* For macOS/iOS Safari */
top: 0; /* Sets the sticky toolbar to be on top */
z-index: 1000; /* Ensure that your app content doesn't overlap the toolbar */
}
Примечание. В IE 11 отсутствует поддержка position: sticky
закрепление. Для получения дополнительной информации о поддержке position: sticky
браузере position: sticky
закрепление просмотрите эту страницу caniuse.
Ответ 2
Возможно, вы можете достичь этого, установив стиль с помощью :: ng-deep:
::ng-deep .mat-toolbar{
z-index: 998;
position: fixed
}
::ng-deep .mat-tab-group{
margin-top:55px !important;
}
::ng-deep .mat-tab-header{
z-index: 999;
width:100vw;
position: fixed !important;
background-color: red !important;
}
::ng-deep .mat-tab-body-wrapper{
position: relative !important;
margin-top:55px;
}
DEMO
Ответ 3
Даже я столкнулся с той же проблемой для моего проекта. Очень сложно сделать панель инструментов фиксированной, когда она объявлена внутри <mat-sidenav-container>
.
Причина, по которой это сложно, состоит в том, что как <mat-sidenav-container>
и <mat-toolbar>
использует transform: translate3d(0,0,0)
.
Таким образом, лучший способ продолжить - удалить <mat-toolbar>
из <mat-sidenav-container>
и написать extenal css для панели инструментов.
mat-toolbar {
height: 64px;
position: fixed;
z-index: 100;
width: 100% !important;
}
Это решение сработало для меня.
Ответ 4
Это работает для меня:
app.component.html
<div class="app-container">
<mat-sidenav-container>
<mat-sidenav mode="over">
<div>item 1</div>
<div>item 2</div>
<div>item 3</div>
</mat-sidenav>
<mat-toolbar>
<i class="material-icons hamburger-menu">menu</i>
<span>item A</span>
<span>item B</span>
</mat-toolbar>
<div class="app-body">
<router-outlet></router-outlet>
</div>
</mat-sidenav-container>
<div>
style.css
.app-body {
overflow: auto;
position: absolute;
bottom: 0;
left: 0;
right: 0;
top: 64px;
}
.app-container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
Ответ 5
mat-toolbar {
height: 64px;
position: fixed;
z-index: 100;
width: 100% !important;
}
Просто добавьте эти строки в мои styles.css и моя проблема будет решена! ^ _ ^