CSS before/after с переходами (transitions)

У меня есть иконка-гамбургер, в которой тело блока, содержащего её это средняя линия иконки, а before с after — верхние и нижние линии соответственно. Мне нужно при нажатии на иконку (добавляется специальный класс к кнопке) изменить стили для каждой полосы. Например, среднюю скрыть, а крайние перевернуть, чтобы они образовали крестик. Сначала нужно разобраться с плавным скрытием средней полоски.

Для этого я сделал что-то такое:

        #hamburger { opacity: 0; }
        #hamburger::before { 
            opacity: 1;
        }
        #hamburger::after { 
            opacity: 1;
        }

Как вы понимаете, явное переопределение прозрачности для псевдоэлементов нужно, чтобы они не скрывались вместе со всем элементом. Но это не помогло. Весь гамбургер загадочно исчезает при клике.

В каком-то ресурсе написано, что есть старое свойство visibility, которое во всём идентично opacity, только поддерживает только hidden/visible. Как ни странно, оно работает лучше, и если явно задать видимость для псевдоэлементов, то они останутся видимыми. Но всё равно это свойство не подходит, т.к. мне нужен плавный переход.

Какие есть альтернативы в рамках использования псевдоэлементов и использования transition?


Ответы (0 шт):