اذهب إلى المحتوى
  • 0

أيهما افضل flex ام grid

Essam Abdelrahman

السؤال

Recommended Posts

  • 0

اختيارك للتقنية يعتمد على التصميم المراد تنفيذه، عادة يستخدم  display flex إذا كان التصميم به صف واحد او عمود واحد،
والdisplay grid إذا كان التصميم به اصفف وأعمدة متعددة لسهولة التحكم في عرض وطول العناصر مع الإبقاء على مرونتها. 
وعندما تتقدم في بناء صفحات معقدة، ستجد هناك استخداماً لكلتا الخاصيتين، ستجد ان ال grid يساعدك في بناء ال layout الأساسي للصفحات اي في نطاق اوسع، وال flex يساعدك في تنظيم العناصر في الdivs أي في نطاق اصغر.. وهذا هو الاستخدام الرائج. 
لذا عليك فهم واتقان ال grid system 
يمكنك لعب هذه اللعبة الممتعة التي ستجعلك تتقن ال grid 
ملاحظة أخيرة :- ستتعلم لاحقاً اطر عمل ومكتبات css مثل Bootstrap و Tailwind ، وستجد أن هذه المكتبات تسهل عليك عملية البناء بدون تعقيد، ومع الوقت ستجد أن الأمر سهل وليس بالتعقيد الذي تراه الآن. 
تمنياتي بالتوفيق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

نعم، يمكنك الاعتماد على Flexbox (الفليكس) دون الحاجة إلى Grid (الشبكة) في الكثير من حالات التصميم في CSS.

Flexbox (الفليكس) هو طريقة لترتيب العناصر في صف واحد أو عمود واحد. يتيح لك التحكم بسهولة في توزيع المساحة بين العناصر وتوجيهها (أفقيًا أو عموديًا). ولكن يفضل استخدامه عندما يكون لديك تخطيط يتطلب ترتيب العناصر في خط مستقيم (سواء كان ذلك خطًا أفقيًا أو عموديًا)، مثل شريط التنقل، أو عندما تحتاج إلى محاذاة العناصر بطريقة معينة داخل الحاوية.

Grid (الشبكة) هو طريقة لترتيب العناصر في شبكة متعددة الأعمدة والصفوف. يوفر تحكمًا دقيقًا في تخطيط العناصر على الصفحة بالنسبة للأعمدة والصفوف. ولكن يفضل استخدامه عندما تحتاج إلى ترتيب العناصر في تخطيط يشبه الشبكة، مثل معرض الصور أو لوحة المعلومات، حيث تحتاج إلى التحكم في توزيع العناصر عبر صفوف وأعمدة متعددة.
ولكن يمكن الاعتماد على الفليكس دون الشبكة. Flexbox قادر على التعامل مع الكثير من التصميمات والتخطيطات التي تحتاجها في معظم المواقع. ومع ذلك، قد تجد في بعض الحالات الخاصة أن استخدام Grid يمكن أن يجعل الأمور أسهل، خصوصًا عند التعامل مع تخطيطات معقدة تتطلب التحكم في العديد من العناصر في شبكة متعددة الأبعاد.

باختصار يمكنك استخدم الفليكس عندما تحتاج إلى تخطيط بسيط ومرن للعناصر في صف أو عمود.
واستخدم الشبكة لتخطيطات أكثر تعقيدًا تتطلب التحكم في توزيع العناصر في صفوف وأعمدة متعددة.

اختار الأداة المناسبة للمشكلة التي تواجهها. ولكن إذا وجدت راحتك في استخدام Flexbox ويمكنها تلبية احتياجات تصميمك، فمن الممكن جدًا الاعتماد عليها في معظم الأحيان.

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

اضافة الى الاجابات السابقة الوافية التي قدمها زملائي سأقوم باعطائك مثال عملي لتفهم الفكرة اكثر

ف لنضع هذا الكود داخل ملف ال index.html 

<div class="container">
    <div class="item">عنصر 1</div>
    <div class="item">عنصر 2</div>
    <div class="item">عنصر 3</div>
  </div>

ولنبدأ بتعديله عن طريق ال grid  اولا الذي يستخدم لتوزيع العناصر بسهولة ومرونة بين الصفوف والاعمدة 

.container {
    display: grid;
     grid-template-columns: 1fr 1fr 1fr;
    gap: 10px; 
  }
 
  .item {
    background-color: #ddd;
    padding: 20px;
  }

هذا الكود يقوم بتوزيع العناصر على 3 اعدة متساوية بفضل الخاصية  grid-template-columns: 1fr 1fr 1fr;

image.thumb.png.ddc82971409f0423f3fd8abc2f97bf16.png

وان اردت تغييره الى صفوف ف يمكنك ذلك بطريقة بسيطة عبر تغيير هذه الخاصية للتالي :

.container {
    display: grid;
    grid-template-rows: auto; /*هذا يعني ان العناصر تكون في سطر واحد */
    gap: 10px; 
  }
 
  .item {
    background-color: #ddd;
    padding: 20px;
  }
  

image.thumb.png.081849c0b81dad452d1cd5a7b630b1e8.png

وقمت باعطائه خلفية لتظهر الامور بشكل اوضح اي يمكننا الاستنتاج الان ان grid  يستطيع التحكم بالعناصر بمرونة بين افقيا او عموديا 

  • اما بالنسبة ل flex فهو يقوم بعرف العناصر على نفس السطر الواحد ولا يفترض عرضهم بالتساوي على ملئ الشاشة بطريقة افتراضية بل يجب عليك انت تحديد ذلك 

دعنا نأخذ مثال عملي عن طريق هذا الكود 

.container {
    display: flex;
     justify-content: space-between; 
     /* flex-direction: column; 
     height: 300px;  */
    
  }
  
  .container .item {
    background-color: #ddd;
    padding: 20px;
    /* margin-bottom: auto; */
  }

فانه يعطينا العناصر على نفس السطر ايضا ولكن لاحظ اخلاف نتيجة التنسق هنا وبين الصورة السابقة 

image.thumb.png.33f145103f745f70b7d0ec4de3c76e2e.png

وان قمت بتعليق الخاصية       justify-content: space-between; ف سيقوم باظهارهم على الشكل التالي 

image.thumb.png.c1ada24adef8766ceec76722da6c416d.png

اي انها تقوم بوضع العناصر على سطر واحد ولكنها لا تجعل العناصر تمتد على ملئ الشاشة 

اما الأن ف دعنا نزيل التعليقات التي كانت موجودة في الكود السابق لنرى نتيجة ال flex  في الوضع العامودي  ليصبح كالتالي :

 .container {
    display: flex;
      justify-content: space-between;  
     flex-direction: column; 
     height: 200px;  
    
  }
  
  .container .item {
    background-color: #ddd;
    padding: 20px;
    margin-bottom: auto;
  }

لاحظ اننا قمنا باضافة العديد من الاسطر والتنسيقات لجعلها تظر بشكل عمودي عن طريق ال flex  

image.thumb.png.99e289cba17e85ba81bf0849853fffcc.png

بينما عند استخدام ال grid كان ذلك بشكل اسهل ومختصر اكثر 

اذا في النهاية اصبحت على دراية كاملة بالفروقات وطريقة عمل كل منهم يمكنك الاختيار في ما بينهم حسب متطلبات المشروع الذي تعمل عليه 

وبالتوفيق لك 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...