Tailwind CSS: نموذج الصندوق وعرض العناصر في Tailwind CSS
1. نظام تباعد الحشو
تحدد الخاصية «Padding» المسافة بين محتوى العنصر وحافته. يوفر Tailwind نظام تباعد كامل بدءًا من p-0 وحتى p-96، مع استخدام مضاعفات 4px كقيمة افتراضية.
▶ مثال
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Padding Spacing System Demo</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Directional padding -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Directional Padding</h3>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div class="bg-blue-100 p-4 rounded text-center">
<div class="bg-blue-500 text-white p-2 rounded">p-4</div>
<span class="text-sm text-gray-600 mt-2 block">All sides equal</span>
</div>
<div class="bg-green-100 px-6 py-4 rounded text-center">
<div class="bg-green-500 text-white p-2 rounded">px-6 py-4</div>
<span class="text-sm text-gray-600 mt-2 block">Horizontal/Vertical</span>
</div>
<div class="bg-purple-100 pt-4 pb-2 px-4 rounded text-center">
<div class="bg-purple-500 text-white p-2 rounded">pt-4 pb-2</div>
<span class="text-sm text-gray-600 mt-2 block">Top/Bottom differ</span>
</div>
<div class="bg-orange-100 pl-8 pr-4 py-4 rounded text-center">
<div class="bg-orange-500 text-white p-2 rounded">pl-8 pr-4</div>
<span class="text-sm text-gray-600 mt-2 block">Left/Right differ</span>
</div>
</div>
</div>
<!-- Common padding values -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Common Padding Values</h3>
<div class="space-y-4">
<div class="flex items-center gap-4">
<div class="bg-gray-200 p-1 w-32 text-center text-sm">p-1 (4px)</div>
<div class="bg-gray-200 p-2 w-32 text-center text-sm">p-2 (8px)</div>
<div class="bg-gray-200 p-3 w-32 text-center text-sm">p-3 (12px)</div>
<div class="bg-gray-200 p-4 w-32 text-center text-sm">p-4 (16px)</div>
</div>
<div class="flex items-center gap-4">
<div class="bg-gray-200 p-5 w-32 text-center text-sm">p-5 (20px)</div>
<div class="bg-gray-200 p-6 w-32 text-center text-sm">p-6 (24px)</div>
<div class="bg-gray-200 p-8 w-32 text-center text-sm">p-8 (32px)</div>
<div class="bg-gray-200 p-10 w-32 text-center text-sm">p-10 (40px)</div>
</div>
</div>
</div>
<!-- Arbitrary values -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Arbitrary Value Padding</h3>
<div class="flex gap-4">
<div class="bg-blue-100 p-[15px] rounded text-center">p-[15px]</div>
<div class="bg-green-100 p-[2rem] rounded text-center">p-[2rem]</div>
<div class="bg-purple-100 p-[5%] rounded text-center">p-[5%]</div>
</div>
</div>
</div>
</body>
</html>
مرجع فئة اتجاه الحشو:
| الفئة | خاصية CSS | الوصف |
|---|---|---|
p-4 |
padding: 16px |
جميع الجوانب متساوية |
px-4 |
padding-left/right: 16px |
أفقي |
py-4 |
padding-top/bottom: 16px |
عمودي |
pt-4 |
padding-top: 16px |
الأعلى |
pr-4 |
padding-right: 16px |
يمين |
pb-4 |
padding-bottom: 16px |
أسفل |
pl-4 |
padding-left: 16px |
يسار |
CSS التقليدي مقابل Tailwind يتطلب النهج التقليدي تعيين قيم
paddingمحددة لكل عنصر، بينما يستخدم Tailwind نظام تباعد محدد مسبقًا يعتمد على مضاعفات 4px للحفاظ على اتساق التصميم.
2. نظام تباعد الهوامش
يحدد «المارجين» المسافة الفاصلة بين عنصر ما والعناصر الأخرى. وتشبه صيغة استخدامه صيغة «البادينج»، مع دعم إضافي للتوسيط التلقائي.
▶ مثال
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Margin Spacing System Demo</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Basic margin -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Basic Margin</h3>
<div class="bg-gray-200 p-4">
<div class="bg-blue-500 text-white p-4 m-4 rounded">m-4 all sides equal</div>
<div class="bg-green-500 text-white p-4 mx-8 my-4 rounded">mx-8 my-4</div>
<div class="bg-purple-500 text-white p-4 mt-8 mb-2 ml-4 mr-6 rounded">
mt-8 mb-2 ml-4 mr-6
</div>
</div>
</div>
<!-- Auto centering -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">mx-auto Centering</h3>
<div class="bg-gray-200 p-4">
<div class="bg-blue-500 text-white p-4 w-64 mx-auto rounded text-center">
mx-auto centered
</div>
</div>
</div>
<!-- Negative margin -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Negative Margin</h3>
<div class="bg-gray-200 p-8">
<div class="bg-red-500 text-white p-4 -mt-4 -ml-4 rounded">
-mt-4 -ml-4 negative margin
</div>
</div>
</div>
<!-- margin vs padding comparison -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Padding (Inner Spacing)</h3>
<div class="border-2 border-dashed border-blue-300">
<div class="bg-blue-100 p-6">
<div class="bg-blue-500 text-white p-4 rounded text-center">
Content area
</div>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Margin (Outer Spacing)</h3>
<div class="border-2 border-dashed border-green-300 p-6">
<div class="bg-green-500 text-white p-4 rounded text-center m-4">
Content area
</div>
</div>
</div>
</div>
</div>
</body>
</html>
CSS التقليدي مقابل Tailwind يتطلب النهج التقليدي تعيين قيم
marginبشكل فردي لكل عنصر، بينما يستخدم Tailwindmx-autoللتوسيط و-mt-4للهوامش السالبة باستخدام صيغة أكثر بديهية.
نصيحة: يستخدم الهامش السلبي البادئة
-، مثل-m-4و-mt-2، وهي تُستخدم عادةً في التخطيطات المتداخلة وضبط مواقع العناصر.
3. نظام تحديد المقاسات حسب العرض/الارتفاع
يوفر Tailwind مجموعة غنية من فئات تحديد الأحجام، بما في ذلك الأحجام المحددة مسبقًا والقيم التعسفية، مع دعم التصميم المتجاوب.
▶ مثال
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Width/Height Sizing System Demo</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- Fixed widths -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Fixed Widths</h3>
<div class="space-y-2">
<div class="bg-blue-200 w-16 h-8 rounded">w-16</div>
<div class="bg-blue-300 w-32 h-8 rounded">w-32</div>
<div class="bg-blue-400 w-48 h-8 rounded text-white">w-48</div>
<div class="bg-blue-500 w-64 h-8 rounded text-white">w-64</div>
<div class="bg-blue-600 w-96 h-8 rounded text-white">w-96</div>
</div>
</div>
<!-- Percentage widths -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Percentage Widths</h3>
<div class="space-y-2">
<div class="bg-green-200 w-1/2 h-8 rounded">w-1/2 (50%)</div>
<div class="bg-green-300 w-1/3 h-8 rounded">w-1/3 (33.33%)</div>
<div class="bg-green-400 w-2/3 h-8 rounded text-white">w-2/3 (66.67%)</div>
<div class="bg-green-500 w-1/4 h-8 rounded text-white">w-1/4 (25%)</div>
<div class="bg-green-600 w-3/4 h-8 rounded text-white">w-3/4 (75%)</div>
</div>
</div>
<!-- Special widths -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Special Widths</h3>
<div class="space-y-2">
<div class="bg-purple-200 w-full h-8 rounded">w-full (100%)</div>
<div class="bg-purple-300 w-screen h-8 rounded">w-screen (100vw)</div>
<div class="bg-purple-400 w-min h-8 rounded text-white">w-min</div>
<div class="bg-purple-500 w-max h-8 rounded text-white">w-max</div>
<div class="bg-purple-600 w-fit h-8 rounded text-white">w-fit</div>
</div>
</div>
<!-- Min/Max widths -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Min/Max Widths</h3>
<div class="space-y-2">
<div class="bg-orange-200 min-w-[200px] w-32 h-8 rounded">
min-w-[200px] w-32
</div>
<div class="bg-orange-300 max-w-xs h-8 rounded">
max-w-xs
</div>
</div>
</div>
<!-- Height examples -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Heights</h3>
<div class="flex gap-4 items-end">
<div class="bg-blue-500 w-16 h-16 rounded"></div>
<div class="bg-blue-500 w-16 h-24 rounded"></div>
<div class="bg-blue-500 w-16 h-32 rounded"></div>
<div class="bg-blue-500 w-16 h-48 rounded"></div>
<div class="bg-blue-500 w-16 h-64 rounded"></div>
</div>
<div class="mt-4 bg-gray-200 h-screen rounded">
h-screen (100vh)
</div>
</div>
</div>
</body>
</html>
مرجع عام للمقاسات:
| الفئة | الحجم | عدد البكسلات |
|---|---|---|
w-1 |
0.25rem | 4px |
w-4 |
1rem | 16px |
w-8 |
2rem | 32px |
w-16 |
4rem | 64px |
w-32 |
8rem | 128px |
w-64 |
16rem | 256px |
w-96 |
24rem | 384px |
CSS التقليدي مقابل Tailwind يتطلب النهج التقليدي تعيين قيم محددة لـ
widthوheightلكل عنصر، بينما يستخدم Tailwind نظام إعدادات مسبقة قائم على وحدة «rem» يستجيب تلقائيًا لتغيرات حجم الخط.
4. تحديد حجم المربع
تحدد خاصية «Box Sizing» كيفية حساب أبعاد العنصر، مما يؤثر على ما إذا كان الحشو والحدود مشمولين في العرض والارتفاع المحددين.
▶ مثال
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Box Sizing Demo</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- box-border demo -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">box-border (Default)</h3>
<p class="text-gray-600 mb-4">Padding and border are included in the set width and height</p>
<div class="bg-gray-200 p-4">
<div class="box-border w-64 p-8 border-4 border-blue-500 bg-blue-100 rounded">
<p class="text-center">w-64 + p-8 + border-4</p>
<p class="text-center text-sm text-gray-600">Total width = 256px</p>
</div>
</div>
</div>
<!-- box-content demo -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">box-content</h3>
<p class="text-gray-600 mb-4">Padding and border are added outside the set width and height</p>
<div class="bg-gray-200 p-4">
<div class="box-content w-64 p-8 border-4 border-green-500 bg-green-100 rounded">
<p class="text-center">w-64 + p-8 + border-4</p>
<p class="text-center text-sm text-gray-600">Total width = 256 + 64 + 8 = 328px</p>
</div>
</div>
</div>
<!-- Comparison -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Comparison</h3>
<div class="grid grid-cols-2 gap-8">
<div>
<p class="text-center font-medium mb-2">box-border</p>
<div class="bg-gray-200 p-4">
<div class="box-border w-full h-32 p-4 border-4 border-blue-500 bg-blue-200 rounded flex items-center justify-center">
Smaller content area
</div>
</div>
</div>
<div>
<p class="text-center font-medium mb-2">box-content</p>
<div class="bg-gray-200 p-4">
<div class="box-content w-full h-32 p-4 border-4 border-green-500 bg-green-200 rounded flex items-center justify-center">
Larger content area
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
CSS التقليدي مقابل Tailwind يتطلب النهج التقليدي استخدام الخاصية
box-sizing: border-box، في حين يوفر Tailwind اسمين موجزين للفئات:box-borderوbox-content.
نصيحة: يُستخدم
box-borderكقيمة افتراضية في Tailwind (موروثة من إعادة تعيين CSS)، وهو ما يُعد الممارسة الموصى بها في تطوير الويب الحديث.
5. خاصية العرض
تتحكم خاصية «Display» في كيفية عرض العنصر، وهي تشكل أساس التخطيط. يوفر Tailwind مجموعة كاملة من فئات المساعدة الخاصة بعرض العناصر.
▶ مثال
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Display Property Demo</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="min-h-screen bg-gray-100 p-8">
<div class="max-w-4xl mx-auto space-y-8">
<!-- block and inline -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">block vs inline</h3>
<div class="bg-gray-200 p-4 space-y-2">
<span class="block bg-blue-200 p-2">span - block (occupies full row)</span>
<span class="block bg-blue-300 p-2">span - block (occupies full row)</span>
</div>
<div class="bg-gray-200 p-4 mt-4">
<span class="inline bg-green-200 p-2">span - inline</span>
<span class="inline bg-green-300 p-2">span - inline</span>
<span class="inline bg-green-400 p-2">span - inline</span>
</div>
</div>
<!-- inline-block -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">inline-block</h3>
<div class="bg-gray-200 p-4">
<span class="inline-block bg-purple-200 p-4 m-2 rounded">inline-block</span>
<span class="inline-block bg-purple-300 p-4 m-2 rounded">inline-block</span>
<span class="inline-block bg-purple-400 p-4 m-2 rounded text-white">inline-block</span>
<p class="text-sm text-gray-600 mt-2">Combines features of both inline and block</p>
</div>
</div>
<!-- hidden -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">hidden (Hide Element)</h3>
<div class="bg-gray-200 p-4">
<p>This text is visible</p>
<p class="hidden">This text is hidden (display: none)</p>
<p>This text is also visible</p>
</div>
<p class="text-sm text-gray-600 mt-4">
Tip: Use hidden or responsive prefixes to control element visibility
</p>
</div>
<!-- flex and grid -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">flex</h3>
<div class="flex gap-2">
<div class="bg-blue-200 p-4 rounded flex-1 text-center">1</div>
<div class="bg-blue-300 p-4 rounded flex-1 text-center">2</div>
<div class="bg-blue-400 p-4 rounded flex-1 text-center text-white">3</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">grid</h3>
<div class="grid grid-cols-3 gap-2">
<div class="bg-green-200 p-4 rounded text-center">1</div>
<div class="bg-green-300 p-4 rounded text-center">2</div>
<div class="bg-green-400 p-4 rounded text-center text-white">3</div>
<div class="bg-green-500 p-4 rounded text-center text-white">4</div>
<div class="bg-green-600 p-4 rounded text-center text-white">5</div>
<div class="bg-green-700 p-4 rounded text-center text-white">6</div>
</div>
</div>
</div>
<!-- Responsive display -->
<div class="bg-white rounded-lg shadow p-6">
<h3 class="font-semibold mb-4">Responsive Show/Hide</h3>
<div class="bg-gray-200 p-4">
<p class="block md:hidden text-center text-red-500 font-medium">
Only visible on small screens (block md:hidden)
</p>
<p class="hidden md:block lg:hidden text-center text-blue-500 font-medium">
Only visible on medium screens (hidden md:block lg:hidden)
</p>
<p class="hidden lg:block text-center text-green-500 font-medium">
Only visible on large screens (hidden lg:block)
</p>
</div>
</div>
</div>
</body>
</html>
مرجع فئة العرض:
| الفئة | قيمة CSS | الوصف |
|---|---|---|
block |
display: block |
عنصر كتلة |
inline-block |
display: inline-block |
عنصر Inline-block |
inline |
display: inline |
عنصر مضمن |
flex |
display: flex |
تخطيط Flex |
inline-flex |
display: inline-flex |
تخطيط Flex مضمن |
grid |
display: grid |
تخطيط الشبكة |
inline-grid |
display: inline-grid |
تخطيط الشبكة المتضمن |
hidden |
display: none |
إخفاء العنصر |
CSS التقليدي مقابل Tailwind يتطلب النهج التقليدي تعيين الخاصية
displayفي CSS، بينما يستخدم Tailwind أسماء فئات دلالية مثلblockوflexوgridمن أجل كود أكثر قابلية للقراءة.
ملاحظة:
hiddenيزيل العنصر (display: none) تمامًا. استخدمinvisible(visibility: hidden) إذا كنت تريد الاحتفاظ بمسافة العنصر.
❓ أسئلة شائعة
p-1 = 4px، p-2 = 8px، p-4 = 16px، وهكذا دواليك. يمكنك تخصيص مقياس التباعد من خلال الإعدادات.mx-auto التوسيط الأفقي؟mx-auto بتعيين الهامشين الأيمن والأيسر على «تلقائي». وعندما يكون للعنصر عرض ثابت، يقوم المتصفح تلقائيًا بحساب هامشين متساويين على كلا الجانبين، مما يحقق التوسيط الأفقي. ويجب أن يكون العنصر من مستوى الكتلة.w-full وw-screen؟w-full = 100% من عرض العنصر الأصلي، وw-screen = 100vw (عرض نافذة العرض). وعادةً ما يُستخدم عرض نافذة العرض للعناصر التي تحتاج إلى أن تمتد على كامل الشاشة.box-content؟box-border نتائج يمكن التنبؤ بها بشكل أكبر.📖 ملخص
- تتحكم ميزة «Padding» في التباعد الداخلي باستخدام البادئات
p-،px-،py-،pt-،pr-،pb-،pl- - تحدد الخاصية «margin» التباعد الخارجي؛
mx-autoتتيح التوسيط الأفقي - توفر خيار «العرض/الارتفاع» قيمًا ثابتة ونسبًا مئوية ووحدات نافذة العرض وغيرها
- يتم تعيين الإعداد الافتراضي لـ «Box Sizing» على
box-border، حيث يتم تضمين الحشو والحدود في الأبعاد المحددة - تشمل الشاشة الخيارات التالية:
block،inline،flex،grid،hidden، وغيرها من الخيارات - بالاقتران مع البادئات التفاعلية، يمكنك التحكم في ظهور العناصر عبر أحجام الشاشات المختلفة
📝 تمارين
-
⭐ قم بإنشاء مكون بطاقة باستخدام
p-6للتباعد الداخلي، وm-4للهامش، وw-80للعرض، وmx-autoللتوسيط الأفقي -
⭐⭐ إنشاء تخطيط شبكي متجاوب باستخدام مزيج من
display: gridوdisplay: flex، بحيث يكون التخطيط مكونًا من عمود واحد على الأجهزة المحمولة وعمودين على أجهزة الكمبيوتر المكتبية -
⭐⭐⭐ قم بإنشاء تخطيط صفحة كامل يتضمن شريطًا جانبيًّا بعرض ثابت (
w-64) ومنطقة محتوى رئيسية قابلة للتكيف (flex-1)، مع استخدامbox-borderلضمان حسابات الحجم الصحيحة