fix(site): 제목-본문 간격을 전역 하나로 통일하고 스파인 리듬을 토큰화
All checks were successful
ci / build (push) Successful in 26s
All checks were successful
ci / build (push) Successful in 26s
제목과 본문이 붙어 있던 문제를 고친다.
- h2{margin:0} + p{margin-top:0} 이라 제목 다음 간격이 0px 이었다.
섹션마다 각자 margin-top 을 붙여 어떤 곳은 0, 어떤 곳은 24px 로 갈려 있었다.
base.css 에서 한 번만 정하고 각 섹션의 margin-top 오버라이드를 걷어냈다.
- :where() 로 감싼 첫 시도는 특이도 0 이라 p 규칙에 져서 무효였다.
특이도를 갖추고 p 뒤로 옮겼다.
- 제목을 .head 로 감싼 수치 섹션은 인접 형제가 끊겨 혼자 0px 이었다.
.head 도 규칙에 포함했다.
파이프라인 정거장 간격이 224px 로 벌어져 목록이 흩어져 보이던 문제도 고친다.
- 읽기 간격과 sticky 스크롤 구간을 같은 값으로 맞추려던 것이 원인이다.
간격은 --stop-pad(space-5)로 되돌리고, 스크롤 구간은 .after 뒤 여백으로 옮겼다.
게이트당 237px 확보 — 과민 반응 기준(200px) 위다.
- 마커 원의 top 이 space-4, 패딩이 space-6 로 따로 적혀 있어 원이 제목보다
24px 위에 떠 있었다. 셋 다 --stop-pad 를 보게 했다.
3D 판 위 본문 대비는 실측 결과 최저 9.83:1 로 AAA 를 넘어 손대지 않았다.
스킬 내재화:
- tokens.md 제목 다음 간격 SSOT, :where() 특이도 함정, 리듬은 지역 토큰으로
- motion.md 읽기 간격과 스크롤 구간은 같은 손잡이가 아니다
- antipatterns.md 재는 도구가 거짓말하는 세 방식
(reveal 중 측정 / sharp stats 가 extract 를 무시 / 눈보다 숫자)
This commit is contained in:
parent
e1e6002bee
commit
f7f811ab42
8 changed files with 142 additions and 13 deletions
|
|
@ -56,7 +56,7 @@ const { c } = Astro.props;
|
|||
<style>
|
||||
/* 컨테이너는 넓어도 읽는 것은 measure 안에 둔다 */
|
||||
.pipeline-lead {
|
||||
margin-bottom: var(--space-6);
|
||||
margin-bottom: var(--space-5);
|
||||
max-width: var(--measure);
|
||||
}
|
||||
.brief { max-width: var(--measure); }
|
||||
|
|
@ -140,6 +140,10 @@ const { c } = Astro.props;
|
|||
선은 장식이 아니라 순서 그 자체다. 정거장의 위치가 번호를 대신한다.
|
||||
---------------------------------------------------------- */
|
||||
.spine {
|
||||
/* 정거장의 세로 리듬은 여기 한 곳에서 나온다.
|
||||
전에는 패딩이 space-6, 마커 위치가 space-4 로 각자 적혀 있어서
|
||||
원이 제목보다 24px 위에 떠 있었다. 값을 각자 쓰면 이렇게 어긋난다. */
|
||||
--stop-pad: var(--space-5);
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0 0 0 var(--space-5);
|
||||
|
|
@ -149,8 +153,8 @@ const { c } = Astro.props;
|
|||
content: "";
|
||||
position: absolute;
|
||||
left: 5px;
|
||||
top: var(--space-4);
|
||||
bottom: var(--space-4);
|
||||
top: var(--stop-pad);
|
||||
bottom: var(--stop-pad);
|
||||
width: 1px;
|
||||
background: var(--line-strong);
|
||||
}
|
||||
|
|
@ -162,10 +166,11 @@ const { c } = Astro.props;
|
|||
섹션이 화면에 보이는 구간(2393px)의 4분의 1이라, 조금만 스크롤해도
|
||||
여섯 게이트를 다 지나쳐 버렸다.
|
||||
|
||||
space-6 으로 늘렸더니 sticky 구간이 1226px, 게이트당 204px 이 됐다.
|
||||
휠 한 번(100~150px)에 게이트 하나가 지나가 여전히 과민했다.
|
||||
space-7 이면 게이트당 300px 남짓 — 휠 두세 번에 하나다. */
|
||||
padding-block: var(--space-7);
|
||||
space-7 까지 올렸더니 이번엔 정거장 사이가 224px 로 벌어져
|
||||
목록이 흩어져 보였다 — 여섯 개가 한 목록으로 안 읽힌다.
|
||||
읽기 간격과 스크롤 구간은 같은 손잡이가 아니다.
|
||||
간격은 읽기에 맞추고, 스크롤 구간은 스파인 뒤 여백(.after)에서 번다. */
|
||||
padding-block: var(--stop-pad);
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
|
||||
gap: var(--space-5);
|
||||
|
|
@ -181,7 +186,7 @@ const { c } = Astro.props;
|
|||
content: "";
|
||||
position: absolute;
|
||||
left: calc(var(--space-5) * -1);
|
||||
top: calc(var(--space-4) + 0.55em);
|
||||
top: calc(var(--stop-pad) + 0.55em);
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
border-radius: var(--radius-sm);
|
||||
|
|
@ -224,8 +229,9 @@ const { c } = Astro.props;
|
|||
.after {
|
||||
margin-top: var(--space-7);
|
||||
max-width: var(--measure);
|
||||
/* 마지막 게이트를 통과할 스크롤이 남아 있어야 한다 */
|
||||
padding-bottom: 20dvh;
|
||||
/* 여기가 스크롤 구간을 버는 자리다. 정거장 간격을 벌리는 대신
|
||||
마지막 정거장 뒤에 여운을 둔다 — 스파인이 끝난 뒤라 빈 공간으로 읽히지 않는다 */
|
||||
padding-bottom: 62dvh;
|
||||
}
|
||||
|
||||
@media (max-width: 780px) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue