我试图让我的toastr 通知出现在 div 的中间。我已经看到了一些建议,例如这个,但它基于整个窗口而不是在 div 中居中。
当 toastr 对表单上的元素一无所知时,是否可以将 toast 通知集中在表单元素中?
我最近的尝试是在页面中大致居中吐司,但我想将它放在某个 div 中。那可能吗?如果是这样,怎么做?
这是我的居中尝试:
.toast-center {
top: 50%;
left: 40%;
}
您可以尝试创建一个新的 div 并将其放置在您预期的 div 的中心。
然后您可以使用positionClass
toastr 选项,这是您的通知弹出位置
toastr.options: {
"positionClass": "your-newly-created-div-class"
}
在 toastr.css 中,添加:
.toast-top-center {
top: 12px;
left:50%;
margin:0 0 0 -150px;
}
在 JavaScript 中,使用这个:
toastr.options = {
positionClass: 'toast-top-center'
};
如果您的 toast div 有其他宽度,您可以将上面的 CSS 修改为它的一半宽度。
margin:0 0 0 (here caculate the -width/2 px for yourself)
你可以用jquery来做
在 toastr.css 中,添加:
.toast-top-center {
top: 12px;
margin: 0 auto;
left: 50%;
margin-left: -150px;
}
在 js 文件中添加以下内容:
toastr.options = {
positionClass: 'toast-top-center'
};
toastr.success("Your Message Header", "Your Message");
var $notifyContainer = $('#toast-container').closest('.toast-top-center');
if ($notifyContainer) {
// align center
var windowHeight = $(window).height() - 90;
$notifyContainer.css("margin-top", windowHeight / 2);
}
以下片段在角度 ~9.1.0 中使用"ngx-toastr": "^12.1.0"进行了测试。
组件名称.ts
import { ToastrService } from 'ngx-toastr';
@Component({
selector: 'app-component-name',
templateUrl: './component-name.component.html',
styleUrls: ['./component-name.component.scss']
})
export class ComponentName implements OnInit {
constructor(private readonly toastrService: ToastrService) { }
ngOnInit(): void {
this.toastrService.toastrConfig.positionClass = 'toast-top-center';
}
}
组件名称.scss
.toast-top-center {
top: 12px;
margin: 0 auto;
left: 50%;
margin-left: -150px;
}
在 ngx-toastr (^14.1.4) 的最新版本中有一个针对这个问题的原生解决方案,如果您检查 toast.css 文件,您可以看到以下内容:
.toast-center-center {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
{positionClass: 'toast-center-center' }
因此,当您调用 toastr 通知时,您只需在 .ts 中使用