border 를 늘리면 요소가 커지거나 옆 요소가 밀려나지만, outline 은 박스 모델에 참여하지 않아 아무리 두껍게 줘도 주변 레이아웃이 그대로입니다. outline-offset 은 그 선을 border 가장자리에서 얼마나 띄울지 정하는데, 양수면 바깥으로, 음수면 안쪽으로 파고듭니다.
이 특성 때문에 포커스 링에 자주 씁니다 — 키보드로 포커스가 옮겨갈 때마다 border 를 바꾸면 다른 요소들이 미세하게 흔들리지만(리플로우), outline 은 그런 부작용이 없습니다.
border-radius 가 있는 요소는 최신 브라우저에서 outline 도 그 모서리를 따라 둥글게 그려지지만, 오래된 엔진에서는 outline 이 그냥 사각형으로 남아있던 시절이 있었으니 둥근 모서리에 크게 의존한다면 확인이 필요합니다. 또 outline 이 offset 때문에 조상의 경계 밖으로 나가면, 그 조상에 overflow: hidden 이 걸려 있을 경우 box-shadow 의 번짐과 달리 그대로 잘려 나갑니다.
언제 쓰나
포커스 링, 레이아웃을 흔들면 안 되는 "선택됨" 표시에 씁니다. 조상에 overflow: hidden 이 있으면 offset 값이 잘리지 않는지 확인하세요.