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

السؤال

نشر

السلام عليكم ورحمة الله وبركاته لدي مشكلة في تطبيق الانميشن عند الفلترة في ال grid layout حيث ان الانميشن لا تطبق من اول مرة او بالأحرى عندما يكون كل العناصر موجودة و اريد فلترتها ، لا تطبق الانميشن الا عند الضغط على فلتر  او زر ثانٍ ، هذا ديمو المشروع الذي اعمل عليه ،https://creative-lollipop-f36a4c.netlify.app/

لم اعرف المشكلة و عانيت جدا في حلها 

في المرفق تجد ملف المشروع و ايضا فيديو توضيحي للمشكلةو بارك الله فيكم

Abraj-deployed.zip

Recommended Posts

  • 0
نشر

لا مشكلة لديك، قمت بإختبار المشروع سواء بشكل محلي أو رابط netlify لا يوجد مشكلة تفقد الفيديو:

ربما المشكلة لديك هي في الكاش (الملفات المؤقتة) حاول إعادة تحديث الصفحة بالضغط على CTRL + F5 أيضًا حاول تحديث المتصفح.

  • 0
نشر

شكرا على ردك اللطيف المشكلة في الflex او ال grid layout  كما في المرفق و ليس في ال masonry layout ، قم بالانتقال الى photos مباشرة لا تطبق الانميشن كذلك الامر اذا اخترت من ال checkbox, فان الانميشن لا تطبق مباشرة

 

 

17079886628421139039718002939387.jpg

  • 0
نشر (معدل)

شكرا لك على مساعدتي حاولت حذف الكلاس فظهرت مشكلة اخرى و هي اختفاء العناصر لان الكلاس المضاف اليه انميشن  opacity و transform forwards بحيث يطبق جميع الcss عند انتهاء الانيمشين ، و اذا قمت بحذفه تختفي العناصر، هذه المشكلة عقدتني نفسيا و عجزت حتى الآن على حلها، 

تم التعديل في بواسطة Mohammad Kiblawi
  • 0
نشر

هناك خطأين لديك فى الكود .

  • اولا فى ملف ال script.js حين تغير ال layout الى ال flex يجب ان يتم استدعاء AOS.refresh() حيث ان ال flex يكون غير مرئى فى بداية تحميل الصفحة ولذلك لا يتم تحميل ال animation حيث يجب ان يكون ظاهر فى الصفحة حتى يعمل جيدا .
  • ثانيا فى ملف ال style.css انت تضع ال opacity ب 0 فى ال flex layout للصور لذلك ال animation لا يعمل جيدا يجب ان تحذف ال opacity وتجعلها فقط ب 0 اذا لم يكن قد حدث اى animation .

فى سطر 83 فى ملف ال Script.js قم بتبديل الدالة بهذا الكود

//add active class to the layout style
const layouts=document.querySelectorAll('.layout span')
layouts.forEach(layout=>{
    layout.addEventListener('click',function(){
        if (this.classList.contains('active')) {
            return;
        }
        const dataLayout=this.dataset.layout;
        //add active for layout btns
        layouts.forEach(layout =>{
            layout.classList.remove('active');
        })
        layout.classList.add('active');
        
        
         // Hide all layout containers
    const layoutContainers = document.querySelectorAll('.masonry-gallery');
    layoutContainers.forEach(container => {
      container.classList.remove('active');
    });
    //Remove the animation class from the images,videos (media)
    mediaElements.forEach(function (media) { 
        media.classList.remove('fade-in-up');
     })
     // Show the layout container with the corresponding layout attribute
     const activeContainer = document.querySelector(`.masonry-gallery[data-layout="${dataLayout}"]`);
     activeContainer.classList.add('active');
     //Get the images, vidoes of the active layout
     const images = activeContainer.querySelectorAll('.masonry-image');
     images.forEach(function(img){
        // img.classList.add('fade-in-up');
        // setTimeout(function(){
        //     img.classList.remove('fade-in-up');
        //     // img.classList.add('show')
        // },1000)
     })
    
     if(activeContainer.classList.contains('grid')){
        masonry.layout();
     }
     else{
        AOS.refresh();
     }
    })
})

وفى ملف ال style.css سطر 426 قم بتبديله بهذا الكود 

.gallery-items .flex.masonry-gallery .masonry-image{
    /* width: 18rem; */
    width: 100%;
    height: 25rem;
    margin-right: 0.85rem;
    /* transition: all 0.3s ease-out; */
    /* animation: fadeInUp 1s ease-out forwards ;  */
}
.gallery-items .flex.masonry-gallery .masonry-image:not(.aos-animate) {
    opacity: 0;  
}

وقد قمت برفع الملفات لتستخدمها اذا اردت.

ولكنك ستجد مشكلة اخرى وهى انه يحدث delay فى ال animation وهذا سببه عدة اخطاء فى الكود من ال style و ال js ولكن حاليا ال animation تعمل جيدا.

واذا كان هناك اى شئ اخر فلتخبرنى

script.js style.css

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...