سؤال في css بخصوص float

  • mjxp7

استخدم الكود التالي

لكن تظهر مساحات فارغة بين العناصر

كيف يمكن التخلص منها بحيث تظهر العناصر خلف بعضها مباشرة بغض النظر عن ارتفاع العناصر ؟

مع تحياتي

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

يوسف سيد أضف ردا

كان هناك لي حديث مع @assassinateur في صفحة اسالني -للأسف :(- الخاصة به توصلنا إلى حل باستخدام css، أتذكر أنه قام باخر تتطوير عليه ورفعه على أحد مواقع رفع الشيفرات لا أتذكره، أتمنى أنه يزال يملكه.

هناك إضافة أيضا بـ jQuery تقوم بنفس العمل ،

@mjxp7 سأبحث عنها وأرسلها هنا إن وجدتها.

الحل بjavascript سهل المشكلة بcss، على العموم وجدته:

يوسف سيد أضف ردا

آسف هذا ليس هو، هذا هو:

اجل هو يعمل :)

لا اعتقد انه يعمل بالشكل المطلوب :

يوسف سيد أضف ردا

انظر ردي الآخر :)، تسرعت في الرد.

@مبرمج بسيط @يوسف سيد شكرا للرد

ساحاول مراجعة الروابط لمعرفة طريقة الحل ان شاء الله

مع تحياتي

extradev أضف ردا

أفهم ما تريده بالضبط .. وقد صارت معي هذه المشكلة والحل هو بالإبتعاد كلياً عن خاصية 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 على الرابط:

extradev أضف ردا

وكذلك text-align:right = float:right و text-align:left = float: left

ملاحظة: خاصية float تفيد جدا في حال أن العناصر المطبق على هذه الخاصية لها إرتفاع ثابت بغض النظر عن العرض

mjxp7 أضف ردا

ما زالت الفراغات موجودة

ربما الخطأ من التطبيق

الا يمكن حل المشكلة دون الجافا سكربت ؟

extradev أضف ردا

دون الجافا سكربت .. أبداً

والحل الوحيد هو Masonry لا غير، لانه سيتعامل مع العناصر بواسطة position:absolute .. لا بال float أو بغيرها

اه الآن الأمور أوضح

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

شكرا جزيلا للرد

مع تحياتي

DeltaForce أضف ردا

لا اعرف مشكلتك بالتحديد لان صفحة المثال تعمل بشكل جيد , على كل حال في float هناك عيب وحيد لاحظته لها هو اختفاء الخلفية احيانا من الصناديق الفرعية الحل كان بوضع هذه الخاصي لدى الصندوق الاب

   div{overflow-x:hidden;}

المشكلة في المساحات الفارغة بين العناصر

في الصورة التالية اشرت لها باللون الاحمر للتوضيح

height بالصناديق قيمتة Auto و يتوسع بحسب المحتوى , حسب مافهمت انت تردي الصناديق بنفس الحجم و الارتفاع لماذاً !,

 طالما ان المحتوى اسفلهم يبقى فارغاً , ان كان الامر له علاقة بالخلفية اوجد صندوق والد parent فوق الصندوقين الموجودان بهما Float و ضع خلفية الصندوق الاصغر في الصندوق الاب , و اجعل اتجاه الخلفية نفس اتجاه الصندوق الصغير (يمين او يسار ) .

بالنسبة للصورة التي وضعتها بها الفراغات تطبيق CSS لتلك الفراغات صحيح 100% لان الصناديق المتتابعة حجمها اقل من الصندول الاول في السطر . و HTML تعرض Render العناصر بالتتابع سطرا سطرا .

"حسب مافهمت انت تردي الصناديق بنفس الحجم "

لدي عناصر بارتفاعات مختلفة و اريد ان تعرض بدون وجود فراغات بين العناصر

مثلا

سكربت اعلانات مبوبة

به قسم للسيارات يشمل 10 موديلات

و قسم آخر للساعات يحوي نوعين فقط

... الخ

هذا التفاوت يسبب فراغات واسعة في الصفحة و هذا ما اريد التخلص منه

ارجو ان تكون الفكرة اوضح الآن

حسنا المثال الوحيد الدي يعمل بحسب طلبك هو اقتراح الاخ @يوسف سيد

ما عليك الا اعطاء جميع صناديق المحتوى الخاصية width: min-content;

amin_alnasra أضف ردا

اخي الحبيب انت بحاجة لاستخدام تقنية flex box للقيام بهذا التماثل في ارتفاع الصناديق واعتماد ارتفاع الصندوق الاطول في الصف .

هذا المثال بالضبط ما تريده

يمكنك ايضاً القراءة اكثر عن هذه الطريقة هنا