Ответы пользователя по тегу Vue.js
  • Как в проект Vue подключить Semantic UI или подобные библиотеки?

    Torin_Asakura
    @Torin_Asakura
    Lead Architect
    Привет.
    Покажи, что консоль пишет.
    UPD: Ну и можешь шарнуть код в гитхабе, могу потыкать.
    Ответ написан
    Комментировать
  • Как сделать такой эффект?

    Torin_Asakura
    @Torin_Asakura
    Lead Architect
    В вашем примере речь идёт о простом expandBlock с использованием директивы transition.
    Фишка в том, что текст изначально подгружен и живёт в доме, "слушать" изменения дом-ноды в данном случае нет необходимости и что-то грузить после инициализации объекта.
    Нужно просто:
    - подгружать объекты в дом
    - дождаться коллапс/экспанд
    - отдать уже подгруженный контент
    Vue.directive('expand', {
        inserted: function(el, binding)
        {
            if (binding.value !== null)
            {
                function calcHeight()
                {
                    const currentState = el.getAttribute('aria-expanded')
    
                    el.classList.add('u-no-transition')
                    el.removeAttribute('aria-expanded')
                    el.style.height = null
                    el.style.height = el.clientHeight + 'px'
                    el.setAttribute('aria-expanded', currentState)
    
                    setTimeout(function()
                    {
                        el.classList.remove('u-no-transition')
                    })
                }
    
                el.classList.add('expand')
                el.setAttribute('aria-expanded', (binding.value) ? 'true' : 'false')
                calcHeight()
                window.addEventListener('resize', calcHeight)
            }
        },
        update: function(el, binding)
        {
            if (el.style.height && binding.value !== null)
            {
                el.setAttribute('aria-expanded', (binding.value) ? 'true' : 'false')
            }
        },
    })
    
    var app = new Vue({
        el: '#app',
        data: {
            isExpanded: false
        }
    })
    Ответ написан
    3 комментария