# Source: https://github.com/tailwindlabs/tailwindcss.com/blob/main/src/docs/justify-content.mdx

import { CodeExampleStack } from "@/components/code-example";
import { ApiTable } from "@/components/api-table.tsx";
import { Example } from "@/components/example.tsx";
import { Figure } from "@/components/figure.tsx";
import { ResponsiveDesign } from "@/components/content.tsx";
import { Stripes } from "@/components/stripes.tsx";

export const title = "justify-content";
export const description =
  "Utilities for controlling how flex and grid items are positioned along a container's main axis.";

<ApiTable
  rows={[
    ["justify-start", "justify-content: flex-start;"],
    ["justify-end", "justify-content: flex-end;"],
    ["justify-end-safe", "justify-content: safe flex-end;"],
    ["justify-center", "justify-content: center;"],
    ["justify-center-safe", "justify-content: safe center;"],
    ["justify-between", "justify-content: space-between;"],
    ["justify-around", "justify-content: space-around;"],
    ["justify-evenly", "justify-content: space-evenly;"],
    ["justify-stretch", "justify-content: stretch;"],
    ["justify-baseline", "justify-content: baseline;"],
    ["justify-normal", "justify-content: normal;"],
  ]}
/>

## Examples

### Start

Use the `justify-start` utility to justify items against the start of the container's main axis:

<Figure>

<Example>
  {
    <div className="grid grid-cols-1">
      <Stripes border className="col-start-1 row-start-1 rounded-lg" />
      <div className="col-start-1 row-start-1 flex justify-start space-x-4 rounded-lg font-mono text-sm leading-6 font-bold text-white">
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-fuchsia-500">01</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-fuchsia-500">02</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-fuchsia-500">03</div>
      </div>
    </div>
  }
</Example>

```html
<!-- [!code classes:justify-start] -->
<div class="flex justify-start ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
</div>
```

</Figure>

### Center

Use the `justify-center` or `justify-center-safe` utilities to justify items along the center of the container's main axis:

<Figure hint="Resize the container to see the alignment behavior">

<Example resizable>
  {
    <div className="grid grid-cols-1 gap-8">
      <div>
        <p className="text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400">justify-center</p>
        <div className="mt-4 grid grid-cols-1">
          <Stripes border className="col-start-1 row-start-1 rounded-lg" />
          <div className="col-start-1 row-start-1 flex justify-center space-x-4 overflow-hidden rounded-lg font-mono text-sm leading-6 font-bold text-white">
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-blue-500">01</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-blue-500">02</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-blue-500">03</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-blue-500">04</div>
          </div>
        </div>
      </div>
      <div>
        <p className="text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400">
          justify-center-safe
        </p>
        <div className="mt-4 grid grid-cols-1">
          <Stripes border className="col-start-1 row-start-1 rounded-lg" />
          <div className="col-start-1 row-start-1 flex justify-center-safe space-x-4 overflow-hidden rounded-lg font-mono text-sm leading-6 font-bold text-white">
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-indigo-500">01</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-indigo-500">02</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-indigo-500">03</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-indigo-500">04</div>
          </div>
        </div>
      </div>
    </div>
  }
</Example>

<CodeExampleStack>

```html
<!-- [!code filename:justify-center] -->
<!-- [!code classes:justify-center] -->
<div class="flex justify-center ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
  <div>04</div>
</div>
```

```html
<!-- [!code filename:justify-center-safe] -->
<!-- [!code classes:justify-center-safe] -->
<div class="flex justify-center-safe ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
  <div>04</div>
</div>
```

</CodeExampleStack>

</Figure>

When there is not enough space available, the `justify-center-safe` utility will align items to the start of the container instead of the center.

### End

Use the `justify-end` or `justify-end-safe` utilities to justify items against the end of the container's main axis:

<Figure hint="Resize the container to see the alignment behavior">

<Example resizable>
  {
    <div className="grid grid-cols-1 gap-8">
      <div>
        <p className="text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400">justify-end</p>
        <div className="mt-4 grid grid-cols-1">
          <Stripes border className="col-start-1 row-start-1 rounded-lg" />
          <div className="col-start-1 row-start-1 flex justify-end space-x-4 overflow-hidden rounded-lg font-mono text-sm leading-6 font-bold text-white">
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-pink-500">01</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-pink-500">02</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-pink-500">03</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-pink-500">04</div>
          </div>
        </div>
      </div>
      <div>
        <p className="text-center font-mono text-xs font-medium text-gray-500 dark:text-gray-400">justify-end-safe</p>
        <div className="mt-4 grid grid-cols-1">
          <Stripes border className="col-start-1 row-start-1 rounded-lg" />
          <div className="col-start-1 row-start-1 flex justify-end-safe space-x-4 overflow-hidden rounded-lg font-mono text-sm leading-6 font-bold text-white">
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-fuchsia-500">01</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-fuchsia-500">02</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-fuchsia-500">03</div>
            <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-fuchsia-500">04</div>
          </div>
        </div>
      </div>
    </div>
  }
</Example>

<CodeExampleStack>

```html
<!-- [!code filename:justify-end] -->
<!-- [!code classes:justify-end] -->
<div class="flex justify-end ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
  <div>03</div>
</div>
```

```html
<!-- [!code filename:justify-end-safe] -->
<!-- [!code classes:justify-end-safe] -->
<div class="flex justify-end-safe ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
  <div>03</div>
</div>
```

</CodeExampleStack>

</Figure>

When there is not enough space available, the `justify-end-safe` utility will align items to the start of the container instead of the end.

### Space between

Use the `justify-between` utility to justify items along the container's main axis such that there is an equal amount of space between each item:

<Figure>

<Example>
  {
    <div className="grid grid-cols-1">
      <Stripes border className="col-start-1 row-start-1 rounded-lg" />
      <div className="col-start-1 row-start-1 flex justify-between space-x-4 rounded-lg font-mono text-sm leading-6 font-bold text-white">
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-cyan-500">01</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-cyan-500">02</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-cyan-500">03</div>
      </div>
    </div>
  }
</Example>

```html
<!-- [!code classes:justify-between] -->
<div class="flex justify-between ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
</div>
```

</Figure>

### Space around

Use the `justify-around` utility to justify items along the container's main axis such that there is an equal amount of space on each side of each item:

<Figure>

<Example>
  {
    <div className="grid grid-cols-1">
      <Stripes border className="col-start-1 row-start-1 rounded-lg" />
      <div className="col-start-1 row-start-1 flex justify-around space-x-4 rounded-lg font-mono text-sm leading-6 font-bold text-white">
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-purple-500">01</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-purple-500">02</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-purple-500">03</div>
      </div>
    </div>
  }
</Example>

```html
<!-- [!code classes:justify-around] -->
<div class="flex justify-around ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
</div>
```

</Figure>

### Space evenly

Use the `justify-evenly` utility to justify items along the container's main axis such that there is an equal amount of space around each item, but also accounting for the doubling of space you would normally see between each item when using `justify-around`:

<Figure>

<Example>
  {
    <div className="grid grid-cols-1">
      <Stripes border className="col-start-1 row-start-1 rounded-lg" />
      <div className="col-start-1 row-start-1 flex justify-evenly space-x-4 rounded-lg font-mono text-sm leading-6 font-bold text-white">
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-indigo-500">01</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-indigo-500">02</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-indigo-500">03</div>
      </div>
    </div>
  }
</Example>

```html
<!-- [!code classes:justify-evenly] -->
<div class="flex justify-evenly ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
</div>
```

</Figure>

### Stretch

Use the `justify-stretch` utility to allow auto-sized content items to fill the available space along the container's main axis:

<Figure>

<Example>
  {
    <div className="grid grid-cols-1">
      <Stripes border className="col-start-1 row-start-1 rounded-lg" />
      <div className="col-start-1 row-start-1 grid grid-cols-[4rem_auto_4rem] justify-stretch gap-4 rounded-lg font-mono text-sm leading-6 font-bold text-white">
        <div className="flex h-14 items-center justify-center rounded-lg bg-fuchsia-500">01</div>
        <div className="flex h-14 items-center justify-center rounded-lg bg-fuchsia-500">02</div>
        <div className="flex h-14 items-center justify-center rounded-lg bg-fuchsia-500">03</div>
      </div>
    </div>
  }
</Example>

```html
<!-- [!code classes:justify-stretch] -->
<div class="grid grid-cols-[4rem_auto_4rem] justify-stretch ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
</div>
```

</Figure>

### Normal

Use the `justify-normal` utility to pack content items in their default position as if no `justify-content` value was set:

<Figure>

<Example>
  {
    <div className="grid grid-cols-1">
      <Stripes border className="col-start-1 row-start-1 rounded-lg" />
      <div className="col-start-1 row-start-1 flex justify-normal space-x-4 rounded-lg font-mono text-sm leading-6 font-bold text-white">
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-blue-500">01</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-blue-500">02</div>
        <div className="flex size-14 shrink-0 items-center justify-center rounded-lg bg-blue-500">03</div>
      </div>
    </div>
  }
</Example>

```html
<!-- [!code classes:justify-normal] -->
<div class="flex justify-normal ...">
  <div>01</div>
  <div>02</div>
  <div>03</div>
</div>
```

</Figure>

### Responsive design

<ResponsiveDesign property="justify-content" defaultClass="flex justify-start" featuredClass="justify-between" />