Title
Lorem ipsum dolor sit amet consectetur adipisicing elit. At corrupti excepturi odio.
CSS Grid
إذا كمقدمة ماهو CSS Grid
؟
CSS Grid
هو نظام تخطيط يسمح لك بتقسيم صفحة الويب إلى صفوف وأعمدة قابلة للتعديل. يوفر
CSS Grid
طريقة سهلة
وفعالة لإنشاء تخطيطات متعددة الأعمدة والصفوف في صفحتك.
CSS Grid
، يجب عليك تحديد العناصر التي تريد تقسيمها. يمكن أن تكون العناصر
الأساسية عناصر
HTML المختلفة ، مثل divs
أو sections
. ومن ثم ، يمكنك استخدام خاصية
display
لتعيين نوع العنصر على grid
.
display: grid
هي خاصية CSS تستخدم لتعيين نوع العرض لعنصر HTML إلى شبكة. تسمح للمطورين
بتحديد
العمود والصف داخل عنصر HTML وتحديد كيفية توزيع العناصر داخل الشبكة. في الأساس ، فإنه يحول العنصر الذي تم
تطبيق الخاصية عليه إلى عنصر شبكي.
display: grid
بشكل أفضل ، يمكننا النظر إلى مثال بسيط. لنفترض أن لدينا عنصر div
مع العديد من
العناصر الفرعية داخله. سنستخدم خاصية display: grid
لتحويل هذا العنصر إلى شبكة.
<div class="grid-container">
<div class="item-1">عنصر 1<div>
<div class="item-2">عنصر 2<div>
<div class="item-3">عنصر 3<div>
<div class="item-4">عنصر 4<div>
<div class="item-5">عنصر 5<div>
<div class="item-6">عنصر 6<div>
</div>
.grid-container {
display: grid;
}
في هذا المثال ، نحن نحدد display: grid
للعنصر الرئيسي div. هذا يحول العنصر إلى شبكة. والآن
، يمكننا
البدء في تحديد العمود والصف داخل الشبكة.
grid-template-columns
هي خاصية CSS التي تستخدم في تعريف عدد الأعمدة وعرضها في شبكة
CSS Grid. تسمح
هذه الخاصية للمطورين بتحديد عرض الأعمدة والتحكم في مساحة الشبكة. يتم تحديد الأعمدة باستخدام الوحدات
النسبية أو الثابتة.
<div class="grid-container">
<div class="item-1">عنصر 1<div>
<div class="item-2">عنصر 2<div>
<div class="item-3">عنصر 3<div>
<div class="item-4">عنصر 4<div>
<div class="item-5">عنصر 5<div>
<div class="item-6">عنصر 6<div>
</div>
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
في هذا المثال ، تم تحديد الأعمدة باستخدام grid-template-columns وتم تعيين قيمة 1fr لكل عمود. تتحكم هذه
القيمة في عرض الأعمدة وتحدد النسبة المئوية لعرض كل عمود بالنسبة للشبكة الكاملة. في هذا المثال ، يعني ذلك
أن الشبكة تحتوي على ثلاثة أعمدة متساوية.
.grid-container {
display: grid;
grid-template-columns: 100px 1fr 1fr;
}
في هذا المثال ، تم تحديد العمود الأول بعرض 100 بكسل ، بينما تم تحديد العمودين الآخرين بالحجم نفسه
باستخدام 1fr.
grid-template-columns
تستخدم لتحديد عرض الأعمدة وتحكم في مساحة الشبكة. يمكن
استخدام
grid-template-rows
هي إحدى خصائص CSS Grid التي تقوم بتعريف عدد الصفوف وارتفاع كل صف
في الشبكة.
تستخدم هذه الخاصية لتحديد توزيع العناصر على شبكة العرض.
grid-template-rows
باستخدام أحد الأساليب التالية:
grid-template-rows: repeat(3, 100px);
.
grid-template-rows
:
.grid-container {
display: grid;
grid-template-rows: 100px 200px 150px;
}
في هذا المثال، يتم تعريف شبكة العرض باستخدام خاصية grid-template-rows
وتحديد ارتفاع الصفوف
على التوالي
بـ 100 بكسل و 200 بكسل و 150 بكسل. يمكن وضع العناصر داخل هذه الأعمدة باستخدام خاصية grid-row.
grid-template-rows
تساعد على تحديد عدد الصفوف وارتفاع كل صف في شبكة العرض.
يمكن استخدامها
لتحديد توزيع العناصر على الشبكة بطريقة سهلة وبديهية.
grid-template
هي خاصية مجمعة في نظام تصميم الشبكة Grid والتي تحدد عدد الأعمدة والصفوف
في الشبكة
وتوزيع العناصر داخلها. تسمح هذه الخاصية بتحديد العرض والارتفاع ونوع الوحدات المستخدمة لكل خلية في
الشبكة، بالإضافة إلى توزيع العناصر على الشبكة وذلك باستخدام أسماء المناطق.
grid-template
بعدة طرق، حيث يمكن تحديد مجموعة من الأعمدة والصفوف
باستخدام الفواصل
أو الفواصل الإضافية، وكذلك يمكن تحديد العرض والارتفاع لكل خلية في الشبكة باستخدام قيم الطول المختلفة مثل
px أو em أو % وغيرها.
grid-template
بتحديد توزيع العناصر داخل الشبكة باستخدام أسماء
المناطق. يمكن
تسمية مناطق مختلفة داخل الشبكة باستخدام خاصية grid-template-areas ومن ثم استخدام هذه الأسماء في خاصية
grid-template
لتحديد توزيع العناصر.
grid-template
لتحديد شبكة مكونة من ثلاثة أعمدة
وارتفاع يحدده
المحتوى، وتوزيع العناصر داخل الشبكة باستخدام أسماء المناطق كالتالي:
.grid-container {
display: grid;
grid-template:
"header header header" 50px
"sidebar content content" auto
"footer footer footer" 50px / 1fr 2fr 1fr;
grid-template-areas:
"header header header"
"sidebar content content"
"footer footer footer";
}
.header {
grid-area: header;
}
.sidebar {
grid-area: sidebar;
}
.content {
grid-area: content;
}
.footer {
grid-area: footer;
}
في هذا المثال، تم تحديد شبكة مكونة من ثلاثة أعمدة وثلاث صفوف، وتم توزيع العناصر داخل الشبكة باستخدام
أسماء المناطق. علاوة على ذلك، تم تحديد العرض والارتفاع لكل خلية في الشبكة باستخدام القيم المختلفة، وذلك
باستخدام خاصية grid-template.
grid-column-start
و grid-column-end
و grid-row-start
و
grid-row-end
هي خاصيات تستخدم في نظام تصميم
الشبكة Grid والتي تحدد موقع العنصر داخل الشبكة. تحدد grid-column-start و grid-column-end موقع العنصر على
مستوى الأعمدة وتحدد grid-row-start و grid-row-end موقع العنصر على مستوى الصفوف. يمكن تحديد قيم هذه
الخاصيات باستخدام الأرقام أو باستخدام الكلمات الاحتياطية مثل span و auto.
.item {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 2;
grid-row-end: 4;
}
في هذا المثال، تم تحديد موقع العنصر في الأعمدة من العمود الأول إلى العمود الثالث باستخدام
grid-column-start و grid-column-end. كما تم تحديد موقع العنصر في الصفوف من الصف الثاني إلى الصف الرابع
باستخدام grid-row-start و grid-row-end.
.item {
grid-column: 1 / 3;
grid-row: 2 / 4;
}
في هذا المثال، تم استخدام خاصية grid-column و grid-row لتحديد موقع العنصر في الأعمدة والصفوف بنفس الوقت.
استخدمت قيمة 1 / 3 في grid-column لتحديد موقع العنصر في الأعمدة من العمود الأول إلى العمود الثالث،
واستخدمت قيمة 2 / 4 في grid-row لتحديد موقع العنصر في الصفوف من الصف الثاني إلى الصف الرابع.
grid-area
هي خاصية في نظام تصميم الشبكة Grid والتي تسمح بتحديد موقع العنصر داخل
الشبكة باستخدام
أسماء المناطق. تتكون قيمة هذه الخاصية من أربع قيم مفصولة بالمسافة، حيث تحدد القيم الأولى والثانية موقع
العنصر على مستوى الأعمدة والقيم الثالثة والرابعة موقع العنصر على مستوى الصفوف.
grid-area
.
grid-area
لتحديد موقع عنصر في شبكة مكونة من ثلاثة
أعمدة وثلاثة
صفوف كالتالي:
.item {
grid-area: sidebar;
}
في هذا المثال، تم تحديد موقع العنصر باستخدام اسم المنطقة sidebar التي تم تعريفها في خاصية
grid-template-areas. يمكن تعريف grid-template-areas كالتالي:
.grid-container {
display: grid;
grid-template-areas:
"header header header"
"sidebar content content"
"footer footer footer";
}
في هذا المثال، تم تعريف ثلاث مناطق باسم header و sidebar و footer، وتم تحديد موقع العناصر باستخدام
أسماء المناطق باستخدام خاصية grid-area.
justify-content
و align-content
و align-items
و
place-content
و place-items
هي خصائص في CSS تستخدم
في تنسيق وتحديد موقع العناصر داخل عنصر والتحكم في التباعد والتراص بينهم.
justify-content
: يستخدم هذا الخاصية لتحديد موقع العناصر داخل العنصر على مستوى المحور
الأفقي (الأعمدة)،
حيث يمكن تحديد موقع العناصر بالتأرجح فيما بينها (flex-start, flex-end، center، space-between،
space-around، space-evenly).
align-content
: يستخدم هذا الخاصية لتحديد موقع العناصر داخل العنصر على مستوى المحور
الرأسي (الصفوف)،
حيث يمكن تحديد موقع العناصر بالتأرجح فيما بينها (flex-start, flex-end، center، space-between،
space-around، stretch).
align-items
: يستخدم هذا الخاصية لتحديد موقع العناصر داخل العنصر على مستوى المحور الرأسي
(الصفوف)، حيث
يمكن تحديد موقع العناصر بالتأرجح فيما بينها (flex-start, flex-end، center، baseline، stretch).
place-content
: يستخدم هذا الخاصية لتحديد موقع العناصر داخل العنصر على مستوى المحور
الأفقي والرأسي
(الأعمدة والصفوف)، حيث يمكن تحديد موقع العناصر بالتأرجح فيما بينها (flex-start, flex-end، center،
space-between، space-around، space-evenly، stretch).
place-items
: يستخدم هذا الخاصية لتحديد موقع العناصر داخل العنصر على مستوى المحور الأفقي
والرأسي
(الأعمدة والصفوف)، حيث يمكن تحديد موقع العناصر بالتأرجح فيما بينها (flex-start, flex-end، center،
baseline، stretch).
gap
هي خاصية في CSS تستخدم في نظام تصميم الشبكة Grid و Flexbox لتحديد المسافة بين
العناصر داخل
العنصر الأب.
gap
المصممين على إضافة مسافات بين العناصر بشكل سهل ومرن، مما يؤدي إلى تصميمات
أكثر جمالا
وتنظيما واستخداما للمساحات الفارغة داخل العناصر.
grid-auto-columns
و grid-auto-rows
و grid-auto-flow
هي
خصائص في نظام تصميم الشبكة CSS Grid تستخدم
لتحديد حجم الصفوف والأعمدة المنشأة تلقائياً داخل الشبكة.
grid-auto-columns
: تستخدم لتحديد حجم الأعمدة التي يتم إنشاؤها تلقائياً في الشبكة. يمكن
تحديد قيمة هذه
الخاصية بوحدات الطول المختلفة مثل البكسل أو النسبة المئوية أو الـfr.
grid-auto-rows
: تستخدم لتحديد حجم الصفوف التي يتم إنشاؤها تلقائياً في الشبكة. يمكن تحديد
قيمة هذه
الخاصية بنفس الوحدات المذكورة في خاصية grid-auto-columns.
grid-auto-flow
: تستخدم لتحديد ترتيب وطريقة توزيع العناصر التي لم تتم تحديدها داخل الشبكة
بشكل صريح.
يمكن تحديد قيمتها إما row لتوزيع العناصر في الصفوف بالتسلسل، أو column لتوزيع العناصر في الأعمدة
بالتسلسل، أو dense لتعبئة المساحات الفارغة داخل الشبكة بكل العناصر المتاحة بدلاً من تركها فارغة.
auto
هما وحدتان مهمتان في نظام تصميم الشبكة CSS Grid و Flexbox، وتستخدمان لتحديد
حجم العناصر
داخل النظام.
1fr
: هي وحدة تستخدم لتحديد توزيع العرض أو الارتفاع للعناصر في النظام بناءً على نسبة
محددة. وتعني "جزء
واحد من الفراغ"، حيث يتم تقسيم المساحة المتاحة بين العناصر بناءً على هذه النسبة. على سبيل المثال، إذا
كان لدينا ثلاث عناصر وحجم الشبكة هو 300 بكسل، يمكن تحديد حجم العناصر على النحو التالي: `1fr 2fr 1fr`،
وبالتالي يتم تقسيم المساحة بنسبة 1:2:1 بين العناصر.
auto
: هي وحدة تستخدم لتحديد حجم العنصر بناءً على حجم محتواه. وتعني "تلقائياً"، حيث يتم
تعيين حجم
العنصر بناءً على حجم محتواه. على سبيل المثال، إذا كان لدينا عنصر يحتوي على نص، فسيتم تحديد حجم العنصر
بناءً على حجم النص.
auto
يتمثل في الطريقة التي يتم بها تحديد حجم العنصر. في حين يتم
تحديد حجم العنصر
بناءً على نسبة محددة باستخدام 1fr`، يتم تحديد حجم العنصر بناءً على حجم محتواه باستخدام auto`. ويمكن
استخدام الوحدتين معًا في نظام تصميم الشبكة Grid لتحديد حجم العناصر بشكل مرن ودقيق، وتصميم صفحات الويب
بشكل أفضل.
minmax
و auto-fill
هما خصائص مهمة في نظام تصميم الشبكة Grid في CSS، وتستخدمان لتحديد حجم العناصر
داخل الشبكة.
minmax
: هي دالة تستخدم لتحديد الحد الأدنى والأقصى لحجم العنصر. تتكون الدالة من اثنين من القيم، الأولى
تحدد الحد الأدنى لحجم العنصر، والثانية تحدد الحد الأقصى. على سبيل المثال، يمكن استخدام minmax(100px,
1fr) لتحديد أن العنصر لا يمكن أن يصغر إلى أقل من 100 بكسل، ولا يمكن أن يكبر أكثر من الفراغ المتاح.
auto-fill
: هي خاصية تستخدم مع minmax لتحديد عدد العناصر التي يمكن وضعها داخل الشبكة. تعمل auto-fill
على تكرار العناصر الفرعية حتى يتم ملء المساحة المتاحة، وتتوقف عن إنشاء المزيد من العناصر بمجرد أن يتم
ملء المساحة.
Lorem ipsum dolor sit amet consectetur adipisicing elit. At corrupti excepturi odio.
.grid-container {
.cards {
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr))
}
.card {
margin: 20px;
}
.img {
width: 100%;
}
.img img {
width: 100%;
border-radius: 0 0 50% 0;
}
.text {
padding: 10px;
}
.text h2{
color: #333;
}
.text span {
color: #f45;
}
.text p {
color: #777
}
.links {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 10px;
}
.links button {
border: none;
outline: none;
background-color: #f45;
color: #fff;
border-radius: 5px;
padding: 10px 15px;
font-size: 17px;
}
HTML