Menu

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.

ClassPropertiesExample
inset-0inset: 0px;<div className="inset-0"></div>
inset-x-0left: 0px; right: 0px;<div className="inset-x-0"></div>
inset-y-0top: 0px; bottom: 0px;<div className="inset-y-0"></div>
start-0inset-inline-start: 0px;<div className="start-0"></div>
end-0inset-inline-end: 0px;<div className="end-0"></div>
top-0top: 0px;<div className="top-0"></div>
right-0right: 0px;<div className="right-0"></div>
bottom-0bottom: 0px;<div className="bottom-0"></div>
left-0left: 0px;<div className="left-0"></div>
inset-pxinset: 1px;<div className="inset-px"></div>
inset-x-pxleft: 1px; right: 1px;<div className="inset-x-px"></div>
inset-y-pxtop: 1px; bottom: 1px;<div className="inset-y-px"></div>
start-pxinset-inline-start: 1px;<div className="start-px"></div>
end-pxinset-inline-end: 1px;<div className="end-px"></div>
top-pxtop: 1px;<div className="top-px"></div>
right-pxright: 1px;<div className="right-px"></div>
bottom-pxbottom: 1px;<div className="bottom-px"></div>
left-pxleft: 1px;<div className="left-px"></div>
inset-0.5inset: 0.125rem; <div className="inset-0.5"></div>
inset-x-0.5left: 0.125rem; right: 0.125rem; <div className="inset-x-0.5"></div>
inset-y-0.5top: 0.125rem; bottom: 0.125rem; <div className="inset-y-0.5"></div>
start-0.5inset-inline-start: 0.125rem; <div className="start-0.5"></div>
end-0.5inset-inline-end: 0.125rem; <div className="end-0.5"></div>
top-0.5top: 0.125rem; <div className="top-0.5"></div>
right-0.5right: 0.125rem; <div className="right-0.5"></div>
bottom-0.5bottom: 0.125rem; <div className="bottom-0.5"></div>
left-0.5left: 0.125rem; <div className="left-0.5"></div>
inset-1inset: 0.25rem; <div className="inset-1"></div>
inset-x-1left: 0.25rem; right: 0.25rem; <div className="inset-x-1"></div>
inset-y-1top: 0.25rem; bottom: 0.25rem; <div className="inset-y-1"></div>
start-1inset-inline-start: 0.25rem; <div className="start-1"></div>
end-1inset-inline-end: 0.25rem; <div className="end-1"></div>
top-1top: 0.25rem; <div className="top-1"></div>
right-1right: 0.25rem; <div className="right-1"></div>
bottom-1bottom: 0.25rem; <div className="bottom-1"></div>
left-1left: 0.25rem; <div className="left-1"></div>
inset-1.5inset: 0.375rem; <div className="inset-1.5"></div>
inset-x-1.5left: 0.375rem; right: 0.375rem; <div className="inset-x-1.5"></div>
inset-y-1.5top: 0.375rem; bottom: 0.375rem; <div className="inset-y-1.5"></div>
start-1.5inset-inline-start: 0.375rem; <div className="start-1.5"></div>
end-1.5inset-inline-end: 0.375rem; <div className="end-1.5"></div>
top-1.5top: 0.375rem; <div className="top-1.5"></div>
right-1.5right: 0.375rem; <div className="right-1.5"></div>
bottom-1.5bottom: 0.375rem; <div className="bottom-1.5"></div>
left-1.5left: 0.375rem; <div className="left-1.5"></div>
inset-2inset: 0.5rem; <div className="inset-2"></div>
inset-x-2left: 0.5rem; right: 0.5rem; <div className="inset-x-2"></div>
inset-y-2top: 0.5rem; bottom: 0.5rem; <div className="inset-y-2"></div>
start-2inset-inline-start: 0.5rem; <div className="start-2"></div>
end-2inset-inline-end: 0.5rem; <div className="end-2"></div>
top-2top: 0.5rem; <div className="top-2"></div>
right-2right: 0.5rem; <div className="right-2"></div>
bottom-2bottom: 0.5rem; <div className="bottom-2"></div>
left-2left: 0.5rem; <div className="left-2"></div>
inset-2.5inset: 0.625rem; <div className="inset-2.5"></div>
inset-x-2.5left: 0.625rem; right: 0.625rem; <div className="inset-x-2.5"></div>
inset-y-2.5top: 0.625rem; bottom: 0.625rem; <div className="inset-y-2.5"></div>
start-2.5inset-inline-start: 0.625rem; <div className="start-2.5"></div>
end-2.5inset-inline-end: 0.625rem; <div className="end-2.5"></div>
top-2.5top: 0.625rem; <div className="top-2.5"></div>
right-2.5right: 0.625rem; <div className="right-2.5"></div>
bottom-2.5bottom: 0.625rem; <div className="bottom-2.5"></div>
left-2.5left: 0.625rem; <div className="left-2.5"></div>
inset-3inset: 0.75rem; <div className="inset-3"></div>
inset-x-3left: 0.75rem; right: 0.75rem; <div className="inset-x-3"></div>
inset-y-3top: 0.75rem; bottom: 0.75rem; <div className="inset-y-3"></div>
start-3inset-inline-start: 0.75rem; <div className="start-3"></div>
end-3inset-inline-end: 0.75rem; <div className="end-3"></div>
top-3top: 0.75rem; <div className="top-3"></div>
right-3right: 0.75rem; <div className="right-3"></div>
bottom-3bottom: 0.75rem; <div className="bottom-3"></div>
left-3left: 0.75rem; <div className="left-3"></div>
inset-3.5inset: 0.875rem; <div className="inset-3.5"></div>
inset-x-3.5left: 0.875rem; right: 0.875rem; <div className="inset-x-3.5"></div>
inset-y-3.5top: 0.875rem; bottom: 0.875rem; <div className="inset-y-3.5"></div>
start-3.5inset-inline-start: 0.875rem; <div className="start-3.5"></div>
end-3.5inset-inline-end: 0.875rem; <div className="end-3.5"></div>
top-3.5top: 0.875rem; <div className="top-3.5"></div>
right-3.5right: 0.875rem; <div className="right-3.5"></div>
bottom-3.5bottom: 0.875rem; <div className="bottom-3.5"></div>
left-3.5left: 0.875rem; <div className="left-3.5"></div>
inset-4inset: 1rem; <div className="inset-4"></div>
inset-x-4left: 1rem; right: 1rem; <div className="inset-x-4"></div>
inset-y-4top: 1rem; bottom: 1rem; <div className="inset-y-4"></div>
start-4inset-inline-start: 1rem; <div className="start-4"></div>
end-4inset-inline-end: 1rem; <div className="end-4"></div>
top-4top: 1rem; <div className="top-4"></div>
right-4right: 1rem; <div className="right-4"></div>
bottom-4bottom: 1rem; <div className="bottom-4"></div>
left-4left: 1rem; <div className="left-4"></div>
inset-5inset: 1.25rem; <div className="inset-5"></div>
inset-x-5left: 1.25rem; right: 1.25rem; <div className="inset-x-5"></div>
inset-y-5top: 1.25rem; bottom: 1.25rem; <div className="inset-y-5"></div>
start-5inset-inline-start: 1.25rem; <div className="start-5"></div>
end-5inset-inline-end: 1.25rem; <div className="end-5"></div>
top-5top: 1.25rem; <div className="top-5"></div>
right-5right: 1.25rem; <div className="right-5"></div>
bottom-5bottom: 1.25rem; <div className="bottom-5"></div>
left-5left: 1.25rem; <div className="left-5"></div>
inset-6inset: 1.5rem; <div className="inset-6"></div>
inset-x-6left: 1.5rem; right: 1.5rem; <div className="inset-x-6"></div>
inset-y-6top: 1.5rem; bottom: 1.5rem; <div className="inset-y-6"></div>
start-6inset-inline-start: 1.5rem; <div className="start-6"></div>
end-6inset-inline-end: 1.5rem; <div className="end-6"></div>
top-6top: 1.5rem; <div className="top-6"></div>
right-6right: 1.5rem; <div className="right-6"></div>
bottom-6bottom: 1.5rem; <div className="bottom-6"></div>
left-6left: 1.5rem; <div className="left-6"></div>
inset-7inset: 1.75rem; <div className="inset-7"></div>
inset-x-7left: 1.75rem; right: 1.75rem; <div className="inset-x-7"></div>
inset-y-7top: 1.75rem; bottom: 1.75rem; <div className="inset-y-7"></div>
start-7inset-inline-start: 1.75rem; <div className="start-7"></div>
end-7inset-inline-end: 1.75rem; <div className="end-7"></div>
top-7top: 1.75rem; <div className="top-7"></div>
right-7right: 1.75rem; <div className="right-7"></div>
bottom-7bottom: 1.75rem; <div className="bottom-7"></div>
left-7left: 1.75rem; <div className="left-7"></div>
inset-8inset: 2rem; <div className="inset-8"></div>
inset-x-8left: 2rem; right: 2rem; <div className="inset-x-8"></div>
inset-y-8top: 2rem; bottom: 2rem; <div className="inset-y-8"></div>
start-8inset-inline-start: 2rem; <div className="start-8"></div>
end-8inset-inline-end: 2rem; <div className="end-8"></div>
top-8top: 2rem; <div className="top-8"></div>
right-8right: 2rem; <div className="right-8"></div>
bottom-8bottom: 2rem; <div className="bottom-8"></div>
left-8left: 2rem; <div className="left-8"></div>
inset-9inset: 2.25rem; <div className="inset-9"></div>
inset-x-9left: 2.25rem; right: 2.25rem; <div className="inset-x-9"></div>
inset-y-9top: 2.25rem; bottom: 2.25rem; <div className="inset-y-9"></div>
start-9inset-inline-start: 2.25rem; <div className="start-9"></div>
end-9inset-inline-end: 2.25rem; <div className="end-9"></div>
top-9top: 2.25rem; <div className="top-9"></div>
right-9right: 2.25rem; <div className="right-9"></div>
bottom-9bottom: 2.25rem; <div className="bottom-9"></div>
left-9left: 2.25rem; <div className="left-9"></div>
inset-10inset: 2.5rem; <div className="inset-10"></div>
inset-x-10left: 2.5rem; right: 2.5rem; <div className="inset-x-10"></div>
inset-y-10top: 2.5rem; bottom: 2.5rem; <div className="inset-y-10"></div>
start-10inset-inline-start: 2.5rem; <div className="start-10"></div>
end-10inset-inline-end: 2.5rem; <div className="end-10"></div>
top-10top: 2.5rem; <div className="top-10"></div>
right-10right: 2.5rem; <div className="right-10"></div>
bottom-10bottom: 2.5rem; <div className="bottom-10"></div>
left-10left: 2.5rem; <div className="left-10"></div>
inset-11inset: 2.75rem; <div className="inset-11"></div>
inset-x-11left: 2.75rem; right: 2.75rem; <div className="inset-x-11"></div>
inset-y-11top: 2.75rem; bottom: 2.75rem; <div className="inset-y-11"></div>
start-11inset-inline-start: 2.75rem; <div className="start-11"></div>
end-11inset-inline-end: 2.75rem; <div className="end-11"></div>
top-11top: 2.75rem; <div className="top-11"></div>
right-11right: 2.75rem; <div className="right-11"></div>
bottom-11bottom: 2.75rem; <div className="bottom-11"></div>
left-11left: 2.75rem; <div className="left-11"></div>
inset-12inset: 3rem; <div className="inset-12"></div>
inset-x-12left: 3rem; right: 3rem; <div className="inset-x-12"></div>
inset-y-12top: 3rem; bottom: 3rem; <div className="inset-y-12"></div>
start-12inset-inline-start: 3rem; <div className="start-12"></div>
end-12inset-inline-end: 3rem; <div className="end-12"></div>
top-12top: 3rem; <div className="top-12"></div>
right-12right: 3rem; <div className="right-12"></div>
bottom-12bottom: 3rem; <div className="bottom-12"></div>
left-12left: 3rem; <div className="left-12"></div>
inset-14inset: 3.5rem; <div className="inset-14"></div>
inset-x-14left: 3.5rem; right: 3.5rem; <div className="inset-x-14"></div>
inset-y-14top: 3.5rem; bottom: 3.5rem; <div className="inset-y-14"></div>
start-14inset-inline-start: 3.5rem; <div className="start-14"></div>
end-14inset-inline-end: 3.5rem; <div className="end-14"></div>
top-14top: 3.5rem; <div className="top-14"></div>
right-14right: 3.5rem; <div className="right-14"></div>
bottom-14bottom: 3.5rem; <div className="bottom-14"></div>
left-14left: 3.5rem; <div className="left-14"></div>
inset-16inset: 4rem; <div className="inset-16"></div>
inset-x-16left: 4rem; right: 4rem; <div className="inset-x-16"></div>
inset-y-16top: 4rem; bottom: 4rem; <div className="inset-y-16"></div>
start-16inset-inline-start: 4rem; <div className="start-16"></div>
end-16inset-inline-end: 4rem; <div className="end-16"></div>
top-16top: 4rem; <div className="top-16"></div>
right-16right: 4rem; <div className="right-16"></div>
bottom-16bottom: 4rem; <div className="bottom-16"></div>
left-16left: 4rem; <div className="left-16"></div>
inset-20inset: 5rem; <div className="inset-20"></div>
inset-x-20left: 5rem; right: 5rem; <div className="inset-x-20"></div>
inset-y-20top: 5rem; bottom: 5rem; <div className="inset-y-20"></div>
start-20inset-inline-start: 5rem; <div className="start-20"></div>
end-20inset-inline-end: 5rem; <div className="end-20"></div>
top-20top: 5rem; <div className="top-20"></div>
right-20right: 5rem; <div className="right-20"></div>
bottom-20bottom: 5rem; <div className="bottom-20"></div>
left-20left: 5rem; <div className="left-20"></div>
inset-24inset: 6rem; <div className="inset-24"></div>
inset-x-24left: 6rem; right: 6rem; <div className="inset-x-24"></div>
inset-y-24top: 6rem; bottom: 6rem; <div className="inset-y-24"></div>
start-24inset-inline-start: 6rem; <div className="start-24"></div>
end-24inset-inline-end: 6rem; <div className="end-24"></div>
top-24top: 6rem; <div className="top-24"></div>
right-24right: 6rem; <div className="right-24"></div>
bottom-24bottom: 6rem; <div className="bottom-24"></div>
left-24left: 6rem; <div className="left-24"></div>
inset-28inset: 7rem; <div className="inset-28"></div>
inset-x-28left: 7rem; right: 7rem; <div className="inset-x-28"></div>
inset-y-28top: 7rem; bottom: 7rem; <div className="inset-y-28"></div>
start-28inset-inline-start: 7rem; <div className="start-28"></div>
end-28inset-inline-end: 7rem; <div className="end-28"></div>
top-28top: 7rem; <div className="top-28"></div>
right-28right: 7rem; <div className="right-28"></div>
bottom-28bottom: 7rem; <div className="bottom-28"></div>
left-28left: 7rem; <div className="left-28"></div>
inset-32inset: 8rem; <div className="inset-32"></div>
inset-x-32left: 8rem; right: 8rem; <div className="inset-x-32"></div>
inset-y-32top: 8rem; bottom: 8rem; <div className="inset-y-32"></div>
start-32inset-inline-start: 8rem; <div className="start-32"></div>
end-32inset-inline-end: 8rem; <div className="end-32"></div>
top-32top: 8rem; <div className="top-32"></div>
right-32right: 8rem; <div className="right-32"></div>
bottom-32bottom: 8rem; <div className="bottom-32"></div>
left-32left: 8rem; <div className="left-32"></div>
inset-36inset: 9rem; <div className="inset-36"></div>
inset-x-36left: 9rem; right: 9rem; <div className="inset-x-36"></div>
inset-y-36top: 9rem; bottom: 9rem; <div className="inset-y-36"></div>
start-36inset-inline-start: 9rem; <div className="start-36"></div>
end-36inset-inline-end: 9rem; <div className="end-36"></div>
top-36top: 9rem; <div className="top-36"></div>
right-36right: 9rem; <div className="right-36"></div>
bottom-36bottom: 9rem; <div className="bottom-36"></div>
left-36left: 9rem; <div className="left-36"></div>
inset-40inset: 10rem; <div className="inset-40"></div>
inset-x-40left: 10rem; right: 10rem; <div className="inset-x-40"></div>
inset-y-40top: 10rem; bottom: 10rem; <div className="inset-y-40"></div>
start-40inset-inline-start: 10rem; <div className="start-40"></div>
end-40inset-inline-end: 10rem; <div className="end-40"></div>
top-40top: 10rem; <div className="top-40"></div>
right-40right: 10rem; <div className="right-40"></div>
bottom-40bottom: 10rem; <div className="bottom-40"></div>
left-40left: 10rem; <div className="left-40"></div>
inset-44inset: 11rem; <div className="inset-44"></div>
inset-x-44left: 11rem; right: 11rem; <div className="inset-x-44"></div>
inset-y-44top: 11rem; bottom: 11rem; <div className="inset-y-44"></div>
start-44inset-inline-start: 11rem; <div className="start-44"></div>
end-44inset-inline-end: 11rem; <div className="end-44"></div>
top-44top: 11rem; <div className="top-44"></div>
right-44right: 11rem; <div className="right-44"></div>
bottom-44bottom: 11rem; <div className="bottom-44"></div>
left-44left: 11rem; <div className="left-44"></div>
inset-48inset: 12rem; <div className="inset-48"></div>
inset-x-48left: 12rem; right: 12rem; <div className="inset-x-48"></div>
inset-y-48top: 12rem; bottom: 12rem; <div className="inset-y-48"></div>
start-48inset-inline-start: 12rem; <div className="start-48"></div>
end-48inset-inline-end: 12rem; <div className="end-48"></div>
top-48top: 12rem; <div className="top-48"></div>
right-48right: 12rem; <div className="right-48"></div>
bottom-48bottom: 12rem; <div className="bottom-48"></div>
left-48left: 12rem; <div className="left-48"></div>
inset-52inset: 13rem; <div className="inset-52"></div>
inset-x-52left: 13rem; right: 13rem; <div className="inset-x-52"></div>
inset-y-52top: 13rem; bottom: 13rem; <div className="inset-y-52"></div>
start-52inset-inline-start: 13rem; <div className="start-52"></div>
end-52inset-inline-end: 13rem; <div className="end-52"></div>
top-52top: 13rem; <div className="top-52"></div>
right-52right: 13rem; <div className="right-52"></div>
bottom-52bottom: 13rem; <div className="bottom-52"></div>
left-52left: 13rem; <div className="left-52"></div>
inset-56inset: 14rem; <div className="inset-56"></div>
inset-x-56left: 14rem; right: 14rem; <div className="inset-x-56"></div>
inset-y-56top: 14rem; bottom: 14rem; <div className="inset-y-56"></div>
start-56inset-inline-start: 14rem; <div className="start-56"></div>
end-56inset-inline-end: 14rem; <div className="end-56"></div>
top-56top: 14rem; <div className="top-56"></div>
right-56right: 14rem; <div className="right-56"></div>
bottom-56bottom: 14rem; <div className="bottom-56"></div>
left-56left: 14rem; <div className="left-56"></div>
inset-60inset: 15rem; <div className="inset-60"></div>
inset-x-60left: 15rem; right: 15rem; <div className="inset-x-60"></div>
inset-y-60top: 15rem; bottom: 15rem; <div className="inset-y-60"></div>
start-60inset-inline-start: 15rem; <div className="start-60"></div>
end-60inset-inline-end: 15rem; <div className="end-60"></div>
top-60top: 15rem; <div className="top-60"></div>
right-60right: 15rem; <div className="right-60"></div>
bottom-60bottom: 15rem; <div className="bottom-60"></div>
left-60left: 15rem; <div className="left-60"></div>
inset-64inset: 16rem; <div className="inset-64"></div>
inset-x-64left: 16rem; right: 16rem; <div className="inset-x-64"></div>
inset-y-64top: 16rem; bottom: 16rem; <div className="inset-y-64"></div>
start-64inset-inline-start: 16rem; <div className="start-64"></div>
end-64inset-inline-end: 16rem; <div className="end-64"></div>
top-64top: 16rem; <div className="top-64"></div>
right-64right: 16rem; <div className="right-64"></div>
bottom-64bottom: 16rem; <div className="bottom-64"></div>
left-64left: 16rem; <div className="left-64"></div>
inset-72inset: 18rem; <div className="inset-72"></div>
inset-x-72left: 18rem; right: 18rem; <div className="inset-x-72"></div>
inset-y-72top: 18rem; bottom: 18rem; <div className="inset-y-72"></div>
start-72inset-inline-start: 18rem; <div className="start-72"></div>
end-72inset-inline-end: 18rem; <div className="end-72"></div>
top-72top: 18rem; <div className="top-72"></div>
right-72right: 18rem; <div className="right-72"></div>
bottom-72bottom: 18rem; <div className="bottom-72"></div>
left-72left: 18rem; <div className="left-72"></div>
inset-80inset: 20rem; <div className="inset-80"></div>
inset-x-80left: 20rem; right: 20rem; <div className="inset-x-80"></div>
inset-y-80top: 20rem; bottom: 20rem; <div className="inset-y-80"></div>
start-80inset-inline-start: 20rem; <div className="start-80"></div>
end-80inset-inline-end: 20rem; <div className="end-80"></div>
top-80top: 20rem; <div className="top-80"></div>
right-80right: 20rem; <div className="right-80"></div>
bottom-80bottom: 20rem; <div className="bottom-80"></div>
left-80left: 20rem; <div className="left-80"></div>
inset-96inset: 24rem; <div className="inset-96"></div>
inset-x-96left: 24rem; right: 24rem; <div className="inset-x-96"></div>
inset-y-96top: 24rem; bottom: 24rem; <div className="inset-y-96"></div>
start-96inset-inline-start: 24rem; <div className="start-96"></div>
end-96inset-inline-end: 24rem; <div className="end-96"></div>
top-96top: 24rem; <div className="top-96"></div>
right-96right: 24rem; <div className="right-96"></div>
bottom-96bottom: 24rem; <div className="bottom-96"></div>
left-96left: 24rem; <div className="left-96"></div>
inset-autoinset: auto;<div className="inset-auto"></div>
inset-1/2inset: 50%;<div className="inset-1/2"></div>
inset-1/3inset: 33.333333%;<div className="inset-1/3"></div>
inset-2/3inset: 66.666667%;<div className="inset-2/3"></div>
inset-1/4inset: 25%;<div className="inset-1/4"></div>
inset-2/4inset: 50%;<div className="inset-2/4"></div>
inset-3/4inset: 75%;<div className="inset-3/4"></div>
inset-fullinset: 100%;<div className="inset-full"></div>
inset-x-autoleft: auto; right: auto;<div className="inset-x-auto"></div>
inset-x-1/2left: 50%; right: 50%;<div className="inset-x-1/2"></div>
inset-x-1/3left: 33.333333%; right: 33.333333%;<div className="inset-x-1/3"></div>
inset-x-2/3left: 66.666667%; right: 66.666667%;<div className="inset-x-2/3"></div>
inset-x-1/4left: 25%; right: 25%;<div className="inset-x-1/4"></div>
inset-x-2/4left: 50%; right: 50%;<div className="inset-x-2/4"></div>
inset-x-3/4left: 75%; right: 75%;<div className="inset-x-3/4"></div>
inset-x-fullleft: 100%; right: 100%;<div className="inset-x-full"></div>
inset-y-autotop: auto; bottom: auto;<div className="inset-y-auto"></div>
inset-y-1/2top: 50%; bottom: 50%;<div className="inset-y-1/2"></div>
inset-y-1/3top: 33.333333%; bottom: 33.333333%;<div className="inset-y-1/3"></div>
inset-y-2/3top: 66.666667%; bottom: 66.666667%;<div className="inset-y-2/3"></div>
inset-y-1/4top: 25%; bottom: 25%;<div className="inset-y-1/4"></div>
inset-y-2/4top: 50%; bottom: 50%;<div className="inset-y-2/4"></div>
inset-y-3/4top: 75%; bottom: 75%;<div className="inset-y-3/4"></div>
inset-y-fulltop: 100%; bottom: 100%;<div className="inset-y-full"></div>
start-autoinset-inline-start: auto;<div className="start-auto"></div>
start-1/2inset-inline-start: 50%;<div className="start-1/2"></div>
start-1/3inset-inline-start: 33.333333%;<div className="start-1/3"></div>
start-2/3inset-inline-start: 66.666667%;<div className="start-2/3"></div>
start-1/4inset-inline-start: 25%;<div className="start-1/4"></div>
start-2/4inset-inline-start: 50%;<div className="start-2/4"></div>
start-3/4inset-inline-start: 75%;<div className="start-3/4"></div>
start-fullinset-inline-start: 100%;<div className="start-full"></div>
end-autoinset-inline-end: auto;<div className="end-auto"></div>
end-1/2inset-inline-end: 50%;<div className="end-1/2"></div>
end-1/3inset-inline-end: 33.333333%;<div className="end-1/3"></div>
end-2/3inset-inline-end: 66.666667%;<div className="end-2/3"></div>
end-1/4inset-inline-end: 25%;<div className="end-1/4"></div>
end-2/4inset-inline-end: 50%;<div className="end-2/4"></div>
end-3/4inset-inline-end: 75%;<div className="end-3/4"></div>
end-fullinset-inline-end: 100%;<div className="end-full"></div>
top-autotop: auto;<div className="top-auto"></div>
top-1/2top: 50%;<div className="top-1/2"></div>
top-1/3top: 33.333333%;<div className="top-1/3"></div>
top-2/3top: 66.666667%;<div className="top-2/3"></div>
top-1/4top: 25%;<div className="top-1/4"></div>
top-2/4top: 50%;<div className="top-2/4"></div>
top-3/4top: 75%;<div className="top-3/4"></div>
top-fulltop: 100%;<div className="top-full"></div>
right-autoright: auto;<div className="right-auto"></div>
right-1/2right: 50%;<div className="right-1/2"></div>
right-1/3right: 33.333333%;<div className="right-1/3"></div>
right-2/3right: 66.666667%;<div className="right-2/3"></div>
right-1/4right: 25%;<div className="right-1/4"></div>
right-2/4right: 50%;<div className="right-2/4"></div>
right-3/4right: 75%;<div className="right-3/4"></div>
right-fullright: 100%;<div className="right-full"></div>
bottom-autobottom: auto;<div className="bottom-auto"></div>
bottom-1/2bottom: 50%;<div className="bottom-1/2"></div>
bottom-1/3bottom: 33.333333%;<div className="bottom-1/3"></div>
bottom-2/3bottom: 66.666667%;<div className="bottom-2/3"></div>
bottom-1/4bottom: 25%;<div className="bottom-1/4"></div>
bottom-2/4bottom: 50%;<div className="bottom-2/4"></div>
bottom-3/4bottom: 75%;<div className="bottom-3/4"></div>
bottom-fullbottom: 100%;<div className="bottom-full"></div>
left-autoleft: auto;<div className="left-auto"></div>
left-1/2left: 50%;<div className="left-1/2"></div>
left-1/3left: 33.333333%;<div className="left-1/3"></div>
left-2/3left: 66.666667%;<div className="left-2/3"></div>
left-1/4left: 25%;<div className="left-1/4"></div>
left-2/4left: 50%;<div className="left-2/4"></div>
left-3/4left: 75%;<div className="left-3/4"></div>
left-fullleft: 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.

This is a live editor. Play around with it!
export default function PositionedImage() {
  return (
    <div className="relative h-screen w-screen bg-gray-100">
      {/* Parent Container */}
      <img
        src="https://images.unsplash.com/photo-1508873699372-7aeab60b44ab"
        alt="Landscape"
        className="absolute top-10 left-20 h-40 w-60 object-cover"
      />
      {/* Tailwind: top: 2.5rem; left: 5rem; height: 10rem; width: 15rem */}
    </div>
  );
}

In this case:

  • The image is 10 units down from the top and 20 units from the left of the parent container.
  • absolute positioning 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.

This is a live editor. Play around with it!
export default function NegativeOffsetCard() {
  return (
    <div className="relative h-screen w-screen bg-gray-200">
      {/* Parent Container */}
      <div className="absolute -top-8 -left-12 h-28 w-60 bg-blue-500 text-white flex items-center justify-center">
        Negative Offset
      </div>
      {/* Tailwind: top: -32px; left: -48px */}
    </div>
  );
}

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):

This is a live editor. Play around with it!
export default function LogicalPositioning() {
  return (
    <div className="relative h-screen w-screen bg-gray-50">
      <div dir="rtl" className="relative start-2 end-12 h-20 w-60 pt-4 top-10 bg-indigo-600 text-white pe-8">
        This text is written from right to left.
      </div>
      {/* Tailwind: adjusts positioning for RTL automatically */}
    </div>
  );
}

States and Responsiveness

Hover and Focus States

Tailwind's pseudo-class modifiers like hover: or focus: let you create interactive offsets for positioned elements.

This is a live editor. Play around with it!
export default function StateBasedButton() {
  return (
    <div className="relative h-screen w-screen flex items-center justify-center bg-gray-50">
      {/* Button shifts upward on hover */}
      <button className="relative bg-teal-500 text-white px-4 py-2 rounded hover:top-[-10px] transition-all duration-200">
        Hover Me
      </button>
      {/* Tailwind on hover: top: -10px */}
    </div>
  );
}

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.

This is a live editor. Play around with it!
export default function ResponsivePlacement() {
  return (
    <div className="relative h-screen w-screen bg-gray-100">
      <div className="absolute top-5 left-10 md:top-20 md:left-40 lg:top-40 lg:left-80 h-20 w-40 bg-purple-500 text-white flex items-center justify-center">
        Responsive Block
      </div>
      {/* Tailwind:
          Small screens: top: 5rem, left: 10rem
          Medium screens: top: 20rem, left: 40rem
          Large screens: top: 40rem, left: 80rem */}
    </div>
  );
}

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:

This is a live editor. Play around with it!
import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

export default function CustomThemeOffset() {
  return (
    <div className="relative h-screen w-screen bg-gray-300">
      <div className="absolute top-1/7 left-58 h-24 w-48 bg-green-700 text-white flex items-center justify-center">
        Custom Offset
      </div>
    </div>
  );
}

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[]:

This is a live editor. Play around with it!
export default function ArbitraryPlacement() {
  return (
    <div className="relative h-screen w-screen bg-gray-100">
      <div className="absolute top-[3.4375rem] left-[2.81rem] h-20 w-40 bg-orange-500 text-white flex items-center justify-center">
        Arbitrary Offset
      </div>
      {/* Tailwind: top: 55px; left: 45px */}
    </div>
  );
}

Real World Examples

Chat Message Bubbles

Chat interface with positioned message bubbles and timestamps.

This is a live editor. Play around with it!
export default function ChatInterface() {
  const messages = [
    {
      id: 1,
      text: "Hey, how are you?",
      sender: "user",
      time: "09:30"
    },
    {
      id: 2,
      text: "I'm good, thanks! How about you?",
      sender: "other",
      time: "09:31"
    },
    {
      id: 3,
      text: "Working on a new project. It's quite exciting!",
      sender: "user",
      time: "09:32"
    },
    {
      id: 4,
      text: "That sounds interesting! Tell me more about it.",
      sender: "other",
      time: "09:33"
    },
    {
      id: 5,
      text: "It's a web application using Tailwind CSS.",
      sender: "user",
      time: "09:34"
    },
    {
      id: 6,
      text: "Nice choice! I love working with Tailwind.",
      sender: "other",
      time: "09:35"
    }
  ];

  return (
    <div className="max-w-2xl mx-auto p-4 space-y-4">
      {messages.map((message) => (
        <div
          key={message.id}
          className={`relative max-w-[80%] ${
            message.sender === "user" ? "ml-auto" : "mr-auto"
          }`}
        >
          <div
            className={`p-3 rounded-lg ${
              message.sender === "user"
                ? "bg-blue-500 text-white rounded-br-none"
                : "bg-gray-200 rounded-bl-none"
            }`}
          >
            {message.text}
          </div>
          <span
            className={`absolute bottom-0 ${
              message.sender === "user" ? "right-0" : "left-0"
            } text-xs text-gray-500 -mb-5`}
          >
            {message.time}
          </span>
        </div>
      ))}
    </div>
  );
}

A modal component with a positioned close button in the top-right corner.

This is a live editor. Play around with it!
export default function Modal() {
  const modalContent = {
    title: "Subscribe to Newsletter",
    description: "Get the latest updates directly in your inbox!",
    features: [
      {
        id: 1,
        title: "Weekly Updates",
        description: "Stay informed with our weekly newsletter"
      },
      {
        id: 2,
        title: "Exclusive Content",
        description: "Access to subscriber-only articles"
      },
      {
        id: 3,
        title: "Early Access",
        description: "Be the first to know about new features"
      },
      {
        id: 4,
        title: "Special Offers",
        description: "Receive exclusive discounts and deals"
      },
      {
        id: 5,
        title: "Community Access",
        description: "Join our private community"
      },
      {
        id: 6,
        title: "Priority Support",
        description: "Get faster responses to your queries"
      }
    ]
  };

  return (
    <div className="bg-black bg-opacity-50 flex items-center justify-center">
      <div className="relative bg-white rounded-xl w-full max-w-md p-6">
        <button className="absolute top-7 right-4 text-gray-400 hover:text-gray-600">
          <svg
            className="w-6 h-6"
            fill="none"
            stroke="currentColor"
            viewBox="0 0 24 24"
          >
            <path
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth={2}
              d="M6 18L18 6M6 6l12 12"
            />
          </svg>
        </button>
        <h2 className="text-2xl font-bold mb-4">{modalContent.title}</h2>
        <p className="text-gray-600 mb-6">{modalContent.description}</p>
        <div className="space-y-4">
          {modalContent.features.map((feature) => (
            <div key={feature.id} className="flex items-start gap-3">
              <svg
                className="w-5 h-5 text-green-500 mt-1"
                fill="none"
                stroke="currentColor"
                viewBox="0 0 24 24"
              >
                <path
                  strokeLinecap="round"
                  strokeLinejoin="round"
                  strokeWidth={2}
                  d="M5 13l4 4L19 7"
                />
              </svg>
              <div>
                <h3 className="font-medium">{feature.title}</h3>
                <p className="text-sm text-gray-500">{feature.description}</p>
              </div>
            </div>
          ))}
        </div>
        <button className="mt-6 w-full bg-blue-500 text-white py-2 rounded-lg hover:bg-blue-600">
          Subscribe Now
        </button>
      </div>
    </div>
  );
}

A cookie consent banner that appears at the bottom of the page with accept/reject options.

This is a live editor. Play around with it!
export default function CookieConsent() {
  const cookieTypes = [
    {
      id: 1,
      name: "Essential",
      description: "Required for basic site functionality",
      required: true
    },
    {
      id: 2,
      name: "Analytics",
      description: "Help us improve our website",
      required: false
    },
    {
      id: 3,
      name: "Marketing",
      description: "Personalized advertisements",
      required: false
    },
    {
      id: 4,
      name: "Social Media",
      description: "Enable social sharing features",
      required: false
    },
  ];

  return (
    <div className="fixed bottom-0 left-0 right-0 bg-gray-900 text-white p-6">
      <div className="max-w-4xl mx-auto">
        <h3 className="text-xl font-bold mb-4">Cookie Preferences</h3>
        <p className="mb-4">
          We use cookies to enhance your browsing experience and analyze our traffic.
        </p>
        <div className="grid grid-cols-2 gap-4 mb-6">
          {cookieTypes.map((cookie) => (
            <div key={cookie.id} className="flex items-center">
              <input
                type="checkbox"
                defaultChecked={cookie.required}
                disabled={cookie.required}
                className="mr-2"
              />
              <div>
                <p className="font-medium">{cookie.name}</p>
                <p className="text-sm text-gray-300">{cookie.description}</p>
              </div>
            </div>
          ))}
        </div>
        <div className="flex justify-end space-x-4">
          <button className="px-6 py-2 bg-gray-600 rounded">Reject All</button>
          <button className="px-6 py-2 bg-blue-600 rounded">Accept All</button>
        </div>
      </div>
    </div>
  );
}

Floating Social Share Buttons

A fixed social media sharing panel positioned on the right side of the screen that follows scroll.

This is a live editor. Play around with it!
export default function SocialSharePanel() {
  const socialLinks = [
    {
      name: "Facebook",
      icon: "https://images.unsplash.com/photo-1634942537034-2531766767d1",
      alt: "Facebook sharing icon",
      color: "bg-blue-600"
    },
    {
      name: "Twitter",
      icon: "https://images.unsplash.com/photo-1611605698335-8b1569810432",
      alt: "Twitter sharing icon",
      color: "bg-sky-400"
    },
    {
      name: "LinkedIn",
      icon: "https://images.unsplash.com/photo-1611944212129-29977ae1398c",
      alt: "LinkedIn sharing icon",
      color: "bg-blue-800"
    },
    {
      name: "Pinterest",
      icon: "https://images.unsplash.com/photo-1611162617474-5b21e879e113",
      alt: "Pinterest sharing icon",
      color: "bg-red-600"
    },
    {
      name: "WhatsApp",
      icon: "https://images.unsplash.com/photo-1633355444132-695d5876cd00",
      alt: "WhatsApp sharing icon",
      color: "bg-green-500"
    },
    {
      name: "Email",
      icon: "https://images.unsplash.com/photo-1557200134-90327ee9fafa",
      alt: "Email sharing icon",
      color: "bg-gray-600"
    }
  ];

  return (
    <div className="fixed right-4 top-1/2 -translate-y-1/2 flex flex-col gap-3">
      {socialLinks.map((social) => (
        <button
          key={social.name}
          className={`${social.color} p-3 rounded-full hover:scale-110 transition-transform`}
        >
          <img src={social.icon} alt={social.alt} className="w-6 h-6" />
        </button>
      ))}
    </div>
  );
}

Bottom Navigation Bar

A mobile-first bottom navigation bar with icons and labels.

This is a live editor. Play around with it!
export default function BottomNavigation() {
  const navItems = [
    {
      name: "Home",
      icon: "https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe",
      alt: "Home icon"
    },
    {
      name: "Search",
      icon: "https://images.unsplash.com/photo-1612178537253-bccd437b730e",
      alt: "Search icon"
    },
    {
      name: "Cart",
      icon: "https://images.unsplash.com/photo-1557899563-1940fc95709c",
      alt: "Cart icon"
    },
  ];

  return (
    <nav className="fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 px-4 py-2">
      <div className="flex justify-between items-center max-w-lg mx-auto">
        {navItems.map((item) => (
          <button
            key={item.name}
            className="flex flex-col items-center p-2 hover:bg-gray-50 rounded-lg"
          >
            <img src={item.icon} alt={item.alt} className="w-6 h-6 mb-1" />
            <span className="text-xs text-gray-600">{item.name}</span>
          </button>
        ))}
      </div>
    </nav>
  );
}

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.

This is a live editor. Play around with it!
// App.js
  import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

export default function NotificationBadge() {
  return (
    <div className="relative inline-block mx-20 mt-10">
      <img
        src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e"
        alt="Profile"
        className="w-12 h-12 rounded-full"
      />
      <div className="absolute top-notification right-badge-right">
        <span className="flex h-4 w-4 items-center justify-center rounded-full bg-red-500 text-[10px] text-white">
          3
        </span>
      </div>
    </div>
  )
}

Floating Action Menu with Custom Spacing

This example shows how to create a floating action menu with customized spacing for each button.

This is a live editor. Play around with it!
// App.js
  import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

export default function FloatingActionMenu() {
  return (
    <div className="fixed bottom-8 right-8">
      <button className="absolute bottom-0 right-0 w-14 h-14 bg-blue-600 rounded-full shadow-lg flex items-center justify-center">
        <img
          src="https://images.unsplash.com/photo-1589156191108-c762ff4b96ab"
          alt="Menu"
          className="w-6 h-6"
        />
      </button>
      
      <button className="absolute bottom-action-1 right-0 w-12 h-12 bg-green-500 rounded-full shadow-lg flex items-center justify-center">
        <img
          src="https://images.unsplash.com/photo-1589156191108-c762ff4b96ab"
          alt="Add"
          className="w-5 h-5"
        />
      </button>
      
      <button className="absolute bottom-action-2 right-0 w-12 h-12 bg-yellow-500 rounded-full shadow-lg flex items-center justify-center">
        <img
          src="https://images.unsplash.com/photo-1589156191108-c762ff4b96ab"
          alt="Edit"
          className="w-5 h-5"
        />
      </button>
      
      <button className="absolute bottom-action-3 right-0 w-12 h-12 bg-red-500 rounded-full shadow-lg flex items-center justify-center">
        <img
          src="https://images.unsplash.com/photo-1589156191108-c762ff4b96ab"
          alt="Delete"
          className="w-5 h-5"
        />
      </button>
    </div>
  )
}

Sliding Tooltip with Custom Positioning

This example demonstrates how to create a sliding tooltip with custom positioning using theme customization.

This is a live editor. Play around with it!
// App.js
  import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

export default function SlidingTooltip() {
  return (
    <div className="relative group inline-block">
      <button className="px-4 py-2 bg-purple-600 text-white rounded-lg">
        Hover Me
      </button>
      
      <div className="absolute left-tooltip-start opacity-0 group-hover:opacity-100 group-hover:left-tooltip-end transition-all duration-300 bg-gray-900 text-white px-3 py-2 rounded w-48">
        <span className="block text-sm">
          This is a custom positioned tooltip that slides in from the left
        </span>        
      </div>
    </div>
  )
}

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).

This is a live editor. Play around with it!
export default function HighContrastBadge() {
  return (
    <div className="relative inline-block">
      <img
        src="https://images.unsplash.com/photo-1677086813101-496781a0f327"
        alt="User Avatar"
        className="w-12 h-12 rounded-full"
      />
      <div
        role="status"
        className="absolute right-0 top-0 translate-x-1/2 bg-red-500 text-white rounded-full px-2 py-1 text-xs font-semibold"
      >
        99+
      </div>
    </div>
  );
}

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.