样式html,从Web组件(角度2)

前端之家收集整理的这篇文章主要介绍了样式html,从Web组件(角度2)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用角色2中的一个LoginComponent,它应该“清理”html和body标签,所以我可以放入特定于登录页面的背景图片

但是只要添加一个html的样式,我的login.css中的body就好像不起作用了。

有没有办法从组件覆盖html,body的风格?或任何元素的事情。

我试过的东西就像:

:host(.btn) { ... }
:host(.btn:host) { ... }
.btn:host { ... }

从Login组件外部创建一个元素。但似乎没有任何工作。

解决方法

你可以试试
body {
  /* body styles here */
}

但组件中的样式不应该应用于外部元素。

另一种方法是在主要组件中使用body作为选择器,并使用host-binding来设置/删除body上的CSS类,使您添加到index.html匹配中的CSS。

@Component({
  selector: "body",host: {
    "[class.some-class]":"someClass" 
  },}) 
export class AppComponent {
  constructor(private loginService: LoginService) {
    loginService.isLoggedInChanged.subscribe((value) => {
      this.someClass = value;
    });
  }
  someClass: bool = false;
}

当你将someclass设置为true(使用一些绑定到一个服务,该类被添加到该主体。

如果您不想全局添加CSS,还可以直接绑定到样式属性

@Component({
  selector: "body",host: {
    "[style.background-image]":"bodyBackgroundImage()" 
  },}) 
export class AppComponent {
  bool isLoggedIn = false;
  constructor(private loginService: LoginService) {
    loginService.isLoggedInChanged.subscribe((value) => {
      this.isLoggedIn = value;
    });
  }
  function bodyBackgroundImage() {
    return this.isLoggedIn ? 'url("gradient_bg.png")': 'none';
  }
}

一种风格的方式< body>直接从登录组件是使用DomAdapter(另见https://github.com/angular/angular/issues/4942)

System.import('angular2/src/platform/browser/browser_adapter').then(function(browser_adapter) {
  browser_adapter.BrowserDomAdapter.makeCurrent();
})
...
_dom: DomAdapter = new BrowserDomAdapter();
_dom.setStyle(_dom.query('body'),'padding','50px');
原文链接:https://www.f2er.com/html/232696.html

猜你在找的HTML相关文章