Используйте AOS.js с классом вместо атрибута данных

Я хочу использовать AOS.js на своем сайте, но у меня нет возможности добавить необходимые атрибуты данных в DIV страницы.

Вот разметка из документации ( https://michalsnik.github.io/aos/):

<div data-aos="fade-up" data-aos-duration="3000">
    ...
</div>

Моя разметка выглядит так:

<div class="aos-fade-up aos-duration-3000">
    ...
</div>

Есть ли способ использовать AOS.js только с классами?

Во время исследования я нашел аналогичный вопрос: Проблемы с добавлением aos.js с использованием классов. Но на это нет ответа.

Вот код из другого вопроса, но он не работает:

$('.aos-fade-up').each(function(i) {
    $(this).attr('data-aos', 'fade-up');
});

Есть идеи?

1 ответ

Решение

Вы можете попробовать этот фрагмент:

<script>
        function ismatch(str){
            var ret = null;
            var tab = ['data-aos_', 'data-aos-delay_', 'data-aos-duration_', 'data-aos-easing_'];
            Object.values(tab).forEach( function (value) {
                if (String(str).match(value)){
                    ret = str.split('_');
                    return false;
                }
            });
            return ret;
        }
        jQuery(document).ready(function ($) {
            $('.some-class').each(function () {
                var $this = $(this);
                var tab = $this.attr('class').split(' ');
                var keep;
                Object.values(tab).forEach(function (item) {
                    var ello = ismatch(item) 
                    if (ello !== null)
                        $this.attr(ello[0], ello[1]);
                    });
                    
                });
                AOS.init();
            });                     
    </script>

Применение:

<div class="some-class data-aos_fade-down data-aos-delay_100 data-aos-duration_800"></div>```
Другие вопросы по тегам