---
title: Scoped CSS Does Not Apply to Dynamically Added Content
impact: HIGH
impactDescription: Programmatically inserted DOM elements won't receive scoped style data attributes, causing styles to fail silently
type: gotcha
tags: [vue3, sfc, scoped-css, dynamic-content, v-html]
---
# Scoped CSS Does Not Apply to Dynamically Added Content
**Impact: HIGH** - Vue's scoped CSS works by adding data attributes to elements at compile time. Content added dynamically at runtime (via `v-html`, JavaScript DOM manipulation, or third-party libraries) won't have these attributes, so scoped styles won't apply.
## Task Checklist
- [ ] For `v-html` content, use `:deep()` selectors or unscoped styles
- [ ] Avoid programmatic DOM manipulation; prefer Vue's reactive template system
- [ ] When DOM manipulation is unavoidable, use global styles with unique class prefixes
- [ ] Consider CSS modules for content that mixes static and dynamic elements
**Problematic Code:**
```vue
This is dynamic content
doesn't have data-v-7ba5bd90 */
```
## Alternative: Global Styles with Unique Prefix
```vue
```
## Reference
- [Vue.js Scoped CSS](https://vuejs.org/api/sfc-css-features.html#scoped-css)
- [GitHub Issue: Scoped CSS not applied for programmatically added elements](https://github.com/vuejs/vue/issues/7649)