사용자 CSS 로 모양 바꾸기
목차
사이드바 설정의 사용자 CSS 탭에 직접 쓴 CSS를 넣으면 앱의 색·서체·모서리 같은 모양을 바꿉니다. CSS는 스니펫이라는 이름 붙은 덩어리로 나눠 두고 하나씩 켜고 끕니다. 문서 원문에는 아무것도 더하지 않습니다.
스니펫 만들기
새 스니펫을 누르면스니펫 1처럼 이름이 붙은 빈 스니펫이 켜진 채 목록 끝에 생기고CSS 편집창이 열립니다CSS칸에 규칙을 씁니다. 입력을 멈추면 곧 저장되고, 켜진 스니펫이면 바로 적용됩니다.닫기를 누를 때도 저장합니다- 창 아래에
규칙 3개 적용 중처럼 적용된 규칙 수가 나옵니다. 브라우저는 문법이 틀린 규칙을 알림 없이 버리므로, 수가 적으면 다시 봅니다
템플릿으로 시작은템플릿이라는 스니펫을 만듭니다. 아래 표의 변수와 선택자가 설명·기본값과 함께 주석으로 들어 있어 켜 두어도 화면은 그대로입니다. 바꿀 줄의 주석 표시를 지우면 그 줄이 적용됩니다- 목록의 체크 상자로 켜고 끕니다. 켠 스니펫은 위에서부터 적용하므로 같은 세기면 아래가 이깁니다. 순서는 만든 순서이고 바꿀 수 없습니다
- 스니펫은 50개까지, CSS는 모든 스니펫을 합쳐 256KB(262,144바이트)까지, 이름은 60자까지입니다. 크기를 넘기는 입력은 들어가지 않고
CSS 는 모두 합쳐 256KB 까지 저장할 수 있습니다.가 뜹니다 - 같은 브라우저의 다른 탭에도 곧 적용됩니다
선택자와 우선순위
| 적용할 곳 | 선택자 |
|---|---|
| 모든 테마·인쇄·HTML 파일 | :root:root |
| 한 테마에만 | :root[data-theme='white'] · 'sepia' · 'dark' |
| 설정값에 따라 | [data-heading-font] [data-body-font] [data-font-size] [data-indent] (<html>), [data-view-mode] (문서 영역, live·raw·view) |
:root만 쓰면 세피아·다크 테마와글자 크기설정의 값에 집니다.:root:root는 세기가 같고 사용자 CSS가 늘 뒤에 오므로 이깁니다- 테마별 규칙은 공통 규칙 뒤에 둡니다. 테마가
시스템이어도data-theme는white나dark입니다 @layer안에 쓴 규칙은 앱 규칙에 집니다
:root:root {
--accent: teal;
--radius-control: 999px;
}
:root[data-theme='dark'] {
--accent: color-mix(in srgb, teal 60%, white);
}
약속된 변수
아래 변수와 두 훅 표만 약속합니다. 그 밖의 클래스·변수·화면 구조는 새 버전에서 알림 없이 바뀔 수 있습니다.
| 묶음 | 변수 |
|---|---|
| 기본 색 | --paper 바탕 · --panel 대화상자·메뉴 · --ink 글자 · --ink-2 보조 글자 · --muted 흐린 글자 · --rule --rule-2 구분선 · --link 링크 · --danger 오류 · --accent 강조 |
| 파생 색 | --accent-soft --accent-ring --selection-bg |
| 본문 | --md-font-size --md-line-height --md-fg-muted --md-border --md-border-muted --md-bg-muted --md-code-bg --md-link --highlight-base --md-highlight-bg |
| 코드 | --code-keyword --code-string --code-comment --code-number --code-function --code-type --code-property --code-tag |
| 콜아웃 | --callout-note --callout-tip --callout-success --callout-question --callout-warning --callout-danger --callout-example --callout-quote |
| 지도 그룹 | --map-group-1 --map-group-2 --map-group-3 --map-group-4 --map-group-5 --map-group-6 --map-group-7 --map-group-8 |
| 댓글 | --comment-anchor --comment-anchor-active --comment-anchor-line |
| 서체 | --font-sans --font-serif --font-mono --font-display 제목 · --font-body 본문 · --tracking 자간 |
| 모양 | --radius-control --radius-dialog --radius-image |
--md-font-size·--font-display·--font-body를 바꾸면 설정글자 크기·제목 서체·본문 서체가 먹지 않습니다- 지도 캔버스 안은 선택자가 닿지 않고,
--panel--ink--ink-2--muted--rule--accent와 지도 그룹 색만 읽어 칠합니다 코드묶음은 코드블록과CSS 편집창의 구문 색입니다. 끄려면 여덟 변수를 모두currentColor로 두세요
화면 뼈대 훅
:root:root [data-ui="sidebar"]처럼 씁니다. 요소가 그 자리에 있다는 것만 약속하므로, 앱 규칙에 지면 선택자를 더 구체적으로 쓰거나 !important를 붙입니다.
| 값 | 자리 |
|---|---|
app · home · map |
앱 화면 전체 · 홈 화면 · 지도 화면 |
sidebar · sidebar-list |
사이드바 · 그 안의 문서·폴더 목록 |
topbar · statusbar · notice |
상단바 · 상태바 · 알림 띠 |
content · doc-title |
문서 영역 · 문서 제목 |
editor · viewer · print |
편집·원문 편집기 · 보기 본문 틀 · 인쇄 영역 |
outline · comments |
목차 · 댓글 레일 |
dialog · menu |
대화상자 · 오른쪽 버튼·드롭다운 메뉴 |
본문 훅
표의 선택자 앞에 모두 :root:root 를 붙이면 앱 규칙을 이깁니다.
| 대상 | 편집·원문 |
보기·인쇄·HTML 파일 |
|---|---|---|
| 제목 | .cm-editor .cm-line.md-h1 ~ .md-h6 |
.markdown-body h1 ~ h6 |
| 인용 | .cm-editor .cm-line.md-quote |
.markdown-body blockquote |
| 콜아웃 | .cm-editor .cm-line.md-callout |
.markdown-body .markdown-callout |
| 코드블록 | .cm-editor .cm-line.md-fence-line, .md-block.md-codeblock |
.markdown-body pre |
| 인라인 코드 | .cm-editor .cm-line:not(.md-fence-line) .md-code |
.markdown-body :not(pre) > code |
| 표 | .md-block.md-table table |
.markdown-body table |
| 링크 | .cm-editor .cm-line .md-link |
.markdown-body a |
| 하이라이트 | .cm-editor .md-highlight |
.markdown-body mark |
| 목록 항목 | .cm-editor .cm-line.md-list-line |
.markdown-body li |
| 구분선 | .cm-editor .cm-line.md-hr |
.markdown-body hr |
| 본문 전체 | .cm-editor .cm-content |
.markdown-body |
콜아웃 종류는 두 모드 모두 .md-callout--note처럼 붙습니다.
인쇄와 HTML 파일
- 상단바
내보내기의HTML 파일과PDF (A4 인쇄)에도 켠 스니펫이 들어갑니다. 파일에는 검사를 거친 CSS가 스니펫 이름 주석과 함께 담깁니다 - 인쇄와 HTML 파일에는
data-theme가 없어 테마별 규칙이 먹지 않습니다. 인쇄에만 쓸 규칙은@media print나:root[data-printing]에 둡니다 - HTML 파일에는 앱 화면이 없어
data-ui규칙은 먹지 않고,:root:root변수와 보기 쪽 선택자만 먹습니다 서식 있는 복사에는 들어가지 않습니다
외부 파일은 빠집니다
외부 주소를 부르는 CSS는 화면 내용을 그 주소에 알릴 수 있고 오프라인이나 HTML 파일에서는 열리지 않습니다. 적용 전에 아래를 잘라 냅니다.
@importurl()주소가data:나#으로 시작하지 않는 선언,image-set()·image()·src()를 쓴 선언src가data:나local()이 아닌@font-face규칙 통째--로 시작하는 변수 값에url(이나\가 든 선언(data:여도),var()와url()을 한 값에 쓴 선언- 목록에 없는
@규칙. 쓸 수 있는 것은@media@supports@container@layer@scope@starting-style@keyframes@font-face@page
잘라 낸 곳이 있으면 외부 파일을 부르는 부분 2곳을 빼고 적용했습니다.가, 검사가 CSS를 읽어 내지 못하면 검사를 통과하지 못해 이 스니펫을 적용하지 않았습니다.가 뜹니다. 웹 글꼴 대신 이 기기에 설치된 글꼴을 이름으로 쓰세요.
계정과 다른 사람
- 로그인하지 않으면 이 브라우저에만 저장합니다. 로그인하면 계정에 저장해 같은 계정의 다른 기기에도 적용합니다
- 고친 내용은 마지막으로 고친 지 2초 뒤,
CSS 편집창을 닫을 때, 연결이 돌아올 때 서버로 보냅니다. 다른 기기의 변경은 앱을 열 때,사용자 CSS탭을 열 때, 창으로 돌아왔는데 받은 지 10분이 지났을 때 받아 옵니다 - 두 기기에서 같은 스니펫을 고치면 나중에 보낸 쪽이 남습니다
- 이 브라우저에서 그 계정으로 처음 로그인하면 로그인 전 스니펫 가운데 계정에 없는 것을 끝에 붙이고, 이름만 같으면
(이 브라우저)를 붙입니다. 로그아웃하면 로그인 전 스니펫이 다시 적용됩니다 - 사용자 CSS는 암호화하지 않고 서버에 저장하므로 비밀을 적지 마세요. 계정을 지우면 함께 지워집니다
- 문서·공유·초대에 실리지 않아 다른 사람 화면에는 적용되지 않고, 내가 읽기 전용 링크를 열 때도 빼서 남이 보는 모양 그대로 봅니다. 내보낸 HTML 파일은 예외입니다
화면이 망가졌을 때
* { display: none }처럼 설정 창까지 가리는 CSS를 켰다면 주소 끝에 ?safe를 붙여 엽니다. 그 창에서는 사용자 CSS를 적용하지 않고 알림 띠에 사용자 CSS 를 끄고 열었습니다.와 다시 켜기가 뜹니다.
사용자 CSS탭에서 문제 스니펫을 끄거나 고칩니다. 고친 내용은 저장되지만 이 창에는 적용되지 않으니, 다 고친 뒤다시 켜기로safe를 뺀 주소를 엽니다/?safe가 소개 페이지로 가면/?app=1&safe로 엽니다