CSSツール

無料 CSS Carousel Generator

Generate native CSS carousel markup with scroll-snap, scroll buttons, scroll markers, and accessible list structure. No JavaScript required.

ツールを読み込み中...

CSS Carousel Generatorとは

A CSS carousel is a horizontally or vertically scrollable container where items snap into position as the user scrolls. Modern CSS (Chrome 135+) adds built-in scroll buttons and markers that work without JavaScript, plus scroll-state queries for styling the currently snapped item differently from others. This is a native alternative to JavaScript carousel libraries.

クイックアンサー

Build a native CSS carousel with scroll-snap, buttons, and markers — no JavaScript needed. Use scroll-snap-type for snap behavior, ::scroll-button() for arrows, ::scroll-marker() for dots, and scroll-state(snapped: true) queries for active item styling. Chrome 135+ for full features; degrades gracefully elsewhere.

制限事項

  • Scroll buttons (::scroll-button()) and markers (::scroll-marker()) require Chrome 135+. Firefox and Safari do not yet support them. The carousel falls back to a standard scrollable container.
  • CSS carousels cannot auto-advance, loop infinitely, or handle dynamic item counts without JavaScript. For advanced carousel features, use a small JS enhancement on top of the CSS foundation.
  • Scroll-state queries (container-type: scroll-state) are part of the same Chrome 135+ release. Cross-browser support for styling active items requires a JavaScript fallback.

使い方

  1. Choose the layout direction (horizontal or vertical) and item width.
  2. Set snap behavior and alignment — mandatory snaps to every item, proximity snaps when near.
  3. Optionally include scroll buttons and marker dots for navigation.
  4. Choose accessible list markup (ul/li) and the number of items for demo output.
  5. Copy the CSS and HTML into your page. Add real content to each carousel item.

主な用途

  • Build a product image carousel without adding a JavaScript library.
  • Create a card rail for blog posts or app store-style listings.
  • Make an accessible image gallery with keyboard-navigable scroll and snap points.

用途

使用例

Product image gallery

An e-commerce product page needs a horizontal image carousel. Use the tool with mandatory snap, start alignment, and scroll markers. Visitors swipe or scroll through product images with indicator dots showing position.

Blog post card rail

A blog homepage shows recent posts in a horizontally scrollable card rail. Use proximity snap with scroll buttons so visitors can click arrows or swipe to browse recent articles.

よくあるミス

  • Using mandatory snap on very long carousels — users cannot scroll past multiple items quickly, which feels sluggish.
  • Forgetting to make the scroll container keyboard-focusable — keyboard users need tabindex="0" to scroll with arrow keys.
  • Using fixed pixel widths without considering mobile — 300px items on a 320px screen leave barely any peek of the next item.

検証

  1. Test the carousel with keyboard navigation: focus the container and use arrow keys to scroll through items.
  2. Check that snap points work correctly on touch devices — each swipe should snap to the nearest item.

FAQ

CSS Carousel GeneratorのFAQ

Which browsers support CSS scroll buttons and markers?

Scroll buttons (::scroll-button()) and markers (::scroll-marker()) require Chrome 135+. Scroll-snap itself is supported in all modern browsers (Chrome 69+, Firefox 99+, Safari 11+). The carousel degrades gracefully: browsers without button/marker support show a standard scrollable container with snap behavior.

Do I need JavaScript for a CSS carousel?

For basic scroll and snap behavior, no JavaScript is needed. Scroll buttons and markers work declaratively in Chrome 135+. For features like auto-advance, infinite loop, or dynamic item counts, a small amount of JavaScript is still required. This tool generates the no-JS baseline.

How do I style the active carousel item differently?

Use the scroll-state() container query: @container scroll-state(snapped: true) { .item { opacity: 1; } }. This requires container-type: scroll-state on the scroll container. For browsers without scroll-state support, use a JavaScript scroll event fallback or IntersectionObserver.

関連ツール

その他のcssツール

こちらもお試しください

こちらもお試しください