Tailwind CSS Top / Right / Bottom / Left
The top, right, bottom, and left properties determine the position of elements within a layout. These properties only work when the elements that are positioned (absolute, relative, fixed, or sticky).
Tailwind CSS provides utility classes for top, right, bottom, and left values, helping you build custom layouts with less effort and more precision.
| Class | Properties | Example |
|---|---|---|
inset-0 | inset: 0px; | <div className="inset-0"></div> |
inset-x-0 | left: 0px;
right: 0px; | <div className="inset-x-0"></div> |
inset-y-0 | top: 0px;
bottom: 0px; | <div className="inset-y-0"></div> |
start-0 | inset-inline-start: 0px; | <div className="start-0"></div> |
end-0 | inset-inline-end: 0px; | <div className="end-0"></div> |
top-0 | top: 0px; | <div className="top-0"></div> |
right-0 | right: 0px; | <div className="right-0"></div> |
bottom-0 | bottom: 0px; | <div className="bottom-0"></div> |
left-0 | left: 0px; | <div className="left-0"></div> |
inset-px | inset: 1px; | <div className="inset-px"></div> |
inset-x-px | left: 1px;
right: 1px; | <div className="inset-x-px"></div> |
inset-y-px | top: 1px;
bottom: 1px; | <div className="inset-y-px"></div> |
start-px | inset-inline-start: 1px; | <div className="start-px"></div> |
end-px | inset-inline-end: 1px; | <div className="end-px"></div> |
top-px | top: 1px; | <div className="top-px"></div> |
right-px | right: 1px; | <div className="right-px"></div> |
bottom-px | bottom: 1px; | <div className="bottom-px"></div> |
left-px | left: 1px; | <div className="left-px"></div> |
inset-0.5 | inset: 0.125rem; | <div className="inset-0.5"></div> |
inset-x-0.5 | left: 0.125rem;
right: 0.125rem; | <div className="inset-x-0.5"></div> |
inset-y-0.5 | top: 0.125rem;
bottom: 0.125rem; | <div className="inset-y-0.5"></div> |
start-0.5 | inset-inline-start: 0.125rem; | <div className="start-0.5"></div> |
end-0.5 | inset-inline-end: 0.125rem; | <div className="end-0.5"></div> |
top-0.5 | top: 0.125rem; | <div className="top-0.5"></div> |
right-0.5 | right: 0.125rem; | <div className="right-0.5"></div> |
bottom-0.5 | bottom: 0.125rem; | <div className="bottom-0.5"></div> |
left-0.5 | left: 0.125rem; | <div className="left-0.5"></div> |
inset-1 | inset: 0.25rem; | <div className="inset-1"></div> |
inset-x-1 | left: 0.25rem;
right: 0.25rem; | <div className="inset-x-1"></div> |
inset-y-1 | top: 0.25rem;
bottom: 0.25rem; | <div className="inset-y-1"></div> |
start-1 | inset-inline-start: 0.25rem; | <div className="start-1"></div> |
end-1 | inset-inline-end: 0.25rem; | <div className="end-1"></div> |
top-1 | top: 0.25rem; | <div className="top-1"></div> |
right-1 | right: 0.25rem; | <div className="right-1"></div> |
bottom-1 | bottom: 0.25rem; | <div className="bottom-1"></div> |
left-1 | left: 0.25rem; | <div className="left-1"></div> |
inset-1.5 | inset: 0.375rem; | <div className="inset-1.5"></div> |
inset-x-1.5 | left: 0.375rem;
right: 0.375rem; | <div className="inset-x-1.5"></div> |
inset-y-1.5 | top: 0.375rem;
bottom: 0.375rem; | <div className="inset-y-1.5"></div> |
start-1.5 | inset-inline-start: 0.375rem; | <div className="start-1.5"></div> |
end-1.5 | inset-inline-end: 0.375rem; | <div className="end-1.5"></div> |
top-1.5 | top: 0.375rem; | <div className="top-1.5"></div> |
right-1.5 | right: 0.375rem; | <div className="right-1.5"></div> |
bottom-1.5 | bottom: 0.375rem; | <div className="bottom-1.5"></div> |
left-1.5 | left: 0.375rem; | <div className="left-1.5"></div> |
inset-2 | inset: 0.5rem; | <div className="inset-2"></div> |
inset-x-2 | left: 0.5rem;
right: 0.5rem; | <div className="inset-x-2"></div> |
inset-y-2 | top: 0.5rem;
bottom: 0.5rem; | <div className="inset-y-2"></div> |
start-2 | inset-inline-start: 0.5rem; | <div className="start-2"></div> |
end-2 | inset-inline-end: 0.5rem; | <div className="end-2"></div> |
top-2 | top: 0.5rem; | <div className="top-2"></div> |
right-2 | right: 0.5rem; | <div className="right-2"></div> |
bottom-2 | bottom: 0.5rem; | <div className="bottom-2"></div> |
left-2 | left: 0.5rem; | <div className="left-2"></div> |
inset-2.5 | inset: 0.625rem; | <div className="inset-2.5"></div> |
inset-x-2.5 | left: 0.625rem;
right: 0.625rem; | <div className="inset-x-2.5"></div> |
inset-y-2.5 | top: 0.625rem;
bottom: 0.625rem; | <div className="inset-y-2.5"></div> |
start-2.5 | inset-inline-start: 0.625rem; | <div className="start-2.5"></div> |
end-2.5 | inset-inline-end: 0.625rem; | <div className="end-2.5"></div> |
top-2.5 | top: 0.625rem; | <div className="top-2.5"></div> |
right-2.5 | right: 0.625rem; | <div className="right-2.5"></div> |
bottom-2.5 | bottom: 0.625rem; | <div className="bottom-2.5"></div> |
left-2.5 | left: 0.625rem; | <div className="left-2.5"></div> |
inset-3 | inset: 0.75rem; | <div className="inset-3"></div> |
inset-x-3 | left: 0.75rem;
right: 0.75rem; | <div className="inset-x-3"></div> |
inset-y-3 | top: 0.75rem;
bottom: 0.75rem; | <div className="inset-y-3"></div> |
start-3 | inset-inline-start: 0.75rem; | <div className="start-3"></div> |
end-3 | inset-inline-end: 0.75rem; | <div className="end-3"></div> |
top-3 | top: 0.75rem; | <div className="top-3"></div> |
right-3 | right: 0.75rem; | <div className="right-3"></div> |
bottom-3 | bottom: 0.75rem; | <div className="bottom-3"></div> |
left-3 | left: 0.75rem; | <div className="left-3"></div> |
inset-3.5 | inset: 0.875rem; | <div className="inset-3.5"></div> |
inset-x-3.5 | left: 0.875rem;
right: 0.875rem; | <div className="inset-x-3.5"></div> |
inset-y-3.5 | top: 0.875rem;
bottom: 0.875rem; | <div className="inset-y-3.5"></div> |
start-3.5 | inset-inline-start: 0.875rem; | <div className="start-3.5"></div> |
end-3.5 | inset-inline-end: 0.875rem; | <div className="end-3.5"></div> |
top-3.5 | top: 0.875rem; | <div className="top-3.5"></div> |
right-3.5 | right: 0.875rem; | <div className="right-3.5"></div> |
bottom-3.5 | bottom: 0.875rem; | <div className="bottom-3.5"></div> |
left-3.5 | left: 0.875rem; | <div className="left-3.5"></div> |
inset-4 | inset: 1rem; | <div className="inset-4"></div> |
inset-x-4 | left: 1rem;
right: 1rem; | <div className="inset-x-4"></div> |
inset-y-4 | top: 1rem;
bottom: 1rem; | <div className="inset-y-4"></div> |
start-4 | inset-inline-start: 1rem; | <div className="start-4"></div> |
end-4 | inset-inline-end: 1rem; | <div className="end-4"></div> |
top-4 | top: 1rem; | <div className="top-4"></div> |
right-4 | right: 1rem; | <div className="right-4"></div> |
bottom-4 | bottom: 1rem; | <div className="bottom-4"></div> |
left-4 | left: 1rem; | <div className="left-4"></div> |
inset-5 | inset: 1.25rem; | <div className="inset-5"></div> |
inset-x-5 | left: 1.25rem;
right: 1.25rem; | <div className="inset-x-5"></div> |
inset-y-5 | top: 1.25rem;
bottom: 1.25rem; | <div className="inset-y-5"></div> |
start-5 | inset-inline-start: 1.25rem; | <div className="start-5"></div> |
end-5 | inset-inline-end: 1.25rem; | <div className="end-5"></div> |
top-5 | top: 1.25rem; | <div className="top-5"></div> |
right-5 | right: 1.25rem; | <div className="right-5"></div> |
bottom-5 | bottom: 1.25rem; | <div className="bottom-5"></div> |
left-5 | left: 1.25rem; | <div className="left-5"></div> |
inset-6 | inset: 1.5rem; | <div className="inset-6"></div> |
inset-x-6 | left: 1.5rem;
right: 1.5rem; | <div className="inset-x-6"></div> |
inset-y-6 | top: 1.5rem;
bottom: 1.5rem; | <div className="inset-y-6"></div> |
start-6 | inset-inline-start: 1.5rem; | <div className="start-6"></div> |
end-6 | inset-inline-end: 1.5rem; | <div className="end-6"></div> |
top-6 | top: 1.5rem; | <div className="top-6"></div> |
right-6 | right: 1.5rem; | <div className="right-6"></div> |
bottom-6 | bottom: 1.5rem; | <div className="bottom-6"></div> |
left-6 | left: 1.5rem; | <div className="left-6"></div> |
inset-7 | inset: 1.75rem; | <div className="inset-7"></div> |
inset-x-7 | left: 1.75rem;
right: 1.75rem; | <div className="inset-x-7"></div> |
inset-y-7 | top: 1.75rem;
bottom: 1.75rem; | <div className="inset-y-7"></div> |
start-7 | inset-inline-start: 1.75rem; | <div className="start-7"></div> |
end-7 | inset-inline-end: 1.75rem; | <div className="end-7"></div> |
top-7 | top: 1.75rem; | <div className="top-7"></div> |
right-7 | right: 1.75rem; | <div className="right-7"></div> |
bottom-7 | bottom: 1.75rem; | <div className="bottom-7"></div> |
left-7 | left: 1.75rem; | <div className="left-7"></div> |
inset-8 | inset: 2rem; | <div className="inset-8"></div> |
inset-x-8 | left: 2rem;
right: 2rem; | <div className="inset-x-8"></div> |
inset-y-8 | top: 2rem;
bottom: 2rem; | <div className="inset-y-8"></div> |
start-8 | inset-inline-start: 2rem; | <div className="start-8"></div> |
end-8 | inset-inline-end: 2rem; | <div className="end-8"></div> |
top-8 | top: 2rem; | <div className="top-8"></div> |
right-8 | right: 2rem; | <div className="right-8"></div> |
bottom-8 | bottom: 2rem; | <div className="bottom-8"></div> |
left-8 | left: 2rem; | <div className="left-8"></div> |
inset-9 | inset: 2.25rem; | <div className="inset-9"></div> |
inset-x-9 | left: 2.25rem;
right: 2.25rem; | <div className="inset-x-9"></div> |
inset-y-9 | top: 2.25rem;
bottom: 2.25rem; | <div className="inset-y-9"></div> |
start-9 | inset-inline-start: 2.25rem; | <div className="start-9"></div> |
end-9 | inset-inline-end: 2.25rem; | <div className="end-9"></div> |
top-9 | top: 2.25rem; | <div className="top-9"></div> |
right-9 | right: 2.25rem; | <div className="right-9"></div> |
bottom-9 | bottom: 2.25rem; | <div className="bottom-9"></div> |
left-9 | left: 2.25rem; | <div className="left-9"></div> |
inset-10 | inset: 2.5rem; | <div className="inset-10"></div> |
inset-x-10 | left: 2.5rem;
right: 2.5rem; | <div className="inset-x-10"></div> |
inset-y-10 | top: 2.5rem;
bottom: 2.5rem; | <div className="inset-y-10"></div> |
start-10 | inset-inline-start: 2.5rem; | <div className="start-10"></div> |
end-10 | inset-inline-end: 2.5rem; | <div className="end-10"></div> |
top-10 | top: 2.5rem; | <div className="top-10"></div> |
right-10 | right: 2.5rem; | <div className="right-10"></div> |
bottom-10 | bottom: 2.5rem; | <div className="bottom-10"></div> |
left-10 | left: 2.5rem; | <div className="left-10"></div> |
inset-11 | inset: 2.75rem; | <div className="inset-11"></div> |
inset-x-11 | left: 2.75rem;
right: 2.75rem; | <div className="inset-x-11"></div> |
inset-y-11 | top: 2.75rem;
bottom: 2.75rem; | <div className="inset-y-11"></div> |
start-11 | inset-inline-start: 2.75rem; | <div className="start-11"></div> |
end-11 | inset-inline-end: 2.75rem; | <div className="end-11"></div> |
top-11 | top: 2.75rem; | <div className="top-11"></div> |
right-11 | right: 2.75rem; | <div className="right-11"></div> |
bottom-11 | bottom: 2.75rem; | <div className="bottom-11"></div> |
left-11 | left: 2.75rem; | <div className="left-11"></div> |
inset-12 | inset: 3rem; | <div className="inset-12"></div> |
inset-x-12 | left: 3rem;
right: 3rem; | <div className="inset-x-12"></div> |
inset-y-12 | top: 3rem;
bottom: 3rem; | <div className="inset-y-12"></div> |
start-12 | inset-inline-start: 3rem; | <div className="start-12"></div> |
end-12 | inset-inline-end: 3rem; | <div className="end-12"></div> |
top-12 | top: 3rem; | <div className="top-12"></div> |
right-12 | right: 3rem; | <div className="right-12"></div> |
bottom-12 | bottom: 3rem; | <div className="bottom-12"></div> |
left-12 | left: 3rem; | <div className="left-12"></div> |
inset-14 | inset: 3.5rem; | <div className="inset-14"></div> |
inset-x-14 | left: 3.5rem;
right: 3.5rem; | <div className="inset-x-14"></div> |
inset-y-14 | top: 3.5rem;
bottom: 3.5rem; | <div className="inset-y-14"></div> |
start-14 | inset-inline-start: 3.5rem; | <div className="start-14"></div> |
end-14 | inset-inline-end: 3.5rem; | <div className="end-14"></div> |
top-14 | top: 3.5rem; | <div className="top-14"></div> |
right-14 | right: 3.5rem; | <div className="right-14"></div> |
bottom-14 | bottom: 3.5rem; | <div className="bottom-14"></div> |
left-14 | left: 3.5rem; | <div className="left-14"></div> |
inset-16 | inset: 4rem; | <div className="inset-16"></div> |
inset-x-16 | left: 4rem;
right: 4rem; | <div className="inset-x-16"></div> |
inset-y-16 | top: 4rem;
bottom: 4rem; | <div className="inset-y-16"></div> |
start-16 | inset-inline-start: 4rem; | <div className="start-16"></div> |
end-16 | inset-inline-end: 4rem; | <div className="end-16"></div> |
top-16 | top: 4rem; | <div className="top-16"></div> |
right-16 | right: 4rem; | <div className="right-16"></div> |
bottom-16 | bottom: 4rem; | <div className="bottom-16"></div> |
left-16 | left: 4rem; | <div className="left-16"></div> |
inset-20 | inset: 5rem; | <div className="inset-20"></div> |
inset-x-20 | left: 5rem;
right: 5rem; | <div className="inset-x-20"></div> |
inset-y-20 | top: 5rem;
bottom: 5rem; | <div className="inset-y-20"></div> |
start-20 | inset-inline-start: 5rem; | <div className="start-20"></div> |
end-20 | inset-inline-end: 5rem; | <div className="end-20"></div> |
top-20 | top: 5rem; | <div className="top-20"></div> |
right-20 | right: 5rem; | <div className="right-20"></div> |
bottom-20 | bottom: 5rem; | <div className="bottom-20"></div> |
left-20 | left: 5rem; | <div className="left-20"></div> |
inset-24 | inset: 6rem; | <div className="inset-24"></div> |
inset-x-24 | left: 6rem;
right: 6rem; | <div className="inset-x-24"></div> |
inset-y-24 | top: 6rem;
bottom: 6rem; | <div className="inset-y-24"></div> |
start-24 | inset-inline-start: 6rem; | <div className="start-24"></div> |
end-24 | inset-inline-end: 6rem; | <div className="end-24"></div> |
top-24 | top: 6rem; | <div className="top-24"></div> |
right-24 | right: 6rem; | <div className="right-24"></div> |
bottom-24 | bottom: 6rem; | <div className="bottom-24"></div> |
left-24 | left: 6rem; | <div className="left-24"></div> |
inset-28 | inset: 7rem; | <div className="inset-28"></div> |
inset-x-28 | left: 7rem;
right: 7rem; | <div className="inset-x-28"></div> |
inset-y-28 | top: 7rem;
bottom: 7rem; | <div className="inset-y-28"></div> |
start-28 | inset-inline-start: 7rem; | <div className="start-28"></div> |
end-28 | inset-inline-end: 7rem; | <div className="end-28"></div> |
top-28 | top: 7rem; | <div className="top-28"></div> |
right-28 | right: 7rem; | <div className="right-28"></div> |
bottom-28 | bottom: 7rem; | <div className="bottom-28"></div> |
left-28 | left: 7rem; | <div className="left-28"></div> |
inset-32 | inset: 8rem; | <div className="inset-32"></div> |
inset-x-32 | left: 8rem;
right: 8rem; | <div className="inset-x-32"></div> |
inset-y-32 | top: 8rem;
bottom: 8rem; | <div className="inset-y-32"></div> |
start-32 | inset-inline-start: 8rem; | <div className="start-32"></div> |
end-32 | inset-inline-end: 8rem; | <div className="end-32"></div> |
top-32 | top: 8rem; | <div className="top-32"></div> |
right-32 | right: 8rem; | <div className="right-32"></div> |
bottom-32 | bottom: 8rem; | <div className="bottom-32"></div> |
left-32 | left: 8rem; | <div className="left-32"></div> |
inset-36 | inset: 9rem; | <div className="inset-36"></div> |
inset-x-36 | left: 9rem;
right: 9rem; | <div className="inset-x-36"></div> |
inset-y-36 | top: 9rem;
bottom: 9rem; | <div className="inset-y-36"></div> |
start-36 | inset-inline-start: 9rem; | <div className="start-36"></div> |
end-36 | inset-inline-end: 9rem; | <div className="end-36"></div> |
top-36 | top: 9rem; | <div className="top-36"></div> |
right-36 | right: 9rem; | <div className="right-36"></div> |
bottom-36 | bottom: 9rem; | <div className="bottom-36"></div> |
left-36 | left: 9rem; | <div className="left-36"></div> |
inset-40 | inset: 10rem; | <div className="inset-40"></div> |
inset-x-40 | left: 10rem;
right: 10rem; | <div className="inset-x-40"></div> |
inset-y-40 | top: 10rem;
bottom: 10rem; | <div className="inset-y-40"></div> |
start-40 | inset-inline-start: 10rem; | <div className="start-40"></div> |
end-40 | inset-inline-end: 10rem; | <div className="end-40"></div> |
top-40 | top: 10rem; | <div className="top-40"></div> |
right-40 | right: 10rem; | <div className="right-40"></div> |
bottom-40 | bottom: 10rem; | <div className="bottom-40"></div> |
left-40 | left: 10rem; | <div className="left-40"></div> |
inset-44 | inset: 11rem; | <div className="inset-44"></div> |
inset-x-44 | left: 11rem;
right: 11rem; | <div className="inset-x-44"></div> |
inset-y-44 | top: 11rem;
bottom: 11rem; | <div className="inset-y-44"></div> |
start-44 | inset-inline-start: 11rem; | <div className="start-44"></div> |
end-44 | inset-inline-end: 11rem; | <div className="end-44"></div> |
top-44 | top: 11rem; | <div className="top-44"></div> |
right-44 | right: 11rem; | <div className="right-44"></div> |
bottom-44 | bottom: 11rem; | <div className="bottom-44"></div> |
left-44 | left: 11rem; | <div className="left-44"></div> |
inset-48 | inset: 12rem; | <div className="inset-48"></div> |
inset-x-48 | left: 12rem;
right: 12rem; | <div className="inset-x-48"></div> |
inset-y-48 | top: 12rem;
bottom: 12rem; | <div className="inset-y-48"></div> |
start-48 | inset-inline-start: 12rem; | <div className="start-48"></div> |
end-48 | inset-inline-end: 12rem; | <div className="end-48"></div> |
top-48 | top: 12rem; | <div className="top-48"></div> |
right-48 | right: 12rem; | <div className="right-48"></div> |
bottom-48 | bottom: 12rem; | <div className="bottom-48"></div> |
left-48 | left: 12rem; | <div className="left-48"></div> |
inset-52 | inset: 13rem; | <div className="inset-52"></div> |
inset-x-52 | left: 13rem;
right: 13rem; | <div className="inset-x-52"></div> |
inset-y-52 | top: 13rem;
bottom: 13rem; | <div className="inset-y-52"></div> |
start-52 | inset-inline-start: 13rem; | <div className="start-52"></div> |
end-52 | inset-inline-end: 13rem; | <div className="end-52"></div> |
top-52 | top: 13rem; | <div className="top-52"></div> |
right-52 | right: 13rem; | <div className="right-52"></div> |
bottom-52 | bottom: 13rem; | <div className="bottom-52"></div> |
left-52 | left: 13rem; | <div className="left-52"></div> |
inset-56 | inset: 14rem; | <div className="inset-56"></div> |
inset-x-56 | left: 14rem;
right: 14rem; | <div className="inset-x-56"></div> |
inset-y-56 | top: 14rem;
bottom: 14rem; | <div className="inset-y-56"></div> |
start-56 | inset-inline-start: 14rem; | <div className="start-56"></div> |
end-56 | inset-inline-end: 14rem; | <div className="end-56"></div> |
top-56 | top: 14rem; | <div className="top-56"></div> |
right-56 | right: 14rem; | <div className="right-56"></div> |
bottom-56 | bottom: 14rem; | <div className="bottom-56"></div> |
left-56 | left: 14rem; | <div className="left-56"></div> |
inset-60 | inset: 15rem; | <div className="inset-60"></div> |
inset-x-60 | left: 15rem;
right: 15rem; | <div className="inset-x-60"></div> |
inset-y-60 | top: 15rem;
bottom: 15rem; | <div className="inset-y-60"></div> |
start-60 | inset-inline-start: 15rem; | <div className="start-60"></div> |
end-60 | inset-inline-end: 15rem; | <div className="end-60"></div> |
top-60 | top: 15rem; | <div className="top-60"></div> |
right-60 | right: 15rem; | <div className="right-60"></div> |
bottom-60 | bottom: 15rem; | <div className="bottom-60"></div> |
left-60 | left: 15rem; | <div className="left-60"></div> |
inset-64 | inset: 16rem; | <div className="inset-64"></div> |
inset-x-64 | left: 16rem;
right: 16rem; | <div className="inset-x-64"></div> |
inset-y-64 | top: 16rem;
bottom: 16rem; | <div className="inset-y-64"></div> |
start-64 | inset-inline-start: 16rem; | <div className="start-64"></div> |
end-64 | inset-inline-end: 16rem; | <div className="end-64"></div> |
top-64 | top: 16rem; | <div className="top-64"></div> |
right-64 | right: 16rem; | <div className="right-64"></div> |
bottom-64 | bottom: 16rem; | <div className="bottom-64"></div> |
left-64 | left: 16rem; | <div className="left-64"></div> |
inset-72 | inset: 18rem; | <div className="inset-72"></div> |
inset-x-72 | left: 18rem;
right: 18rem; | <div className="inset-x-72"></div> |
inset-y-72 | top: 18rem;
bottom: 18rem; | <div className="inset-y-72"></div> |
start-72 | inset-inline-start: 18rem; | <div className="start-72"></div> |
end-72 | inset-inline-end: 18rem; | <div className="end-72"></div> |
top-72 | top: 18rem; | <div className="top-72"></div> |
right-72 | right: 18rem; | <div className="right-72"></div> |
bottom-72 | bottom: 18rem; | <div className="bottom-72"></div> |
left-72 | left: 18rem; | <div className="left-72"></div> |
inset-80 | inset: 20rem; | <div className="inset-80"></div> |
inset-x-80 | left: 20rem;
right: 20rem; | <div className="inset-x-80"></div> |
inset-y-80 | top: 20rem;
bottom: 20rem; | <div className="inset-y-80"></div> |
start-80 | inset-inline-start: 20rem; | <div className="start-80"></div> |
end-80 | inset-inline-end: 20rem; | <div className="end-80"></div> |
top-80 | top: 20rem; | <div className="top-80"></div> |
right-80 | right: 20rem; | <div className="right-80"></div> |
bottom-80 | bottom: 20rem; | <div className="bottom-80"></div> |
left-80 | left: 20rem; | <div className="left-80"></div> |
inset-96 | inset: 24rem; | <div className="inset-96"></div> |
inset-x-96 | left: 24rem;
right: 24rem; | <div className="inset-x-96"></div> |
inset-y-96 | top: 24rem;
bottom: 24rem; | <div className="inset-y-96"></div> |
start-96 | inset-inline-start: 24rem; | <div className="start-96"></div> |
end-96 | inset-inline-end: 24rem; | <div className="end-96"></div> |
top-96 | top: 24rem; | <div className="top-96"></div> |
right-96 | right: 24rem; | <div className="right-96"></div> |
bottom-96 | bottom: 24rem; | <div className="bottom-96"></div> |
left-96 | left: 24rem; | <div className="left-96"></div> |
inset-auto | inset: auto; | <div className="inset-auto"></div> |
inset-1/2 | inset: 50%; | <div className="inset-1/2"></div> |
inset-1/3 | inset: 33.333333%; | <div className="inset-1/3"></div> |
inset-2/3 | inset: 66.666667%; | <div className="inset-2/3"></div> |
inset-1/4 | inset: 25%; | <div className="inset-1/4"></div> |
inset-2/4 | inset: 50%; | <div className="inset-2/4"></div> |
inset-3/4 | inset: 75%; | <div className="inset-3/4"></div> |
inset-full | inset: 100%; | <div className="inset-full"></div> |
inset-x-auto | left: auto;
right: auto; | <div className="inset-x-auto"></div> |
inset-x-1/2 | left: 50%;
right: 50%; | <div className="inset-x-1/2"></div> |
inset-x-1/3 | left: 33.333333%;
right: 33.333333%; | <div className="inset-x-1/3"></div> |
inset-x-2/3 | left: 66.666667%;
right: 66.666667%; | <div className="inset-x-2/3"></div> |
inset-x-1/4 | left: 25%;
right: 25%; | <div className="inset-x-1/4"></div> |
inset-x-2/4 | left: 50%;
right: 50%; | <div className="inset-x-2/4"></div> |
inset-x-3/4 | left: 75%;
right: 75%; | <div className="inset-x-3/4"></div> |
inset-x-full | left: 100%;
right: 100%; | <div className="inset-x-full"></div> |
inset-y-auto | top: auto;
bottom: auto; | <div className="inset-y-auto"></div> |
inset-y-1/2 | top: 50%;
bottom: 50%; | <div className="inset-y-1/2"></div> |
inset-y-1/3 | top: 33.333333%;
bottom: 33.333333%; | <div className="inset-y-1/3"></div> |
inset-y-2/3 | top: 66.666667%;
bottom: 66.666667%; | <div className="inset-y-2/3"></div> |
inset-y-1/4 | top: 25%;
bottom: 25%; | <div className="inset-y-1/4"></div> |
inset-y-2/4 | top: 50%;
bottom: 50%; | <div className="inset-y-2/4"></div> |
inset-y-3/4 | top: 75%;
bottom: 75%; | <div className="inset-y-3/4"></div> |
inset-y-full | top: 100%;
bottom: 100%; | <div className="inset-y-full"></div> |
start-auto | inset-inline-start: auto; | <div className="start-auto"></div> |
start-1/2 | inset-inline-start: 50%; | <div className="start-1/2"></div> |
start-1/3 | inset-inline-start: 33.333333%; | <div className="start-1/3"></div> |
start-2/3 | inset-inline-start: 66.666667%; | <div className="start-2/3"></div> |
start-1/4 | inset-inline-start: 25%; | <div className="start-1/4"></div> |
start-2/4 | inset-inline-start: 50%; | <div className="start-2/4"></div> |
start-3/4 | inset-inline-start: 75%; | <div className="start-3/4"></div> |
start-full | inset-inline-start: 100%; | <div className="start-full"></div> |
end-auto | inset-inline-end: auto; | <div className="end-auto"></div> |
end-1/2 | inset-inline-end: 50%; | <div className="end-1/2"></div> |
end-1/3 | inset-inline-end: 33.333333%; | <div className="end-1/3"></div> |
end-2/3 | inset-inline-end: 66.666667%; | <div className="end-2/3"></div> |
end-1/4 | inset-inline-end: 25%; | <div className="end-1/4"></div> |
end-2/4 | inset-inline-end: 50%; | <div className="end-2/4"></div> |
end-3/4 | inset-inline-end: 75%; | <div className="end-3/4"></div> |
end-full | inset-inline-end: 100%; | <div className="end-full"></div> |
top-auto | top: auto; | <div className="top-auto"></div> |
top-1/2 | top: 50%; | <div className="top-1/2"></div> |
top-1/3 | top: 33.333333%; | <div className="top-1/3"></div> |
top-2/3 | top: 66.666667%; | <div className="top-2/3"></div> |
top-1/4 | top: 25%; | <div className="top-1/4"></div> |
top-2/4 | top: 50%; | <div className="top-2/4"></div> |
top-3/4 | top: 75%; | <div className="top-3/4"></div> |
top-full | top: 100%; | <div className="top-full"></div> |
right-auto | right: auto; | <div className="right-auto"></div> |
right-1/2 | right: 50%; | <div className="right-1/2"></div> |
right-1/3 | right: 33.333333%; | <div className="right-1/3"></div> |
right-2/3 | right: 66.666667%; | <div className="right-2/3"></div> |
right-1/4 | right: 25%; | <div className="right-1/4"></div> |
right-2/4 | right: 50%; | <div className="right-2/4"></div> |
right-3/4 | right: 75%; | <div className="right-3/4"></div> |
right-full | right: 100%; | <div className="right-full"></div> |
bottom-auto | bottom: auto; | <div className="bottom-auto"></div> |
bottom-1/2 | bottom: 50%; | <div className="bottom-1/2"></div> |
bottom-1/3 | bottom: 33.333333%; | <div className="bottom-1/3"></div> |
bottom-2/3 | bottom: 66.666667%; | <div className="bottom-2/3"></div> |
bottom-1/4 | bottom: 25%; | <div className="bottom-1/4"></div> |
bottom-2/4 | bottom: 50%; | <div className="bottom-2/4"></div> |
bottom-3/4 | bottom: 75%; | <div className="bottom-3/4"></div> |
bottom-full | bottom: 100%; | <div className="bottom-full"></div> |
left-auto | left: auto; | <div className="left-auto"></div> |
left-1/2 | left: 50%; | <div className="left-1/2"></div> |
left-1/3 | left: 33.333333%; | <div className="left-1/3"></div> |
left-2/3 | left: 66.666667%; | <div className="left-2/3"></div> |
left-1/4 | left: 25%; | <div className="left-1/4"></div> |
left-2/4 | left: 50%; | <div className="left-2/4"></div> |
left-3/4 | left: 75%; | <div className="left-3/4"></div> |
left-full | left: 100%; | <div className="left-full"></div> |
Overview of Top/Right/Bottom/Left
Positioning elements efficiently
Tailwind lets you assign vertical and horizontal offsets to positioned elements with intuitive classes like top*, right-*, bottom-*, etc.
export default function App() { return <h1>Hello world</h1> }
In this case:
- The image is 10 units down from the top and 20 units from the left of the parent container.
absolutepositioning ensures the placement is relative to the nearest positioned ancestor.
Negative offsets
Sometimes, you may need to offset elements outside the boundaries of their parents. Tailwind allows the use of negative spacings for such cases.
export default function App() { return <h1>Hello world</h1> }
Logical properties for flexibility
Tailwind also supports logical positioning utilities start-* and end-* to set the inset-inline-start or inset-inline-end properties, which adapt to text directions like left-to-right (LTR) or right-to-left (RTL):
export default function App() { return <h1>Hello world</h1> }
States and Responsiveness
Hover and Focus States
Tailwind's pseudo-class modifiers like hover: or focus: let you create interactive offsets for positioned elements.
export default function App() { return <h1>Hello world</h1> }
In this example:
- The button slightly moves upward when hovered, enhancing interactivity.
Breakpoint Modifiers
Tailwind integrates breakpoint modifiers for responsive, device-specific placement that doesn’t require writing custom media queries. Adjust offsets dynamically at various screen sizes.
export default function App() { return <h1>Hello world</h1> }
Custom Top/Right/Bottom/Left
Extending the theme
You can customize the default spacing scale in your Tailwind configuration to add project-specific offsets.
Once added, you can use them in your layouts:
export default function App() { return <h1>Hello world</h1> }
Using Arbitrary Values
When you need to apply unplanned or precise values, arbitrary values can bridge the gap. These values are enclosed in square brackets[]:
export default function App() { return <h1>Hello world</h1> }
Real World Examples
Chat Message Bubbles
Chat interface with positioned message bubbles and timestamps.
export default function App() { return <h1>Hello world</h1> }
Modal with Corner Close Button
A modal component with a positioned close button in the top-right corner.
export default function App() { return <h1>Hello world</h1> }
Cookie Consent Banner
A cookie consent banner that appears at the bottom of the page with accept/reject options.
export default function App() { return <h1>Hello world</h1> }
Floating Social Share Buttons
A fixed social media sharing panel positioned on the right side of the screen that follows scroll.
export default function App() { return <h1>Hello world</h1> }
Bottom Navigation Bar
A mobile-first bottom navigation bar with icons and labels.
export default function App() { return <h1>Hello world</h1> }
Customization Examples
Notification Badge with Custom Positioning
This example demonstrates how to create a notification badge with custom positioning for a profile avatar using theme customization.
export default function App() { return <h1>Hello world</h1> }
Floating Action Menu with Custom Spacing
This example shows how to create a floating action menu with customized spacing for each button.
export default function App() { return <h1>Hello world</h1> }
Sliding Tooltip with Custom Positioning
This example demonstrates how to create a sliding tooltip with custom positioning using theme customization.
export default function App() { return <h1>Hello world</h1> }
Best Practices
Maintain Design Consistency
When applying the top, right, bottom, and left utilities in Tailwind CSS, strive to maintain consistency across your layouts. Always consider your design system’s spacing scale to ensure uniform alignment and spacing. For instance, by using Tailwind's predefined spacing values (top-4, left-6, etc.), you can create a cohesive look across all components in your project. Avoid arbitrary spacing unless absolutely necessary to minimize unpredictability in your design.
Additionally, establish clear design tokens in your tailwind.config.js file to standardize values. For instance, if your project requires a lot of corner elements (like badges or notifications), creating reusable spacing presets allows you to maintain the same offsets across all components, reducing redundancy.
By incorporating consistent spacing values and aligning to your design system, you not only create visually appealing layouts but also simplify team collaboration on shared UI components.
Leverage Utility Combinations
Tailwind unlocks powerful layouts when top, right, bottom, and left are paired with complementary utilities. Combining positioning, flex, grid, and spacing utilities ensures seamless integration across components. For example, use absolute positioning alongside z-index (z-x) to stack overlapping elements with precise control.
Additionally, blend pseudo-classes like hover: and conditional utilities for interactive effects. For instance, combining hover:top-X and transitions (transition-all) can create smooth hover animations that enhance your user interface. Thoughtfully combining utilities reduces the need for custom CSS and increases scalability.
Accessibility Considerations
Enhance Readability and Navigability
Strategic use of top, right, bottom, and left can significantly improve the readability and navigability of content. For instance, you can position vital content like alerts or tooltips closer to the user’s focus area, making interfaces more intuitive for assistive technologies (AT).
Make sure that important components positioned off-screen (e.g., modals or hidden dropdowns) remain accessible through the DOM order. Use hidden utilities like sr-only for screen readers and provide alternative cues for vision-impaired users.
Focus on High Contrast
Offset components, such as badges or interactive buttons, often benefit from intentional use of top and right with proper contrast management. Ensure your positioned components achieve sufficient color contrast ratios as outlined by Web Content Accessibility Guidelines (WCAG).
export default function App() { return <h1>Hello world</h1> }
Apply these utilities alongside Tailwind's text-opacity-90 or high-color utility classes (text-gray-900 vs. text-gray-300) for greater visibility, effectively catering to users with low vision.
Debugging Common Issues
Handle Nested Element Challenges
Positioning within nested or multi-layered components can produce unexpected behavior due to parent inheritance or overflow clipping. Always ensure the containing elements allow visible overflow (overflow-visible) and provide sufficient padding/margin to account for offsets.
When encountering clipped content, enabling overflow visibility or adjusting the container size can usually resolve these issues without requiring extensive restructuring.
Handle Nested Element Challenges
Deeply nested layouts can cause confusion when using Top / Right / Bottom / Left due to the stacking context.
Ensure parent elements have the correct relative or absolute positioning to avoid inheritance conflicts with children elements. By defining relative on the parent, the absolute child positions are properly scoped, avoiding unintended global placements.