모바일에서 사용자 카드가 열리지 않습니다

2.6.0.beta6 (3e1b94c227)로 업데이트한 후 모바일에서 사용자 카드가 열리지 않습니다. 메타에서 테스트해 보았지만 문제는 없었습니다. 아마도 우리의 디스커스가 RTL(오른쪽에서 왼쪽으로) 방식이기 때문에 이런 문제가 발생한 것 같습니다.

데스크톱에서는 문제가 없으나, 모바일에서는 사용자의 이미지를 탭하면 카드가 열리지 않고, 다시 탭하면 프로필로 진입합니다.

에러 로그는 없습니다 …

구성 요소가 없는 기본 템플릿으로 테스트를 수행했습니다.

다음 플러그인들을 사용 중입니다:

3개의 좋아요

RTL에서 다음 클래스들을 찾을 수 없습니다:

웹 인터페이스를 통해 업데이트를 수행했기 때문에 이 파일이 컴파일되지 않은 것일 수 있습니다.

가능성은 낮지만, 불가능하지는 않습니다. 콘솔을 통해 다시 빌드해 볼 수 있을까요?

1개의 좋아요

네, 내일 그렇게 하려고 계획하고 있었습니다. 어제는 문제를 해결하기 위해 해당 코드를 테마에 임시로 추가해 두었습니다.

이 문제를 재현할 수 있습니다. R2의 버그로 보입니다.

컴파일러에 :rtl 옵션이 전달되면 CSS가 R2를 통해 처리되어 RTL 관련 변경 사항이 적용됩니다.

이 방식은 잘 작동하지만, 어떤 이유로 인해 CSS가 뒤섞여 반환되는 엣지 케이스에 직면하는 것 같습니다. 모바일 내비게이션 메뉴의 페이드 효과를 생성하는 패턴을 사용하는데, 그 모습은 다음과 같습니다.

이것이 우리가 이 패턴을 사용하는 유일한 곳은 아니며, 단지 예시일 뿐입니다.

R2가 처리하기에는 이 패턴이 너무 복잡한 것 같습니다. RGBA 함수를 호출하고 CSS 변수를 전달한 후, 그 위에 스탑(stop)도 추가하고 있기 때문입니다.

R2를 통해 이 코드가 처리되면 다음과 같은 결과가 반환됩니다.

R2를 끄면 (RTL 로컬 환경에서도) 다음과 같은 결과가 나옵니다.

correct css

뒤섞인 CSS는 컴파일러를 혼란스럽게 하여 해당 규칙 이후의 모든 CSS를 적용되지 않는 무용한 코드로 압축시켜 버립니다.

따라서 그 스타일시트 이후에 위치한 여러 스타일시트가 모바일 RTL 환경에서 로드되지 않습니다. 사용자 카드 스타일시트가 그중 하나입니다.

스탑을 제거하여 해당 패턴의 복잡도를 낮추어 보았더니 작동하는 것 같습니다. 즉, 다음과 같은 코드를

background: linear-gradient(
  to right,
  rgba(var(--secondary-rgb), 0) 0%,
  rgba(var(--secondary-rgb), 1) 100%
);

다음과 같이 변경했습니다.

background: linear-gradient(
  to right,
  rgba(var(--secondary-rgb), 0),
  rgba(var(--secondary-rgb), 1)
);

이는 시각적인 변화를 일으키지 않습니다. 왜냐하면 그것이 기본적으로 사용되는 스탑 값이기 때문입니다. 또한 이 방법으로 문제가 해결됩니다.

여기서 이 패턴을 사용하는 모든 곳에 업데이트를 적용하기 위해 PR을 보냈습니다.

문제를 보고해 주셔서 감사합니다 @nildarar :+1:

7개의 좋아요

와, 설명이 정말 완벽하고 유용했네요, 그리고 그 버그는 정말 기괴했네요!

위에서 언급하신 버그 중 일부는 이전에 본 적이 있지만, CSS를 오버라이드해서 숨기려고 시도했습니다.

이 문제를 이렇게 인내심 있고 세심하게 해결해 주셔서 감사합니다. 그리고 작성해 주신 완전한 설명에도 감사드립니다 :pray: :slightly_smiling_face:

4개의 좋아요