简体   繁体   中英

Update styles set in shadow dom via CSS

This question applies to Ionic, but its answer could apply more generally to CSS. I'm not sure.

I'm using ionic 4 which creates shadow DOM elements that have specific styles. I have the following:

<ion-item>
  <ion-label position="floating">Floating Label</ion-label>
  <ion-input></ion-input>
</ion-item>

I want the "Floating Label" text to move further to the left than usual when it's floating. I can do this pretty easily with styles on the label itself.

However, the shadow DOM divs created under ion-item have their own styles that include overflow: hidden . I have not found a way to update these styles from my stylesheet. I've tried using /deep/ and various other selectors, but these do not seem to work and support for them also seems to be removed. I understand that you can use CSS variables, but this particular property overflow is not set by a variable. I also understand that you can use the DOM to inject styles into the shadow DOM, but I want to avoid doing this since I would have to do it somewhere in every component rather than being able to do it once across the app.

Is there any way to override styles set in a shadow DOM using CSS if variables are not available?

You should try using the ng-deep selector to manipulate DOM elements style directly.

::ng-deep {
 .your-class { // Used to contain your deep change to a localized node
    your style
}

Angular guidelines : https://angular.io/guide/component-styles

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM