-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] Refactor/#628 시맨틱 태그, 웹 표준, 웹 접근성 검토 #629
Conversation
TopicCard 컨테이너 및 리스트도 수정한다. Image 공통 컴포넌트에 aria-hidden 속성을 추가하여 필요한 상황에만 사용할 수 있도록 한다.
aria-live 를 사용하는 로직을 useAriaLive 훅으로 분리하고 aria-label을 추가하여 사용성을 높인다.
in progress.. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아따 웹 접근성 이거 다 하기 힘들었을텐데 너무 고생했습니다 세인!! 궁금한게 많지는 않아서 바로 approve 할게용 ~!!
tabIndex={ARIA_FOCUS} | ||
role="button" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
스크린리더에 이로운 role까지 주다니 굿 👍
|
||
export const ARIA_FOCUS = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오.. 그 tabIndex를 하나로 통일해도 순서대로 잘 가던가요 ?!!! 저는 안 갔어서 각자 우선순위에 맞게 값을 줬었는데!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
네 저도 안되는 걸로 인지했었는데 목표한 탭 포커스가 모두 0으로 순차적이라면 가능하더군요. MDN에 의하면 대화형(input 등) 콘텐츠는 tabIndex의 값이 0이 기본값이고, 비 대화형은 -1이 기본값이라고 하네요. 원래 저희가 목표한 포커스 순서는 보통 input -> input -> textarea -> button
이와 같고 이를 위해 1, 2, 3, 4, 등등 양수값을 지정해주었었죠.
하지만 0, 0, 0, 0 으로 순서만 맞다면 DOM 순서대로 차례로 포커스가 먹고 이는 1, 2, 3, 4 를 지정한것과 같은 효과를 보았습니다. 이 원리에 대해서는 좀 더 자세히 알아볼 필요가있을거 같은데 혹시 알고 계신내용이 있다면 공유 부탁드립니답~
<MoreReplyButton onClick={toggleSeeMore}> | ||
<MoreReplyButton | ||
onClick={toggleSeeMore} | ||
aria-label={seeMore ? '답글 숨기기' : '답글 보기'} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오호 역할이 바뀔 때도 aria-label이 구분되게 해주셨군요!!! 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오호 실시간 갱신 정보를 읽기 위한 custom hook이라 좋은데요? 처음엔 세인의 강의가 필요했었는데 사용처를 확인하니 이해할 수 있었습니다! 굿!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요즘 추상화에 대해서 생각이 많아지더군요.. 저희 코드 리팩토링 할 때 토스 진유림님의 발표를 참고하면 좋지 않을까싶습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
접근성 지저분하게 있었는데 깔끔해지네여
@@ -90,6 +90,7 @@ function TopicInfo({ | |||
|
|||
return ( | |||
<Flex | |||
as="article" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as라는 속성을 처음보네요!! 와우 찾아보긴 했는데 웹 성능 최적화를 위하여 추가해주신 걸까요?!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아뇽 이건 시맨틱 태그를 위한 작업입니다. 원래 const Component = styled.div; 이런식으로 선언한 스타일드 컴포넌트라고 해도 <Component as="artcle" ... /> 로 as prop 을 지정할 경우 const Component = styled.article; 로 선언한 것과 같은 효과를 봅니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
사실 접근성 거의 모르는데 잘 배웠습니다~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
접근성 지저분하게 있었는데 깔끔해지네여
작업 대상
📄 작업 내용
시맨틱 태그
웹 접근성
웹 표준
🙋🏻 주의 사항
스크린샷
📎 관련 이슈
close #628
레퍼런스