Utilizing Scoped Styles to Prevent CSS Conflicts in Vue Components

Techniques for applying scoped styles in Vue components to avoid style conflicts and maintain modularity.

0 likes
23 views

Rule Content

{
  "title": "Utilizing Scoped Styles to Prevent CSS Conflicts in Vue Components",
  "description": "Techniques for applying scoped styles in Vue components to avoid style conflicts and maintain modularity.",
  "category": "Vue Cursor Rules",
  "rules": [
    {
      "id": "vue-scoped-styles",
      "level": "error",
      "message": "Ensure all component-specific styles are scoped to prevent unintended global application.",
      "pattern": "<style(?!.*scoped).*?>",
      "fix": {
        "description": "Add the 'scoped' attribute to the style tag.",
        "pattern": "<style>",
        "replacement": "<style scoped>"
      }
    },
    {
      "id": "vue-scoped-class-selectors",
      "level": "warning",
      "message": "Prefer class selectors over element selectors in scoped styles to improve performance.",
      "pattern": "<style scoped>.*?\\b(?:div|span|p|button|input|textarea|select|a|ul|ol|li|table|tr|td|th|h[1-6])\\b.*?</style>",
      "fix": {
        "description": "Replace element selectors with class selectors in scoped styles.",
        "pattern": "\\b(div|span|p|button|input|textarea|select|a|ul|ol|li|table|tr|td|th|h[1-6])\\b",
        "replacement": ".component-$1"
      }
    },
    {
      "id": "vue-scoped-deep-selector",
      "level": "info",
      "message": "Use the '::v-deep' pseudo-class to style child components within scoped styles.",
      "pattern": "::v-deep",
      "fix": {
        "description": "Ensure '::v-deep' is used appropriately to target child components.",
        "pattern": "::v-deep",
        "replacement": "::v-deep "
      }
    },
    {
      "id": "vue-scoped-global-selector",
      "level": "info",
      "message": "Use the ':global' pseudo-class to apply global styles within scoped styles.",
      "pattern": ":global",
      "fix": {
        "description": "Ensure ':global' is used appropriately to apply global styles.",
        "pattern": ":global",
        "replacement": ":global "
      }
    },
    {
      "id": "vue-scoped-slotted-selector",
      "level": "info",
      "message": "Use the ':slotted' pseudo-class to style slot content within scoped styles.",
      "pattern": ":slotted",
      "fix": {
        "description": "Ensure ':slotted' is used appropriately to style slot content.",
        "pattern": ":slotted",
        "replacement": ":slotted "
      }
    }
  ]
}

We use cookies to analyze site usage and improve your experience. Learn more

Sign in to like this cursorrule