我希望在页面顶部显示网站消息(如上次操作的成功或错误通知)。
Angular material docs say你可以在顶部放置一个祝酒词:
position - {string =}:放置吐司的位置。可用:' bottom',' left',' top',' right'的任意组合。默认值:'左下角'。
顶部位置适用于宽度为> = 960px的桌面浏览器,但在宽度变小时会被忽略(然后吐司总是在底部) - 为什么会这样?在移动设备上,它也始终处于底层。
答案 0 :(得分:7)
显然Angular Material(根据v1.1.0.rc1)不支持宽度小于960px的屏幕,但是我们可以有这样的解决方法:
<body ng-app="myApp">
<div layout-fill>
<md-toolbar ng-cloak>
<div class="md-toolbar-tools">
<md-button>My app</md-button>
</div>
</md-toolbar>
<div id="toaster"></div>
<md-content id="content" ng-cloak>
...
</md-content>
</div>
</body>
CSS:
#toaster {
position: fixed;
top: 56px;
height: 48px;
left: 0;
width: 100%;
z-index: 10000;
}
JS:
$mdToast.show($mdToast.simple()
.textContent('hello!')
.parent(document.querySelectorAll('#toaster'))
.position('top left')
.hideDelay(false)
.action('x'));
结果:http://screencast.com/t/B1U8aXaFcd
当页面滚动时,这也会使吐司保持在其位置。但是使用这个解决方案,动画隐藏将继续将消息移动到底部,而不是顶部。在我的真实项目中,我最终没有与MD斗争并且在底部吐司,但是在滚动页面时我使用这种方法来保持其位置。
答案 1 :(得分:3)
根据Google Material Design文档(我的要点):
Snackbars通过在屏幕底部显示简短消息来提供有关操作的轻量级反馈。 Snackbars可以包含操作。
如果要查看angular-material.css
(按照v.1.0.5):
@media (max-width: 959px) {
md-toast {
left: 0;
right: 0;
width: 100%;
max-width: 100%;
min-width: 0;
border-radius: 0;
bottom: 0;
}
...
}
您不能在宽度小于960px的屏幕上放置祝酒词(因为bottom: 0
页边距),因为angular-material
的团队刚刚实施了规范不要定义这种可能性。
尝试扩展/覆盖css以实现这一目标。
答案 2 :(得分:2)
这是一个CSS解决方案:
@media (max-width:959px) {
md-toast {
bottom: unset !important;
}
}
希望这有帮助。
答案 3 :(得分:0)
试试这个:
HTML:
<body layout="column">
<!-- body --->
</body>
CSS:
body {
overflow-y: hidden !important;
}