웹페이지에서 탭을 바꾸거나 목록을 필터링했을 때 내용이 순간적으로 바뀌어 화면이 ‘툭’ 끊겨 보이는 경우가 있습니다. 링크를 눌러 다른 페이지로 이동할 때도 비슷한 깜빡임이 생길 수 있습니다. 예전에는 이런 전환을 자연스럽게 만들기 위해 기존 화면과 새 화면을 겹쳐 놓고 opacity와 transform을 직접 제어하거나, 자바스크립트로 애니메이션 상태를 따로 관리해야 했습니다. 요즘은 View Transition API를 이용하면 이런 전환을 훨씬 단순하게 만들 수 있습니다. 중요한 것은 무조건 화려한 효과를 넣는 것이 아니라, 어떤 증상에서 어느 방식으로 적용해야 하는지 구분하는 것입니다. 탭이나 필터를 눌렀을 때 내용이 갑자기 바뀐다면 한 페이지 안에서 DOM 내용만 바뀌는 경우에는 document..
CSS가 점점 복잡해지는 가장 흔한 신호는 선택자가 길어지는 것입니다..page.content.card.title처럼 상위 구조를 계속 붙여야 스타일 충돌을 막을 수 있다면, 이제는 선택자를 더 길게 만드는 대신 @scope로 적용 범위를 제한하는 편이 훨씬 관리하기 쉽습니다. 핵심은 “이 컴포넌트 안에서만 이 CSS가 동작하게 한다”는 경계를 먼저 정하는 것입니다. 선택자가 길어지는 이유부터 보면 해결 방향이 보입니다 처음에는.title,.button,.item처럼 짧은 선택자만으로도 충분합니다. 그런데 페이지가 커지면 같은 클래스 이름이 여러 영역에서 다시 등장합니다. 이때 충돌을 피하려고 아래처럼 부모 구조를 계속 덧붙이게 됩니다. css .page.content.profile-card.title ..
웹사이트에서 복사 버튼을 눌렀는데 아무 반응이 없거나, 복사는 된 것 같은데 Ctrl+V를 눌러도 붙여넣기가 되지 않는 경우가 있습니다. 특히 AI 서비스, 온라인 편집기, 자동화 프로그램처럼 클립보드를 자주 사용하는 사이트에서는 어제까지 잘 되던 기능이 갑자기 막히기도 합니다. 이럴 때 윈도우 클립보드 자체가 고장 났다고 생각하기 쉽지만, 실제로는 크롬의 사이트 권한이나 페이지 상태, 확장 프로그램 충돌 때문에 특정 사이트에서만 복사와 붙여넣기가 제한되는 경우가 많습니다. 먼저 크롬 문제인지 윈도우 문제인지 구분해보세요 가장 먼저 메모장 같은 일반 프로그램을 열어 간단한 문장을 복사한 뒤 붙여넣어 봅니다. 메모장에서는 Ctrl+C와 Ctrl+V가 정상적으로 작동하는데 특정 웹사이트에서만 안 된다면 윈도..
웹페이지에서 메뉴, 도움말, 옵션 창 같은 작은 팝업을 만들다 보면 z-index를 9999까지 올렸는데도 다른 요소 뒤에 가려지는 일이 있습니다. 특히 부모 요소에 overflow: hidden이 있거나, 여러 컴포넌트가 각자 stacking context를 만들고 있으면 숫자만 계속 키워서는 해결되지 않는 경우가 많습니다. 이럴 때는 기존 div 팝업을 억지로 위로 끌어올리기보다 HTML Popover API를 검토할 만합니다. 팝오버가 열리면 브라우저의 top layer에 올라가기 때문에 일반적인 문서 내부 stacking context와는 다른 방식으로 표시됩니다. 부모의 position이나 overflow 때문에 팝업이 잘리는 문제를 피하는 데도 유리합니다. 증상 1. z-index를 올려도 헤..
팝업이나 알림창을 숨길 때 opacity와 transition을 넣었는데도 마지막 순간에 화면이 뚝 사라진다면 애니메이션 값보다 display: none을 먼저 확인해야 합니다. 핵심은 @starting-style로 나타날 때의 시작 상태를 만들고, transition-behavior: allow-discrete 또는 transition의 allow-discrete 값으로 display 전환을 함께 처리하는 것입니다. 예전처럼 자바스크립트에서 애니메이션 종료 시간을 계산해 display: none을 늦게 적용하지 않아도 되는 경우가 많습니다. opacity를 넣었는데도 display none에서 끊기는 이유 처음 CSS 애니메이션을 만들 때 흔히 다음처럼 작성합니다. css .panel { opacity..
댓글창이나 메모 입력창을 만들다 보면 처음에는 한 줄 정도로 작게 보이다가 글을 입력할수록 높이가 자연스럽게 늘어나게 만들고 싶을 때가 있습니다. 예전에는 scrollHeight를 읽어 textarea 높이를 다시 지정하는 자바스크립트 코드를 많이 사용했습니다. 그런데 이제는 CSS의 field-sizing: content를 이용해 훨씬 간단하게 구현할 수 있습니다. 특히 2026년에는 이 기능을 지원하는 최신 브라우저 범위가 넓어졌습니다. 다만 오래된 브라우저까지 지원해야 하는 사이트라면 기존 방식과 함께 사용하는 것이 안전합니다. 먼저 기존 textarea가 왜 고정 높이로 보이는지 확인하기 기본 textarea는 내용이 늘어난다고 요소 자체의 높이가 계속 커지는 방식이 아닙니다. 정해진 영역을 넘어..
원드라이브를 사용하다 보면 파일을 몇 개 수정했을 뿐인데 동기화가 끝나지 않거나, 구름 아이콘에 계속 진행 표시가 남아 있는 경우가 있습니다. 이럴 때 가장 먼저 프로그램을 삭제하고 다시 설치하기 쉽지만 실제 원인이 특정 파일 하나, 지나치게 긴 폴더 경로, 열려 있는 파일, 저장 공간 부족처럼 다른 곳에 있으면 재설치 후에도 같은 문제가 반복됩니다. 특히 중요한 것은 '원드라이브 전체가 고장 났다'고 생각하기 전에 어느 파일이나 폴더에서 동기화가 막혔는지 범위를 좁히는 것입니다. 먼저 정말 멈춘 것인지 확인해보기 작업 표시줄 오른쪽의 원드라이브 구름 아이콘을 눌러 현재 상태부터 확인합니다. '동기화 중'이나 '변경 내용 처리 중'이 표시된다면 파일을 계속 검사하고 있는 상태일 수 있습니다. 사진이나 동..
잘 쓰던 크롬 확장 프로그램이 갑자기 꺼졌거나, 삭제한 뒤 다시 설치하려는데 웹 스토어에서 찾을 수 없다면 무엇부터 확인해야 할까요? 2026년 9월 1일 기준으로는 가장 먼저 해당 확장 프로그램이 오래된 Manifest V2 방식인지 확인하는 것이 좋습니다. 2026년 8월 31일부터 웹 스토어에 남아 있던 Manifest V2 확장 프로그램이 모두 제거됐기 때문입니다. 이미 이전부터 최신 크롬에서는 Manifest V2 확장 프로그램의 실행이 제한되어 왔지만, 이제는 스토어에서 다시 설치하는 것까지 어려워졌습니다. 다만 확장 프로그램 하나가 갑자기 멈췄다고 해서 무조건 Manifest V2 문제라고 단정하면 안 됩니다. 업데이트 오류, 권한 변경, 확장 프로그램 자체의 업데이트 실패처럼 다른 원인도 ..
아코디언 메뉴나 FAQ 영역을 만들다 보면 닫힌 상태에서는 높이가 0이고, 열렸을 때는 내용만큼 자연스럽게 늘어나게 만들고 싶을 때가 있습니다. 문제는 내용 길이가 매번 다르기 때문에 열린 높이를 200px, 300px처럼 고정하기 어렵다는 점입니다. 그래서 height: auto를 사용하게 되는데, 단순히 height: 0에서 height: auto로 바꾸고 transition을 추가했다고 해서 모든 환경에서 원하는 방식으로 부드럽게 움직이는 것은 아닙니다. 이 문제를 해결할 때 흔히 사용하는 방법은 크게 세 가지입니다. max-height에 충분히 큰 값을 주는 방식CSS Grid의 0fr → 1fr 전환을 이용하는 방식interpolate-size를 이용해 실제 높이 값과 auto 사이를 전환하는 ..
웹페이지에서 버튼 옆에 툴팁이나 작은 메뉴를 띄우려고 하면 생각보다 코드가 금방 복잡해집니다. 버튼의 위치를 구하고, 스크롤될 때 다시 계산하고, 화면 가장자리에 닿으면 방향을 바꾸는 자바스크립트까지 붙는 경우가 많습니다. 이럴 때 CSS Anchor Positioning을 사용하면 기준이 되는 요소와 떠 있는 요소의 관계를 CSS 안에서 직접 표현할 수 있습니다. 특히 버튼 옆 도움말, 드롭다운 메뉴, 말풍선처럼 '이 요소를 저 요소 옆에 붙인다'는 UI에 잘 맞습니다. 먼저 가장 작은 예제로 구조를 이해해보자 처음부터 복잡한 메뉴를 만들기보다 버튼 하나와 툴팁 하나로 시작하는 편이 쉽습니다. HTML은 다음처럼 준비합니다. html 도움말 설정 방법을 확인하세요. 핵심은 버튼을 기준점으로 지정하고, ..