【问题标题】:Angular 2 - Add / remove class by class nameAngular 2 - 按类名添加/删除类
【发布时间】:2017-01-15 00:26:29
【问题描述】:

在我的应用程序中,我将根据设备方向添加或删除一个类。因此,如果应用程序是纵向的,事情将保持原样。如果是风景,那么应该添加一个类。

我知道我可以使用 [class.ClassName] 轻松做到这一点 -

<div class="parentclass" [class.landscapeClass]="makeTrue">
 <span></span>
</div>

但问题是我将不得不在多个模板中重复此更改。

如何在使用另一个类 (parentclass) 的地方轻松添加和删除一个类(在我的示例中为 landscapeClass)?并在应用为纵向时将其移除。

我正在使用cordova screen orientation plugin 获取应用程序的方向。

我正在使用 Angular2 RC4,我正在寻找无需使用 Jquery 的解决方案。

编辑:我试图找到这样的解决方案的原因是,当键盘出现在 Android 上时,使用媒体查询会弄乱我的 UI。我知道使用宽高比的工作,但它不是 100% 可靠的解决方案。

【问题讨论】:

  • “无论在哪里使用另一个类(父类)”是什么意思?意思是?如果在父元素的某处添加了一个类,那么...?我认为没有办法,至少不可行。
  • 嗨@GünterZöchbauer。我的意思是,如果设备是横向的,那么无论在哪里使用“parentClass”类,都应该添加“landscapeClass”类。所以在景观中它将是
    。当它是纵向

标签: angular


【解决方案1】:

如果该类仅用于调整元素的样式,则可以使用 css 媒体查询来检查纵向方向,而不是添加一个类。

@media only screen and (orientation: portrait) {}
@media only screen and (orientation: landscape) {}

编辑:您还可以将类放在更全局的元素上,并从方向玻璃开始选择器。

CSS:

.orientationPortrait .parentClass { /* styling */}

萨斯:

.parentClass {
  .orientationPortrait & { /* styling */}
}

【讨论】:

  • 我试图通过添加一个类来设置样式的原因是因为当键盘出现在 Android 上时,媒体查询会弄乱 mu UI。 :( 对不起。我应该在我的问题中提到它。
  • 我在这里找到了一个处理该问题的问题:stackoverflow.com/questions/8883163/…
  • 是的。但他们说它不适用于所有移动设备。 :( 我需要一个可以 100% 确定的解决方案。
  • 你可以用不同的方法来处理它:只在一个更全局的元素上添加一次类。然后在你的选择器中简单地从方向类开始。例如 CSS: .orientationPortrait .parentClass { /* 样式 */ }
  • 是的,这是有道理的。您可以将其添加为您的答案的编辑,以便我可以标记它:)
猜你喜欢
  • 2018-08-02
  • 2018-06-12
  • 1970-01-01
  • 2017-09-13
  • 2021-12-10
  • 2011-03-05
  • 2017-03-01
  • 2021-04-07
  • 1970-01-01
相关资源
最近更新 更多