استخدم الكود التالي
لكن تظهر مساحات فارغة بين العناصر
كيف يمكن التخلص منها بحيث تظهر العناصر خلف بعضها مباشرة بغض النظر عن ارتفاع العناصر ؟
مع تحياتي
استخدم الكود التالي
لكن تظهر مساحات فارغة بين العناصر
كيف يمكن التخلص منها بحيث تظهر العناصر خلف بعضها مباشرة بغض النظر عن ارتفاع العناصر ؟
مع تحياتي
كان هناك لي حديث مع @assassinateur في صفحة اسالني -للأسف :(- الخاصة به توصلنا إلى حل باستخدام css، أتذكر أنه قام باخر تتطوير عليه ورفعه على أحد مواقع رفع الشيفرات لا أتذكره، أتمنى أنه يزال يملكه.
هناك إضافة أيضا بـ jQuery تقوم بنفس العمل ،
@mjxp7 سأبحث عنها وأرسلها هنا إن وجدتها.
الحل بjavascript سهل المشكلة بcss، على العموم وجدته:
آسف هذا ليس هو، هذا هو:
لا اعتقد انه يعمل بالشكل المطلوب :
أفهم ما تريده بالضبط .. وقد صارت معي هذه المشكلة والحل هو بالإبتعاد كلياً عن خاصية float .. الطريقة كالتالي:
العنصر الكونتينر container او الأب .. من خلاله تحدد إتجاه العناصر بالنسبة للعنصر الإبن direction:rtl = float:right و direction:ltr = float:left.. مثل ما قلنا الدايركشن نتيجته للعنصر الإبن وليس الأب
أما العنصر الإبن فببساطة أعطه الخصائص التالية في css .. ـ
display: inline-block
vertical-align: top (or bottom)
ملاحظة مهمة بما أن العنصر الإبن له خاصية ال inline بالتالي سيأخذ خصائص النص في المسافة وبالتالي تنسيق الكود لن يجدي نفعاً .. مثال
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
خاطئة .. والصحيح
<div class="parent"><div class="child"></div><div class="child"></div><div class="child"></div></div>
وإذا الطريقة التي شرحتها ليست هي المقصودة .. فبالتأكيد أنت تقصد الـ Masonry على الرابط:
ما زالت الفراغات موجودة
ربما الخطأ من التطبيق
الا يمكن حل المشكلة دون الجافا سكربت ؟
لا اعرف مشكلتك بالتحديد لان صفحة المثال تعمل بشكل جيد , على كل حال في float هناك عيب وحيد لاحظته لها هو اختفاء الخلفية احيانا من الصناديق الفرعية الحل كان بوضع هذه الخاصي لدى الصندوق الاب
div{overflow-x:hidden;}
المشكلة في المساحات الفارغة بين العناصر
في الصورة التالية اشرت لها باللون الاحمر للتوضيح
height بالصناديق قيمتة Auto و يتوسع بحسب المحتوى , حسب مافهمت انت تردي الصناديق بنفس الحجم و الارتفاع لماذاً !,
طالما ان المحتوى اسفلهم يبقى فارغاً , ان كان الامر له علاقة بالخلفية اوجد صندوق والد parent فوق الصندوقين الموجودان بهما Float و ضع خلفية الصندوق الاصغر في الصندوق الاب , و اجعل اتجاه الخلفية نفس اتجاه الصندوق الصغير (يمين او يسار ) .
بالنسبة للصورة التي وضعتها بها الفراغات تطبيق CSS لتلك الفراغات صحيح 100% لان الصناديق المتتابعة حجمها اقل من الصندول الاول في السطر . و HTML تعرض Render العناصر بالتتابع سطرا سطرا .
"حسب مافهمت انت تردي الصناديق بنفس الحجم "
لدي عناصر بارتفاعات مختلفة و اريد ان تعرض بدون وجود فراغات بين العناصر
مثلا
سكربت اعلانات مبوبة
به قسم للسيارات يشمل 10 موديلات
و قسم آخر للساعات يحوي نوعين فقط
... الخ
هذا التفاوت يسبب فراغات واسعة في الصفحة و هذا ما اريد التخلص منه
ارجو ان تكون الفكرة اوضح الآن
حسنا المثال الوحيد الدي يعمل بحسب طلبك هو اقتراح الاخ @يوسف سيد
ما عليك الا اعطاء جميع صناديق المحتوى الخاصية width: min-content;
اخي الحبيب انت بحاجة لاستخدام تقنية flex box للقيام بهذا التماثل في ارتفاع الصناديق واعتماد ارتفاع الصندوق الاطول في الصف .
هذا المثال بالضبط ما تريده
يمكنك ايضاً القراءة اكثر عن هذه الطريقة هنا
التعليقات