Skip to content
Back to skills

N Collapse Transition

ASecurity

Collapse transition component for smooth show/hide animations. Invoke when user needs to implement expand/collapse animations in Naive UI.

  • 8 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 11, 2026
developmentreactvueapiperformance

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add jiaiyan/naive-ui-skills --skill n-collapse-transition --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of N Collapse Transition?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for N Collapse Transition
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jiaiyan-n-collapse-transition/badge)](https://www.skillsdirectory.com/skills/jiaiyan-n-collapse-transition)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "n-collapse-transition"
description: "Collapse transition component for smooth show/hide animations. Invoke when user needs to implement expand/collapse animations in Naive UI."
metadata:
  author: jiaiyan
  version: "1.0.0"
---

# Naive UI Collapse Transition Component

A collapse transition without any form of encapsulation. Provides smooth expand/collapse animations.

## When to Use

Use this component when:
- **Expand/Collapse**: Smooth show/hide animations for content
- **Accordion effects**: Animated content panels
- **Toggle visibility**: Animated visibility transitions
- **Menu items**: Collapsible menu animations

## When to Invoke

Invoke this skill when:
- User needs to implement expand/collapse animations
- User wants smooth height transitions
- User needs to animate content visibility
- User asks about collapse transitions

## Features

- **Smooth Animation**: CSS-based height transition
- **Appear Support**: Animation on first mount
- **Simple API**: Show prop for visibility control
- **No Encapsulation**: Works with any content

## API Reference

### CollapseTransition Props

| Name | Type | Default | Description |
|------|------|---------|-------------|
| appear | `boolean` | `false` | Whether to play animation on first mounted. |
| show | `boolean` | `true` | Whether to show content. |

### CollapseTransition Slots

| Name | Parameters | Description |
|------|------------|-------------|
| default | `()` | The content inside the transition. |

## Basic Usage

### Basic Collapse Transition

```vue
<template>
  <n-space vertical>
    <n-switch v-model:value="show">
      <template #checked>
        Show
      </template>
      <template #unchecked>
        Hide
      </template>
    </n-switch>
    <n-collapse-transition :show="show">
      <div style="background: rgba(128, 128, 128, 0.2); padding: 24px;">
        Content that can be collapsed
      </div>
    </n-collapse-transition>
  </n-space>
</template>

<script setup>
import { ref } from 'vue'

const show = ref(true)
</script>
```

### With Appear

```vue
<template>
  <n-collapse-transition appear :show="show">
    <div style="background: rgba(128, 128, 128, 0.2); padding: 24px;">
      This content will animate on mount
    </div>
  </n-collapse-transition>
</template>
```

## Common Patterns

### Accordion Style

```vue
<template>
  <n-space vertical>
    <n-button @click="expanded = !expanded">
      {{ expanded ? 'Collapse' : 'Expand' }}
    </n-button>
    <n-collapse-transition :show="expanded">
      <n-card>
        <p>Line 1</p>
        <p>Line 2</p>
        <p>Line 3</p>
      </n-card>
    </n-collapse-transition>
  </n-space>
</template>

<script setup>
import { ref } from 'vue'

const expanded = ref(false)
</script>
```

### Multiple Collapsible Sections

```vue
<template>
  <n-space vertical>
    <n-button @click="section1 = !section1">
      Toggle Section 1
    </n-button>
    <n-collapse-transition :show="section1">
      <div style="background: rgba(0, 128, 0, 0.1); padding: 16px;">
        Section 1 Content
      </div>
    </n-collapse-transition>
    
    <n-button @click="section2 = !section2">
      Toggle Section 2
    </n-button>
    <n-collapse-transition :show="section2">
      <div style="background: rgba(0, 128, 0, 0.2); padding: 16px;">
        Section 2 Content
      </div>
    </n-collapse-transition>
  </n-space>
</template>

<script setup>
import { ref } from 'vue'

const section1 = ref(true)
const section2 = ref(false)
</script>
```

### With v-model

```vue
<template>
  <n-space vertical>
    <n-checkbox v-model:checked="isVisible">
      Show Content
    </n-checkbox>
    <n-collapse-transition :show="isVisible">
      <div style="background: rgba(128, 128, 128, 0.2); padding: 24px;">
        Content controlled by checkbox
      </div>
    </n-collapse-transition>
  </n-space>
</template>

<script setup>
import { ref } from 'vue'

const isVisible = ref(true)
</script>
```

### Nested Collapse Transitions

```vue
<template>
  <n-space vertical>
    <n-button @click="outer = !outer">
      Toggle Outer
    </n-button>
    <n-collapse-transition :show="outer">
      <div style="background: rgba(0, 128, 0, 0.1); padding: 16px;">
        <n-button @click="inner = !inner" size="small">
          Toggle Inner
        </n-button>
        <n-collapse-transition :show="inner">
          <div style="background: rgba(0, 128, 0, 0.2); padding: 16px; margin-top: 8px;">
            Inner Content
          </div>
        </n-collapse-transition>
      </div>
    </n-collapse-transition>
  </n-space>
</template>

<script setup>
import { ref } from 'vue'

const outer = ref(true)
const inner = ref(true)
</script>
```

## Best Practices

1. **Use with v-model**: Combine with v-model for reactive visibility control

2. **Appear for initial animation**: Use `appear` prop when you want animation on first mount

3. **Avoid margin collapse**: Be aware of margin collapse inside the transition

4. **Content height**: The transition works best with content that has a defined height

5. **Combine with other components**: Works well with cards, panels, and other containers

6. **Performance**: CSS-based transition is performant for most use cases

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.