Gatsby: [v2] μΆ”κ°€ div 래퍼

에 λ§Œλ“  2018λ…„ 08μ›” 14일  Β·  25μ½”λ©˜νŠΈ  Β·  좜처: gatsbyjs/gatsby

μ΅œμ‹  Gatsbyκ°€μžˆλŠ” λ‚΄ μ‚¬μ΄νŠΈ 쀑 ν•˜λ‚˜μ—μ„œ λ‚΄ λ ˆμ΄μ•„μ›ƒμ΄ μΆ”κ°€ div둜 λž˜ν•‘λ˜μ–΄ μžˆμŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

<div style="outline:none" tabindex="-1" role="group">Normal content</div>

https://next.gatsbyjs.org/μ—μ„œλ„μ΄ λ™μž‘μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
μ™œ κ·ΈλŸ΄κΉŒμš”?

needs more info question or discussion

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@janosh λ‚˜λŠ” 도달 / λΌμš°ν„° κ΄€λ¦¬μžκ°€μ΄ 래퍼 divλ₯Ό λΉ„ν™œμ„±ν™”ν•˜κ±°λ‚˜ μ΅œμ†Œν•œ μ‚¬μš©μž μ •μ˜ν•˜λŠ” 방법을 μ œκ³΅ν•˜μ§€ μ•ŠκΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€. μ €λŠ” μ‹œλ§¨ν‹± HTML의 큰 μ§€μ§€μžμ΄λ©°μ΄ λ¬Έμ œμ— μ§λ©΄ν•˜κΈ° 전에 거의 μ•Œμ§€ λͺ»ν–ˆλ˜ λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•œ 후크 μ—­ν•  λ§Œν•˜λŠ” 또 λ‹€λ₯Έ 래퍼 divλ₯Ό μ²˜λ¦¬ν•΄μ•Όν•œλ‹€λŠ” 점에 μ‹€λ§ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  25 λŒ“κΈ€

@ reach / routerλŠ” ν™”λ©΄ νŒλ…κΈ°κ°€ μ‚¬μ΄νŠΈλ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ν•˜λŠ” μΌν™˜μœΌλ‘œ 포컀슀λ₯Ό μžλ™μœΌλ‘œ 관리 ν•  수 β€‹β€‹μžˆλ„λ‘ μΆ”κ°€ν•©λ‹ˆλ‹€.

https://reach.tech/router/accessibility

λ‚˜λŠ” 이것이 맀우 어리석은 것을 μ•Œκ³  μžˆμ§€λ§Œ λž˜ν•‘ divκ°€ ν•˜λ‚˜λ§Œ 있으면 더 쒋을 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

도달 λ²”μœ„ div에 λŒ€ν•΄ νŠΉλ³„ν•œ 것은 μ•„λ‹Œ 것 κ°™μŠ΅λ‹ˆλ‹€. λŒ€μ‹  html 속성을 μΆ”κ°€ν•˜μ—¬ 도달 λ²”μœ„ divλ₯Ό λž˜ν•‘ id="___gatsby" div와 병합 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆνƒ€κΉκ²Œλ„μ΄ λ‘˜μ„ λ³‘ν•©ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. μ•„λ§ˆλ„ Reactκ°€ 마운트 된 divλ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ @ reach / router둜 μž‘μ—… ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

height: 100% λ₯Ό μΆ”κ°€ν•΄μ•Όν•˜λŠ”λ° class λ˜λŠ” id κ°€ μ—†μŠ΅λ‹ˆλ‹€. μ•±μ—μ„œ μ°Ύμ•„ λ³΄μ•˜μ§€λ§Œ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. id λ₯Ό μ–΄λ–»κ²Œ μΆ”κ°€ ν•  수 μžˆλŠ”μ§€ 말씀해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@colmtuite 그것은 이상적인 μ•„λ‹ˆμ—μš”ν•˜μ§€λ§Œμ΄ κ·Έλ£Ήν™”λΆ€ν„° div 의 μœ μΌν•œ μžμ‹ 인 <div id="___gatsby"> , 당신은 λ‹¨μˆœνžˆ 톡해 νƒ€κ²ŸνŒ… ν•  수 μžˆμŠ΅λ‹ˆλ‹€

#___gatsby > * {
  height: 100%;
}

μ—…λ°μ΄νŠΈ : μ•½κ°„ 더 λ‚˜μ€ 해결책은 @ironblock이 μ œμ•ˆν•œλ³΄λ‹€ ꡬ체적인 선택기λ₯Ό μ—¬κΈ°μ—μ„œ μ‚¬μš©ν•˜λŠ” 것 μž…λ‹ˆλ‹€.

div[role="group"][tabindex] {
  height: 100%;
}

μ—…λ°μ΄νŠΈ 2 : 2018 λ…„μ—λŠ” 그렇지 μ•Šμ•˜μ§€λ§Œ μš”μ¦˜μ—λŠ” 문제의 div IDκ°€ gatsby-focus-wrapper μž…λ‹ˆλ‹€. λ”°λΌμ„œ μ„ νƒκΈ°λŠ” 훨씬 덜 λͺ¨ν˜Έ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

#gatsby-focus-wrapper {
  height: 100%;
}

spit

κ΄€λ ¨ 문제 : https://github.com/reach/router/issues/63

λ‚˜λŠ” 개인적으둜 이것이 잘λͺ»λœ 것이며 μŠ€νƒ€μΌμ΄ μ§€μ •λœ ꡬ성 μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ‚¬λžŒλ“€μ—κ²Œ 문제의 원인이라고 μƒκ°ν•©λ‹ˆλ‹€.

@kaishin 당신이 μ˜λ―Έν•˜λŠ” λ°”λ₯Ό ν™•μž₯ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? μ˜€ν•΄κ°€ μ •ν™•νžˆ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@janosh λ‚˜λŠ” 도달 / λΌμš°ν„° κ΄€λ¦¬μžκ°€μ΄ 래퍼 divλ₯Ό λΉ„ν™œμ„±ν™”ν•˜κ±°λ‚˜ μ΅œμ†Œν•œ μ‚¬μš©μž μ •μ˜ν•˜λŠ” 방법을 μ œκ³΅ν•˜μ§€ μ•ŠκΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€. μ €λŠ” μ‹œλ§¨ν‹± HTML의 큰 μ§€μ§€μžμ΄λ©°μ΄ λ¬Έμ œμ— μ§λ©΄ν•˜κΈ° 전에 거의 μ•Œμ§€ λͺ»ν–ˆλ˜ λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•œ 후크 μ—­ν•  λ§Œν•˜λŠ” 또 λ‹€λ₯Έ 래퍼 divλ₯Ό μ²˜λ¦¬ν•΄μ•Όν•œλ‹€λŠ” 점에 μ‹€λ§ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ§€κΈˆ λ‹Ήμ‹ μ˜ μš”μ μ„ μ΄ν•΄ν•˜κ³  맀우 λ™μ˜ν•©λ‹ˆλ‹€. λΉ„μ˜ 미적 마크 업에 λŒ€ν•΄μ„œλ„ λ˜‘κ°™μ΄ λŠλ‚λ‹ˆλ‹€.
λ‹Ήμ‹ μ˜ λŒ“κΈ€ 끝에 ν˜Όλž€ μŠ€λŸ¬μ› μ–΄μš”

... μŠ€νƒ€μΌμ΄ μ§€μ •λœ ꡬ성 μš”μ†Œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ‚¬λžŒλ“€μ˜ 문제의 μ›μΈμž…λ‹ˆλ‹€.

styled-components μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€μ΄ μ™œ 영ν–₯을받지 μ•ŠλŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œκ°€ λ„ˆλ¬΄ λΆˆν•©λ¦¬ν•œ ν•΄κ²°μ±…μœΌλ‘œ μ’…κ²°λ˜μ—ˆλ‹€κ³  믿을 수 μ—†μŠ΅λ‹ˆλ‹€.

@ danielo515 κΈ€μŽ„, λ¬Έμ œλŠ” 쒅속성과 관련이 μžˆμœΌλ―€λ‘œ λ‹€μ†Œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.

이 주석은 CSS ν•΄κ²° 방법을 μ œκ³΅ν•©λ‹ˆλ‹€ : https://github.com/reach/router/issues/63#issuecomment -428050999

μŠ€νƒ€μΌ ꡬ성 μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€μ΄ 영ν–₯을받지 μ•ŠλŠ” 이유λ₯Ό μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€.

@janosh 이 호λ₯Ό μ—° μ΄ν›„λ‘œ μŠ€νƒ€μΌλ§μ— μ•„λ¬΄λŸ° λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ—¬κΈ°μ„œ μ‹€μ œλ‘œ λ¬Έμ œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@LekoArts μΆ©λΆ„ν•œ μ½˜ν…μΈ κ°€μ—†λŠ” κ²½μš°μ—λ„ μ°½ ν•˜λ‹¨μ— λ°”λ‹₯ 글을 μœ μ§€ν•˜κΈ° μœ„ν•΄ CSS μ†”λ£¨μ…˜μ„ μ€‘λ‹¨ν•˜λŠ” styled-components ν•˜κ³  CSS 선택기λ₯Ό ν•΄κ²°ν•˜λŠ” 방법을 μ•Œκ³  μžˆλ‹€κ³ ν•΄μ„œ 래퍼 div 더 이상 의미 둠적이지 μ•ŠμŠ΅λ‹ˆλ‹€.

기본적으둜 본문의 아무 κ³³μ΄λ‚˜ 클릭 ν•œ λ‹€μŒ Tab ν‚€λ₯Ό λˆ„λ₯΄λ©΄ κ°€μž₯ κ°€κΉŒμš΄ μ΄ˆμ μ„ 맞좜 μˆ˜μžˆλŠ” μš”μ†Œμ— 초점이 λ§žμΆ°μ§‘λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜μ΄ λž˜νΌλŠ” 본문을 ν΄λ¦­ν•˜λ©΄ λž˜νΌμ— 초점이 맞좰져 νƒ­ μˆœμ„œκ°€ μš”μ†Œ κ·Όμ²˜κ°€ μ•„λ‹Œ 처음으둜 μž¬μ„€μ •λ¨μ„ μ˜λ―Έν•©λ‹ˆλ‹€. 이것이 μ ‘κ·Όμ„± λ¬Έμ œμΈμ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ μš”μ†Œ 근처λ₯Ό 클릭 ν•œ λ‹€μŒ 탭을 눌러 μ΄ˆμ μ„ λ§žμΆ”λ €κ³  ν•  λ•Œ 발견 ν•œ κ²ƒμž…λ‹ˆλ‹€.

@colmtuite height : 100vh;

νŠΈμœ— λ‹΄μ•„ κ°€κΈ°
λ˜λŠ” ν”Œλ ‰μŠ€λ‘œ

div[role="group"][tabindex] {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
}

@Schmerb 100vhλ₯Ό CSS μ „μš© 클래슀둜 μ„€μ •ν•˜λŠ” 것이 생성 된 μ½”λ“œλ₯Ό μ‘°μž‘ν•˜λŠ” 것보닀 더 νŽΈλ¦¬ν•œ 방법이라고 μƒκ°ν•©λ‹ˆλ‹€.

λΏ‘ 빡뀨
λΆ„λͺ…νžˆ ν–ˆμ–΄μ•Όν–ˆλŠ”λ° ... 100vh 앱이 λ·°ν¬νŠΈμ™€ 같은 크기의 κ³ μ • 된 높이λ₯Ό κ°–κΈ°λ₯Ό μ›ν•œλ‹€λ©΄ μ’‹μŠ΅λ‹ˆλ‹€ ...

κ·ΈλŸ¬λ‚˜ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  곡간을 μ°¨μ§€ν•˜κΈ° μœ„ν•΄ 앱이 ν•„μš”ν•œ 경우

(본질적으둜 height: 100% 가진 λͺ¨λ“  μ‚¬λžŒμ΄ μ‹œλ„ν•˜μ§€λ§Œ λΆ€λͺ¨κ°€ 정해진 ν‚€κ°€ μ—†κΈ° λ•Œλ¬Έμ— μ‹€νŒ¨ ν•  κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€)

그런 λ‹€μŒ Flexbox κ΅¬μΆœν•©λ‹ˆλ‹€.

λ‚΄ ꡬ체적인 사둀λ₯Ό 더 λͺ…ν™•νžˆν•˜κΈ° μœ„ν•΄ 두 μ‹œλ„μ˜ 슀크린 μƒ· :
νŒŒλž€μƒ‰ / 주황색 ν…Œλ‘λ¦¬λŠ” /page ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€. Gatsbyκ°€ λ°°μΉ˜ν•˜λŠ” μž„μ˜μ˜ '후크'divλŠ” κ³΅λ°±μž…λ‹ˆλ‹€. height: 100vh ν•˜λ©΄ 곡백이 뷰포트의 맨 μ•„λž˜λ‘œ ν™•μž₯λ˜λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© flex μ£Όμš” μΆ•μœΌλ‘œν•˜λŠ” (μ „ν™˜ flex-direction: column λŒ€μ‹  기본의 flex-direction: row )κ³Ό μž¬μ‚°μ„ ν”Œλ ‰μŠ€λŠ” μ„±μž₯에, 당신은 맀우 잘 λ³Ό μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  곡간을 차지 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

height: 100vh;
Screen Shot 2019-03-18 at 3 40 21 PM

display: flex; flex-direction: column; flex-grow: 1;
Screen Shot 2019-03-18 at 3 40 11 PM

λ‚΄κ°€ λ³΄λŠ” λͺ¨λ“  것은 μ‘΄μž¬ν•˜μ§€ 말아야 ν•  λ¬Έμ œμ— λŒ€ν•œ ν•΄κ²° λ°©λ²•μž…λ‹ˆλ‹€.
λŒ€μƒ λΈŒλΌμš°μ €κ°€ Flexboxλ₯Ό μ§€μ›ν•˜μ§€ μ•ŠμœΌλ©΄ μ–΄λ–»κ²Œν•©λ‹ˆκΉŒ?

슀크둀이 ν•„μš”ν•  λ•Œ 크둬에 이쀑 μŠ€ν¬λ‘€λ°”κ°€ ν‘œμ‹œλ˜λŠ”`height : 100vh 'λ₯Ό μ„€μ •ν•  λ•Œ 버그도 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

λΉ„μŠ·ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법은 height: 100vh; μ‚¬μš©ν•˜λŠ” 것보닀 min-height: 100vh; λ₯Ό λž˜ν•‘ Layout ꡬ성 μš”μ†Œμ— μΆ”κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그것을 μ„€μ •κ³Ό 같은 것과 κ²°ν•©ν•˜λ©΄ :
grid-template-areas: 'Header' 'Content' 'Footer';
grid-template-rows: auto 1fr auto;
min-height: 100vh;

이제 λž˜ν•‘ ꡬ성 μš”μ†ŒλŠ” 항상 _ μ΅œμ†Œν•œ _ λ·° 포트의 λ†’μ΄κ°€λ˜μ§€λ§Œ μ½˜ν…μΈ κ°€ 슀크둀이 ν•„μš”ν• λ§ŒνΌ μΆ©λΆ„νžˆ 크면 λ°”λ‹₯ κΈ€ μš”μ†Œκ°€ ν™”λ©΄ ν•˜λ‹¨μ— μœ μ§€λ˜λ„λ‘ ν‘Έμ‹œλ©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ (크지 만!) μ•ˆνƒ€κΉκ²Œλ„ κ·Έλ¦¬λ“œλŠ” ν”Œλ ‰μŠ€ λ°•μŠ€λ³΄λ‹€ λΈŒλΌμš°μ € 지원이 적지 만 κ°œμΈμ μœΌλ‘œλŠ” 'ν•΄ν‚€'λŠλ‚Œμ΄ λœν•©λ‹ˆλ‹€.

ν”Œλ ‰μŠ€ μ§€μ›μ„ν•˜μ§€ μ•ŠλŠ” 데 λ„μ›€μ΄λ˜λŠ” λŒ€λ‹΅μ€ μ•„λ‹ˆμ§€λ§Œ νŽ˜μ΄μ§€ ν•˜λ‹¨μ— λ°”λ‹₯ 글을 λΆ™μ΄λŠ” κΉ”λ”ν•œ λ°©λ²•μΌκΉŒμš”?

λΆˆν–‰νžˆλ„ 문제의 μ½”λ“œ 쀄이 접근성을 닀루지 만 μ ‘κ·Όμ„± 였λ₯˜λ„ λ°œμƒν•©λ‹ˆλ‹€. https://github.com/reach/router/issues/257에 문제λ₯Ό κΈ°λ‘ν–ˆμŠ΅λ‹ˆλ‹€

100vh λŠ” Android λΈŒλΌμš°μ €μ™€ λ‹€λ₯Έ 의미 일 수 μžˆμŠ΅λ‹ˆλ‹€.
λΉ λ₯Έ 인터넷 κ²€μƒ‰μ—μ„œ 예제 곡개 : https://stackoverflow.com/q/30148956

μ–΄λ–€ 이유둜 div[role="group"][tabindex] λŠ” ν•΄λ‹Ή div에 μ–΄λ–€ β€‹β€‹μŠ€νƒ€μΌλ„ μ μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ID #gatsby-focus-wrapper 을 μ§€μ •ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€.

높이 λ¬Έμ œμ— λŒ€ν•œ 합리적인 해결책이 아직 μ—†μŠ΅λ‹ˆκΉŒ?

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰