All checks were successful
Deploy / deploy (push) Successful in 7m30s
- Added new skills: find-skills, frontend-ui-engineering, and vercel-react-best-practices to skills-lock.json. - Updated use-pixel-heat.ts to import both animate and AnimationPlaybackControls from motion for improved animation handling.
39 lines
815 B
Markdown
39 lines
815 B
Markdown
---
|
||
title: CSS content-visibility for Long Lists
|
||
impact: HIGH
|
||
impactDescription: faster initial render
|
||
tags: rendering, css, content-visibility, long-lists
|
||
---
|
||
|
||
## CSS content-visibility for Long Lists
|
||
|
||
Apply `content-visibility: auto` to defer off-screen rendering.
|
||
|
||
**CSS:**
|
||
|
||
```css
|
||
.message-item {
|
||
content-visibility: auto;
|
||
contain-intrinsic-size: 0 80px;
|
||
}
|
||
```
|
||
|
||
**Example:**
|
||
|
||
```tsx
|
||
function MessageList({ messages }: { messages: Message[] }) {
|
||
return (
|
||
<div className="overflow-y-auto h-screen">
|
||
{messages.map(msg => (
|
||
<div key={msg.id} className="message-item">
|
||
<Avatar user={msg.author} />
|
||
<div>{msg.content}</div>
|
||
</div>
|
||
))}
|
||
</div>
|
||
)
|
||
}
|
||
```
|
||
|
||
For 1000 messages, browser skips layout/paint for ~990 off-screen items (10× faster initial render).
|