π‘ issue6 storybook μμ styled component css prop μ μ©μ΄ μλλ€λ©΄? π‘ λ¬Έμ νμ μ€ν νκ²½ Next 13 Storybook 7.0.4 Styled component: 5.3.10 Next.js 13 μμ μ€ν 리λΆμ λΉλν κ²°κ³Ό, styled-component μ css-prop μ΄ μ¬λ°λ₯΄κ² μ μ©λμ§ μλ μ΄μκ° μμμ΅λλ€. π€ μμΈμ? κΈ°λ³Έμ μΌλ‘ css-prop μ μ¬μ©νλ μ»΄ν¬λνΈλ babel μ ν΅ν΄μ λΉλκ° μ΄λ€μ§λλ°, Next.js 12 λΆν°λ babel λμ μ swc λ‘ λΉλνκΈ° λλ¬Έμ, λ¬Έμ κ° μκΈ΄ λ― λ³΄μμ΅λλ€. νΉμλ ν΄μ κ΄λ ¨λ μ΄μλ₯Ό μ°Ύμ보λ, μμ§ νλ°νκ² λ Όμλκ³ μλ μνμμ΅λλ€. https://github.com/vercel/next.js/issues/30802 Port babel-plugin-styled-components to SWC · I.. 2023. 5. 15. JavaScript λ‘ μμ±ν csv νμΌμμ νκΈμ΄ κΉ¨μ§λ€λ©΄? π JavaScript λ‘ csv νμΌ μμ±ν΄μ λ€μ΄λ‘λλ°κΈ° μ΄μ μ csv ν¬λ§·μ λ€λ£° μΌμ΄ μ겨μ Blob κ°μ²΄λ₯Ό μμ±ν΄μ νμΌμ λ€μ΄λ‘λ λ°λλ‘ μ½λλ₯Ό ꡬννμμ΅λλ€. const download = function (data) { const blob = new Blob([data], { type: 'text/csv' }); const url = URL.createObjectURL(blob) const a = document.createElement('a') a.setAttribute('href', url) a.setAttribute('download', 'νμΌμ΄λ¦.csv'); a.click() } μ½λλ κ°λ¨ν©λλ€. 리μμ€νμ μ΄ λͺ μλ Blob κ°μ²΄λ₯Ό μμ±ν λ€ μ΄λ₯Ό κ°λ¦¬ν€λ Object URL μ .. 2023. 3. 18. Safari λΈλΌμ°μ window.open block μ΄μ π 1:1 λ¬ΈμνκΈ°κ° safari μμλ§ λμμ μν΄μ! μΌλ§μ μ ν곡μͺ½ QA μ€μ λ€μκ³Ό κ°μ μ΄μκ° μμμ΅λλ€. μμΈμ νμ νκΈ°μν΄ safari λΈλΌμ°μ μμ λμ μ νμ ν΄λ³΄λ, λ¬Έμ λ²νΌ ν΄λ¦ μ μμ°½μΌλ‘ μ΄κΈ° λμ νμ μ°¨λ¨ μλΏμ΄ λ¨λ κ²μ νμΈν μ μμμ΅λλ€. π€ μμΈμ΄ λκΉ? safari λΈλΌμ°μ μμ λ€μκ³Ό κ°μ μ½λλ μ μμ μΌλ‘ λμνμ§ μμ΅λλ€. { await asyncJob() window.open('url', '_blank'); // β } /> μ΄λ safari λΈλΌμ°μ μμ μμ°½μ μ΄λ, μ¬μ©μμ μ λ ₯μ 곧λ°λ‘ λ°μν μ μλ μν©μ΄λΌλ©΄ window.open μ‘μ μ λ§κΈ° λλ¬Έμ λλ€. (λνμ μΌλ‘ λΉλκΈ° μμ²μ μνν λ€ λ¦¬λ€μ΄λ νΈ νλ κ²μ΄ μκ² λ€μ) π μ΄λ»κ² κ³ μΉλ©΄ λ κΉ? π λ¬Έ.. 2022. 11. 26. -webkit-overflow-scrolling μμ±κ³Ό stacking context μ΄μ π λΆλλ¬μ΄ overflow μ€ν¬λ‘€μ μν css μμ± κ°λ¨ν overflow container μμ μ΄μ λΆν° HTML μμμ overflow κ° λ°μνμ κ²½μ° μ€ν¬λ‘€ ννλ‘ μ»¨ν μΈ λ₯Ό 보μ¬μ£ΌκΈ° μν΄ λ€μκ³Ό κ°μ΄ CSS λ₯Ό μ μνμ΅λλ€. .container { display: flex; flex-direction: row; overflow-x: scroll; flex-wrap: nowrap; width: 200px; } νΉν iOS μ κ²½μ° μ€ν¬λ‘€ λ°μ΄μ€ ν¨κ³Όλ₯Ό μν΄ λ€μκ³Ό κ°μ΄ μ€ν¬λ‘€ κ΄λ ¨ vendor prefix λ₯Ό ν¬ν¨ν CSS μ½λλ₯Ό μμ±νκ² λ©λλ€. -webkit-overflow-scrolling: touch; μ¬κΈ°μ touch λ‘ μ§μ ν κ²½μ° λͺ¨λ©ν κΈ°λ° μ€ν¬λ‘€ λ°©μμΌλ‘ λμνκΈ° λλ¬Έμ μΌλ°μ μΈ.. 2022. 7. 4. Next.js window is not defined μμΈ λ° ν΄κ²°λ°©λ² π μλ‘κ³ μΉ¨ μ μ€λ₯ νμ΄μ§κ° λ μ! νμ¬ νμ¬μμ Next.js λ₯Ό μ΄μ©ν νλ‘μ νΈλ₯Ό μ§ννκ³ μλλ° νΉμ νμ΄μ§μμ μλ‘κ³ μΉ¨μ νκ±°λ URL μ ν΅ν΄ μ§μ μ κ·Όμ μλν κ²½μ° μλ¬κ° λ°μνλ©° μλ¬ νμ΄μ§λ‘ 리λ€μ΄λ μ λλ μ΄μκ° μμμ΅λλ€. π μ€λ₯ λ°μ μμΈμ? ν΄λΉ νμ΄μ§μμλ custom hook μ μ¬μ©νκ³ μμλλ° μ¬κΈ°μ λ¬Έμ κ° λ°μν κ²μ΄μμ΅λλ€. π‘ λ¬Έμ κ° λ custom hook λ€μμ μ΄λ²μ λ¬Έμ λ₯Ό μΌμΌν¨ μ£Όλ²μΈ custom hook μ κ°λ¨ν μμμ λλ€. export default const customHook = () => { const [flag, setFlag] = useState(Number(localStorage.getItem(countKey) || '0')) // λͺκ°μ§ μ.. 2022. 6. 17. Safari λΈλΌμ°μ scroll-behavior μ΄μ π λΆλλ¬μ΄ scroll λμ ꡬννκΈ° μ΄μ νμ¬μμ νλ‘μ νΈλ₯Ό μ§νν λ μ΄λ²€νΈ νμ΄μ§μμ μ΅μ»€ λ²νΌ ν΄λ¦ μ νΉμ μμΉλ‘ μ΄λν΄μΌνλ μꡬμ¬νμ΄ μμμ΅λλ€. μ§μ offsetTop μ μ§μ ν΄μ£Όλ μ λλ©μ΄μ μ ꡬννκ±°λ window κ°μ²΄μμ μ 곡νλ Web API λ₯Ό μ¬μ©νλ λ°©λ²λ€μ΄ μλλ°, ꡬνμ κ°λ¨νκ² νκΈ° μν΄μ μ΄μ€ window.scrollTo λ₯Ό μ¬μ©νμ΅λλ€. κ·Έλ¦¬κ³ λΆλλ¬μ΄ μμ§μμ μν΄ behavior λ‘ smooth λ‘ μ§μ νμ΅λλ€. window.scrollTo({ top: 100, behavior: 'smooth' }) π AOS μμλ μ λλ κ² κ°μλ°.. iOSλ..? ν΄λΉ μ½λλ₯Ό μ±μ λ°°ν¬ν΄λ³΄λ μλλ‘μ΄λ ν°μμλ μ λμνλλ° μμ΄ν°μμλ smooth λμμ΄ μ μ©λμ§ μλ .. 2022. 6. 11. μ΄μ 1 λ€μ