CSS3 Properties
A grouped reference of every major CSS3 property, organized by module (Animation, Flexbox, Grid, Transforms, and more) with links to full chapters.
CSS3 is the latest evolution of the Cascading Style Sheets language. Rather than being one monolithic release, CSS3 is split into independent modules — Animations, Flexbox, Grid Layout, Backgrounds and Borders, Transforms, Filters, and more — that browsers can implement and ship separately. Each module added new properties on top of the original CSS2 set, giving you rounded corners, gradients, shadows, animations, flexible and grid-based layouts, and visual filters without images or JavaScript.
This page is a quick-reference index of the properties introduced or significantly extended in CSS3, organized by the module they belong to. Each row links to a full chapter with syntax, values, and live examples.
If you are new to the language, start with the CSS Introduction and CSS Syntax chapters before diving into individual properties.
How to Use This Reference
- Find a property by group. The headings below mirror the CSS3 modules, so if you need a layout property look under Flexible Box Layout or Grid Layout; for motion look under Animation or Transitions; for visual effects look under Filter Effects or Transform Properties.
- Click through for details. Every property links to its own chapter with the full value list, defaults, and runnable demos.
- Mind browser support. CSS3 modules reached stable, unprefixed support at different times. Most properties below are safe in every modern browser, but always verify support for newer additions (for example, certain
column-*properties) before relying on them in production.
A Note on Vendor Prefixes
While CSS3 modules were still experimental, browsers shipped properties behind vendor prefixes such as -webkit-, -moz-, -ms-, and -o-. You may still encounter them in older codebases:
/* Older code — prefixes were needed during the experimental phase */
.box {
-webkit-transform: rotate(15deg);
-moz-transform: rotate(15deg);
transform: rotate(15deg); /* Always list the unprefixed property last */
}For the properties listed below you almost never need prefixes today — write the standard, unprefixed name. Use prefixes only when you must support a legacy browser, and always list the standard property last so it overrides.
CSS3 vs. CSS2 — What Changed?
CSS2 covered the foundational box model, colors, fonts, and positioning. CSS3 built on that foundation with the following capabilities that were either absent or very limited before:
- Rounded corners and border images —
border-radius,border-image - Shadows —
box-shadow,text-shadow - Gradients and multiple backgrounds —
background-size,background-clip - Flexible and grid-based layouts — Flexbox (
flex,align-items, …), Grid (grid,grid-template-columns, …) - 2D and 3D transforms —
transform,perspective - Smooth state changes —
transition - Keyframe animations —
animation,@keyframes - Multi-column text —
column-count,column-gap - Visual filters —
filter(blur, brightness, contrast, …) - Custom transparency —
opacity
List of CSS3 Properties
Animation Properties
Keyframe animations let you describe how an element transitions through a series of style snapshots. The @keyframes rule defines the snapshots; the animation-* properties attach and control them on an element.
/* Minimal animation example */
@keyframes slide-in {
from { transform: translateX(-100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
.banner {
animation: slide-in 0.4s ease-out both;
}| Property | Description |
|---|---|
| animation | Shorthand that sets all animation sub-properties in one declaration. |
| animation-delay | Specifies when an animation starts (positive = delay; negative = mid-cycle start). |
| animation-direction | Controls play direction: normal, reverse, alternate, or alternate-reverse. |
| animation-duration | Defines how long one animation cycle takes (e.g., 0.4s, 500ms). |
| animation-fill-mode | Sets the element's style before the animation starts and/or after it ends (forwards, backwards, both). |
| animation-iteration-count | How many times the animation plays — a number or infinite. |
| animation-name | Names the @keyframes rule to apply. |
| animation-play-state | Pauses (paused) or resumes (running) an animation — useful for toggle buttons. |
| animation-timing-function | Easing curve for each cycle: ease, linear, ease-in-out, cubic-bezier(…), steps(…). |
| @keyframes (at-rule) | Defines the intermediate style snapshots (keyframes) that an animation steps through. |
Background Properties
CSS3 extended backgrounds to support sizing, clipping regions, and multiple layered images on a single element.
/* Responsive hero with background-size */
.hero {
background-image: url('/img/hero.jpg');
background-size: cover; /* fills the box; crop as needed */
background-position: center;
background-clip: border-box; /* default; image reaches border edge */
}| Property | Description |
|---|---|
| background-clip | Controls how far the background extends — border-box, padding-box, or content-box. |
| background-origin | Sets the origin for background-position — border-box, padding-box, or content-box. |
| background-size | Sets the background image size: a length, auto, cover (fill, may crop), or contain (fit entirely). |
Border Properties
CSS3 added rounded corners and image-based borders — features that previously required image hacks.
/* Rounded button */
.btn {
border-radius: 6px;
border: 2px solid steelblue;
}
/* Pill shape */
.badge {
border-radius: 999px;
}| Property | Description |
|---|---|
| border-bottom-left-radius | Rounds the bottom-left corner. Accepts one radius (circle) or two (ellipse). |
| border-bottom-right-radius | Rounds the bottom-right corner. |
| border-image | Uses an image as the border, sliced into nine regions. |
| border-image-outset | How far the border image extends beyond the border box. |
| border-image-repeat | Whether the border image edge tiles are stretched, repeated, or rounded. |
| border-image-slice | Divides the source image into nine slices (four corners, four edges, center). |
| border-image-source | The image URL or gradient used as the border. |
| border-image-width | Width of the border image slices (can differ from the CSS border-width). |
| border-radius | Shorthand for all four corner radii. |
| border-top-left-radius | Rounds the top-left corner. |
| border-top-right-radius | Rounds the top-right corner. |
Color and Transparency
| Property | Description |
|---|---|
| opacity | Sets the transparency of an entire element (and its children) from 0 (invisible) to 1 (fully opaque). For per-channel transparency use rgba() or hsla() in the color / background-color values instead. |
Filter Effects
The filter property applies graphical effects (blur, brightness, contrast, drop shadow, etc.) directly in CSS — no image editor required.
.card:hover img {
filter: brightness(1.1) saturate(1.2);
transition: filter 0.2s ease;
}
.modal-backdrop {
filter: blur(4px);
}| Property | Description |
|---|---|
| filter | Applies one or more filter functions: blur(), brightness(), contrast(), drop-shadow(), grayscale(), hue-rotate(), invert(), opacity(), saturate(), sepia(), and url() (SVG filter). |
Flexible Box Layout
Flexbox is a one-dimensional layout model — it distributes items along a single axis (row or column) and handles alignment, spacing, and wrapping automatically.
/* Classic centered card */
.card-grid {
display: flex;
flex-wrap: wrap;
gap: 1rem;
justify-content: center;
align-items: stretch;
}
.card {
flex: 1 1 300px; /* grow | shrink | basis */
}For a full walk-through see The Ultimate Guide to Flexbox.
| Property | Description |
|---|---|
| align-content | Aligns a flex container's lines along the cross-axis when there is extra space (flex-start, flex-end, center, space-between, space-around, stretch). |
| align-items | Default cross-axis alignment for all flex items in a container. |
| align-self | Overrides align-items for a single flex item. |
| flex | Shorthand for flex-grow, flex-shrink, and flex-basis. |
| flex-basis | The initial size of a flex item before free space is distributed. |
| flex-direction | Main axis direction: row, row-reverse, column, or column-reverse. |
| flex-flow | Shorthand for flex-direction and flex-wrap. |
| flex-grow | How much a flex item grows relative to siblings when there is extra space. |
| flex-shrink | How much a flex item shrinks relative to siblings when space is tight. |
| flex-wrap | Whether flex items wrap onto multiple lines (nowrap, wrap, wrap-reverse). |
| justify-content | Aligns items along the main axis (flex-start, flex-end, center, space-between, space-around, space-evenly). |
| justify-items | Default inline-axis alignment for all grid items (also used in grid). |
| order | Changes the visual order of a flex or grid item without altering the DOM order. |
Font Properties
| Property | Description |
|---|---|
| font-size-adjust | Preserves apparent text size when the first-choice font is unavailable, by adjusting the fallback font's size to match the x-height ratio. |
| font-stretch | Selects a condensed or expanded face of a font family (e.g., condensed, expanded, ultra-condensed). |
Grid Layout
CSS Grid is a two-dimensional layout system — it places items into rows and columns simultaneously, making it ideal for page-level layouts and complex component grids.
/* Three-column responsive grid */
.layout {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 1.5rem;
}
/* Named template areas */
.page {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 200px 1fr;
grid-template-rows: auto 1fr auto;
}| Property | Description |
|---|---|
| grid | Shorthand for all grid container properties. |
| grid-area | Assigns a grid item to a named area or specifies its row/column position as a shorthand. |
| grid-auto-columns | Sets the column size for implicitly created tracks (when items overflow the explicit grid). |
| grid-auto-flow | Controls how auto-placed items fill the grid (row, column, dense). |
| grid-auto-rows | Sets the row size for implicitly created tracks. |
| grid-column | Shorthand for grid-column-start and grid-column-end. |
| grid-column-end | Where an item ends along the column axis (line number, span, or name). |
| grid-column-gap | Gap between columns (superseded by column-gap in modern CSS). |
| grid-column-start | Where an item starts along the column axis. |
| grid-gap | Shorthand for row-gap and column-gap (older name; prefer gap). |
| grid-row | Shorthand for grid-row-start and grid-row-end. |
| grid-row-end | Where an item ends along the row axis. |
| grid-row-gap | Gap between rows (superseded by row-gap in modern CSS). |
| grid-row-start | Where an item starts along the row axis. |
| grid-template | Shorthand for grid-template-rows, grid-template-columns, and grid-template-areas. |
| grid-template-areas | Defines named template areas using a string-based ASCII art syntax. |
| grid-template-columns | Defines the number and size of explicit columns (lengths, percentages, fr units, repeat(), minmax()). |
| grid-template-rows | Defines the number and size of explicit rows. |
Multi-Column Layout Properties
Multi-column layout flows content automatically across a set number or width of columns — similar to a newspaper layout.
/* Two-column article body */
.article-body {
columns: 2 400px; /* shorthand: column-count column-width */
column-gap: 2rem;
column-rule: 1px solid #ddd;
}
h2 {
column-span: all; /* heading breaks out of columns */
}| Property | Description |
|---|---|
| column-count | Number of columns the content is divided into. |
| column-fill | Whether columns are balanced (balance) or filled sequentially (auto). |
| column-gap | Space between columns (also used in Flexbox and Grid). |
| column-rule | Shorthand for the divider line between columns (style, width, color). |
| column-rule-color | Color of the rule between columns. |
| column-rule-style | Line style of the rule (solid, dashed, dotted, etc.). |
| column-rule-width | Thickness of the rule between columns. |
| column-span | Whether an element spans one column (none) or all columns (all). |
| column-width | Ideal column width; the browser creates as many columns as fit. |
| columns | Shorthand for column-count and column-width. |
Outline Properties
| Property | Description |
|---|---|
| outline-offset | Pushes the outline away from the element's border edge (positive = outward; negative = inward). Unlike margins, it does not affect layout. |
Text Properties
CSS3 added control over text overflow, wrapping, shadows, and fine-tuned decoration styling.
/* Truncate long titles with ellipsis */
.card-title {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Subtle heading shadow */
h1 {
text-shadow: 1px 2px 4px rgba(0, 0, 0, 0.25);
}| Property | Description |
|---|---|
| tab-size | Width of a tab character in <pre> and code blocks (number of spaces or a length). |
| text-align-last | Alignment of the last (or only) line in a block of justified text. |
| text-decoration-color | Color of the underline, overline, or strikethrough decoration. |
| text-decoration-line | Which decoration lines are drawn: underline, overline, line-through, or none. |
| text-decoration-style | Style of the decoration line: solid, double, dotted, dashed, or wavy. |
| text-justify | Justification method used when text-align: justify is active (auto, inter-word, inter-character). |
| text-overflow | How overflowing inline text is signaled: clip (cut off) or ellipsis (show …). Requires overflow: hidden and white-space: nowrap. |
| text-shadow | Adds one or more shadows to text. Syntax: offset-x offset-y blur-radius color. |
| word-break | Where line breaks occur within words: normal, break-all, or keep-all. |
| word-wrap | Whether the browser may break an unbreakable word to prevent overflow (normal or break-word). Also standardized as overflow-wrap. |
Transform Properties
Transforms move, rotate, scale, or skew elements in 2D or 3D space without affecting document flow.
/* 2D card flip on hover */
.card {
perspective: 600px;
transform-style: preserve-3d;
transition: transform 0.5s ease;
}
.card:hover {
transform: rotateY(180deg);
}
.card-back {
backface-visibility: hidden;
}| Property | Description |
|---|---|
| backface-visibility | Whether the back face of a 3D-transformed element is visible when facing away (visible or hidden). Essential for card-flip effects. |
| perspective | Distance from the viewer to the z=0 plane; lower values = more dramatic 3D effect. Applied to the parent of the transformed element. |
| perspective-origin | The x/y position of the vanishing point for the perspective transform. |
| transform | Applies 2D or 3D transformation functions: translate(), rotate(), scale(), skew(), matrix(), and their 3D variants. |
| transform-origin | The point around which a transform is applied (default: 50% 50% — element center). |
| transform-style | Whether children are rendered in 3D space (preserve-3d) or flattened into the element's plane (flat). |
Transition Properties
Transitions animate property changes from one value to another over a specified duration when a CSS property changes (e.g., on :hover).
/* Smooth color + shadow on hover */
.btn {
background-color: steelblue;
box-shadow: none;
transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.btn:hover {
background-color: dodgerblue;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}Transitions vs. animations: use transition for state-driven changes (hover, focus, active) — they are simpler to write. Use animation with @keyframes for independent, looping, or multi-step motion that runs without user interaction.
| Property | Description |
|---|---|
| transition | Shorthand for transition-property, transition-duration, transition-timing-function, and transition-delay. |
| transition-delay | How long to wait before the transition starts. |
| transition-duration | How long the transition takes from start to end. |
| transition-property | Which CSS property (or all) the transition applies to. |
| transition-timing-function | The speed curve of the transition (ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier(…), steps(…)). |
Visual Formatting Properties
| Property | Description |
|---|---|
| box-shadow | Adds one or more shadows around an element's box. Syntax: offset-x offset-y blur spread color. Use inset for an inner shadow. |
| box-sizing | Determines whether width and height include padding and border (border-box) or exclude them (content-box, the CSS2 default). Almost all modern projects set *, *::before, *::after { box-sizing: border-box; }. |
| overflow-x | Controls horizontal overflow: visible, hidden, clip, scroll, or auto. |
| overflow-y | Controls vertical overflow: visible, hidden, clip, scroll, or auto. |
| resize | Makes an element user-resizable: both, horizontal, vertical, or none. Requires overflow to be other than visible. |
Related References
Once you know which property you need, these chapters cover the most-used CSS3 features in depth:
- CSS Animation and @keyframes for keyframe-based motion.
- The Ultimate Guide to Flexbox for one-dimensional layout.
- grid and grid-template-columns for two-dimensional page layout.
- filter for blur, brightness, contrast, drop-shadow, and other graphical effects.
- transform and transition for visual effects and smooth state changes.
- border-radius and box-shadow for modern decorative styling.