Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Style html,body from web component (Angular 2)

I'm working on a LoginComponent in Angular 2 that should "restyle" the html and body tags, so I can put in a background image specific for the login page.

But just adding a style for the html, body in my login.css doesn't seem to work.

Is there a way to override the style on the html, body from a component? Or any element for that matter.

I've tried things like:

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

to style an element from outside the Login component. But nothing seems to work.

like image 637
Vivendi Avatar asked Jan 19 '16 16:01

Vivendi


People also ask

Can you apply style to the body tag in HTML?

To declare style rules for the body of a webpage, you will need to create a CSS rule for the body tag selector. These rules will then be applied to all elements that are placed inside the opening and closing <html> tags that you added to the index.

How we can add style to the particular component in Angular?

There are several ways to add styles to a component: By setting styles or styleUrls metadata. Inline in the template HTML. With CSS imports.

Can I style ng content?

If you want to style the projected content within <ng-content>, you can do so using :host and ::ng-deep to apply styling to all nested elements within the <contact> component.


1 Answers

You need to change the way your component serves css using ViewEncapsulation. By default it's set to Emulated and angular will

add an attribute containing surrogate id and pre-process the style rules

To change this behavior import ViewEncapsulation from 'angular2/core' and use it in component's metadata:

@Component({   ...   encapsulation: ViewEncapsulation.None,   ... }) 
like image 77
Sasxa Avatar answered Sep 16 '22 14:09

Sasxa