W3docs

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 imagesborder-radius, border-image
  • Shadowsbox-shadow, text-shadow
  • Gradients and multiple backgroundsbackground-size, background-clip
  • Flexible and grid-based layouts — Flexbox (flex, align-items, …), Grid (grid, grid-template-columns, …)
  • 2D and 3D transformstransform, perspective
  • Smooth state changestransition
  • Keyframe animationsanimation, @keyframes
  • Multi-column textcolumn-count, column-gap
  • Visual filtersfilter (blur, brightness, contrast, …)
  • Custom transparencyopacity

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;
}
PropertyDescription
animationShorthand that sets all animation sub-properties in one declaration.
animation-delaySpecifies when an animation starts (positive = delay; negative = mid-cycle start).
animation-directionControls play direction: normal, reverse, alternate, or alternate-reverse.
animation-durationDefines how long one animation cycle takes (e.g., 0.4s, 500ms).
animation-fill-modeSets the element's style before the animation starts and/or after it ends (forwards, backwards, both).
animation-iteration-countHow many times the animation plays — a number or infinite.
animation-nameNames the @keyframes rule to apply.
animation-play-statePauses (paused) or resumes (running) an animation — useful for toggle buttons.
animation-timing-functionEasing 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 */
}
PropertyDescription
background-clipControls how far the background extends — border-box, padding-box, or content-box.
background-originSets the origin for background-positionborder-box, padding-box, or content-box.
background-sizeSets 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;
}
PropertyDescription
border-bottom-left-radiusRounds the bottom-left corner. Accepts one radius (circle) or two (ellipse).
border-bottom-right-radiusRounds the bottom-right corner.
border-imageUses an image as the border, sliced into nine regions.
border-image-outsetHow far the border image extends beyond the border box.
border-image-repeatWhether the border image edge tiles are stretched, repeated, or rounded.
border-image-sliceDivides the source image into nine slices (four corners, four edges, center).
border-image-sourceThe image URL or gradient used as the border.
border-image-widthWidth of the border image slices (can differ from the CSS border-width).
border-radiusShorthand for all four corner radii.
border-top-left-radiusRounds the top-left corner.
border-top-right-radiusRounds the top-right corner.

Color and Transparency

PropertyDescription
opacitySets 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);
}
PropertyDescription
filterApplies 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.

PropertyDescription
align-contentAligns 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-itemsDefault cross-axis alignment for all flex items in a container.
align-selfOverrides align-items for a single flex item.
flexShorthand for flex-grow, flex-shrink, and flex-basis.
flex-basisThe initial size of a flex item before free space is distributed.
flex-directionMain axis direction: row, row-reverse, column, or column-reverse.
flex-flowShorthand for flex-direction and flex-wrap.
flex-growHow much a flex item grows relative to siblings when there is extra space.
flex-shrinkHow much a flex item shrinks relative to siblings when space is tight.
flex-wrapWhether flex items wrap onto multiple lines (nowrap, wrap, wrap-reverse).
justify-contentAligns items along the main axis (flex-start, flex-end, center, space-between, space-around, space-evenly).
justify-itemsDefault inline-axis alignment for all grid items (also used in grid).
orderChanges the visual order of a flex or grid item without altering the DOM order.

Font Properties

PropertyDescription
font-size-adjustPreserves apparent text size when the first-choice font is unavailable, by adjusting the fallback font's size to match the x-height ratio.
font-stretchSelects 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;
}
PropertyDescription
gridShorthand for all grid container properties.
grid-areaAssigns a grid item to a named area or specifies its row/column position as a shorthand.
grid-auto-columnsSets the column size for implicitly created tracks (when items overflow the explicit grid).
grid-auto-flowControls how auto-placed items fill the grid (row, column, dense).
grid-auto-rowsSets the row size for implicitly created tracks.
grid-columnShorthand for grid-column-start and grid-column-end.
grid-column-endWhere an item ends along the column axis (line number, span, or name).
grid-column-gapGap between columns (superseded by column-gap in modern CSS).
grid-column-startWhere an item starts along the column axis.
grid-gapShorthand for row-gap and column-gap (older name; prefer gap).
grid-rowShorthand for grid-row-start and grid-row-end.
grid-row-endWhere an item ends along the row axis.
grid-row-gapGap between rows (superseded by row-gap in modern CSS).
grid-row-startWhere an item starts along the row axis.
grid-templateShorthand for grid-template-rows, grid-template-columns, and grid-template-areas.
grid-template-areasDefines named template areas using a string-based ASCII art syntax.
grid-template-columnsDefines the number and size of explicit columns (lengths, percentages, fr units, repeat(), minmax()).
grid-template-rowsDefines 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 */
}
PropertyDescription
column-countNumber of columns the content is divided into.
column-fillWhether columns are balanced (balance) or filled sequentially (auto).
column-gapSpace between columns (also used in Flexbox and Grid).
column-ruleShorthand for the divider line between columns (style, width, color).
column-rule-colorColor of the rule between columns.
column-rule-styleLine style of the rule (solid, dashed, dotted, etc.).
column-rule-widthThickness of the rule between columns.
column-spanWhether an element spans one column (none) or all columns (all).
column-widthIdeal column width; the browser creates as many columns as fit.
columnsShorthand for column-count and column-width.

Outline Properties

PropertyDescription
outline-offsetPushes 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);
}
PropertyDescription
tab-sizeWidth of a tab character in <pre> and code blocks (number of spaces or a length).
text-align-lastAlignment of the last (or only) line in a block of justified text.
text-decoration-colorColor of the underline, overline, or strikethrough decoration.
text-decoration-lineWhich decoration lines are drawn: underline, overline, line-through, or none.
text-decoration-styleStyle of the decoration line: solid, double, dotted, dashed, or wavy.
text-justifyJustification method used when text-align: justify is active (auto, inter-word, inter-character).
text-overflowHow overflowing inline text is signaled: clip (cut off) or ellipsis (show ). Requires overflow: hidden and white-space: nowrap.
text-shadowAdds one or more shadows to text. Syntax: offset-x offset-y blur-radius color.
word-breakWhere line breaks occur within words: normal, break-all, or keep-all.
word-wrapWhether 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;
}
PropertyDescription
backface-visibilityWhether the back face of a 3D-transformed element is visible when facing away (visible or hidden). Essential for card-flip effects.
perspectiveDistance from the viewer to the z=0 plane; lower values = more dramatic 3D effect. Applied to the parent of the transformed element.
perspective-originThe x/y position of the vanishing point for the perspective transform.
transformApplies 2D or 3D transformation functions: translate(), rotate(), scale(), skew(), matrix(), and their 3D variants.
transform-originThe point around which a transform is applied (default: 50% 50% — element center).
transform-styleWhether 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.

PropertyDescription
transitionShorthand for transition-property, transition-duration, transition-timing-function, and transition-delay.
transition-delayHow long to wait before the transition starts.
transition-durationHow long the transition takes from start to end.
transition-propertyWhich CSS property (or all) the transition applies to.
transition-timing-functionThe speed curve of the transition (ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier(…), steps(…)).

Visual Formatting Properties

PropertyDescription
box-shadowAdds one or more shadows around an element's box. Syntax: offset-x offset-y blur spread color. Use inset for an inner shadow.
box-sizingDetermines 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-xControls horizontal overflow: visible, hidden, clip, scroll, or auto.
overflow-yControls vertical overflow: visible, hidden, clip, scroll, or auto.
resizeMakes an element user-resizable: both, horizontal, vertical, or none. Requires overflow to be other than visible.

Once you know which property you need, these chapters cover the most-used CSS3 features in depth:

Practice

Practice
Which of the following are valid CSS3 properties?
Which of the following are valid CSS3 properties?
Was this page helpful?