我读到在Angular中使用CSS
隐藏元素来隐藏这样的元素是一个非常糟糕的做法:
.container{
background-color : powderblue;
height : 50px;
width : 100%
}
@media (max-width: 400px){
.container{
display: none;
}
}
<div class="container"></div>
我知道Angular显示或隐藏元素的方式是使用*ngIf
指令。
提问
如何让* ngIf
以“Angular方式”对媒体查询做出React?
5条答案
按热度按时间1yjd4xko1#
可以使用angular/breakpoints-angular-cdk
按照以下步骤操作
在终端上
然后导入布局模块并将其添加到NgModule的导入列表中
在您可以在组件中使用它之后,只需从
@angular/cdk/layout
导入这些类检查the docs,它是一个简单的API
!!注意新的Angular 版本,有一个更好的方法来做!!
更新如果您使用的是较新版本的Angular,则有一个常量可帮助识别屏幕大小
查看angular website教程
rta7y2nd2#
Angular Flex布局是更好的解决方案。你不需要媒体查询,它有特殊的响应功能,例如显示和隐藏
fxShow:这个标记指定是否应该显示(或不显示)其宿主元素
fxHide:此标记指定是否不应显示其宿主元素
不需要写大量的css,它与角材料非常兼容。https://github.com/angular/flex-layout
4szc88ey3#
我想出了下面的基类,并发现它工作得很好。
如果从该类继承(扩展)组件,组件的host元素将添加一个类,其中包含媒体查询别名。比如...
。。。就会变成。。
注意添加的媒体查询别名“lg”,它将根据窗口大小而改变。这使得通过在组件的SCSS文件中 Package 特定于大小的样式,可以轻松地将响应样式添加到每个介质大小。像这样...
我已经把完整的文件放在我的gist https://gist.github.com/NickStrupat/b80bda11daeea06a1a67d2d9c41d4993
yptwkmov4#
检查这里,它的分叉解决方案发现在互联网上的某个地方与我的定制,但它为我工作(不仅隐藏元素与显示:无,但删除如果从DOM -像 *ngIf工程)
See here
nkkqxpd95#