Tạo nút đăng nhập
Mã HTML và kiểu dáng cho nút đăng nhập đúng theo hướng dẫn thương hiệu.
Xem trước
Kết hợp 4 loại nền (light / dark / filled / icon) × 3 chiều cao (40 / 44 / 48px). Trong một dịch vụ, hãy chọn một chiều cao và dùng thống nhất.
Sao chép mã nút
href của nút bắt buộc phải trỏ tới điểm cuối (endpoint) bắt đầu đăng nhập của riêng bạn, nơi máy chủ của bạn chuyển hướng (redirect) tới URL xác thực của Tài khoản 놀아 (/login/nolaa trong ví dụ). Hãy xem mục «URL yêu cầu xác thực» bên dưới để chuyển hướng người dùng từ điểm cuối đó.
Cách A. Liên kết tệp CSS
Đây là cách đơn giản nhất. Bạn có thể tải tệp về tự lưu trữ (host), hoặc tải trực tiếp bằng đường dẫn tuyệt đối như bên dưới.
<link rel="stylesheet" href="https://account.nola.kr/brand/nolaa-button.css">
<a class="nolaa-btn nolaa-btn--light nolaa-btn--44" href="/login/nolaa">Continue with Nolaa</a>
Cách B. Dán toàn bộ CSS
Nếu muốn dùng hoàn toàn độc lập, không cần yêu cầu bên ngoài, hãy dán trực tiếp toàn bộ CSS vào trang của bạn.
<style>
/* ============================================================
* 놀아 계정 — 로그인 버튼 (Sign in with Nolaa) 독립 실행 CSS
* devplan12 차수6
*
* 사용법
* 1) 이 파일을 그대로 여러분의 사이트에 포함하세요: <link rel="stylesheet" href="nolaa-button.css">
* 2) <a class="nolaa-btn nolaa-btn--light nolaa-btn--44" href="...">놀아로 계속하기</a> 처럼
* 배경 클래스(--light/--dark/--filled/--icon) 1개 + 높이 클래스(--40/--44/--48) 1개를 함께 붙이세요.
* 3) 이 파일은 이 프로젝트의 CSS 변수(--brand-primary 등)에 의존하지 않습니다. 값은 모두 고정 HEX이며
* 임의로 바꾸면 안 됩니다. 자세한 규정은 /developers/brand, /developers/button 문서를 참고하세요.
* ============================================================ */
.nolaa-btn {
/* nolaa-mark.svg 를 인라인 data URI로 내장 — 외부 서버 요청 없이 항상 렌더됩니다. */
--nolaa-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Crect x='1.5' y='1.5' width='45' height='45' rx='11' fill='%23FFFFFF' stroke='%2315120F' stroke-width='2.8'/%3E%3Cg transform='translate(24 24) scale(.7) translate(-26.35 -23.75)'%3E%3Cpath d='M14.6 8.4c-2.3 0-3.9 1.8-3.9 4.2v19.6c0 5 3.7 8.6 8.9 8.6h16.1c2.3 0 3.9-1.5 3.9-3.7s-1.7-3.8-4-3.9l-15.1-.6c-1.4 0-2-.8-2-2.3V12.6c0-2.4-1.6-4.2-3.9-4.2z' fill='%2315120F'/%3E%3Crect x='32' y='6.6' width='10' height='10' rx='2.4' fill='%23D6342C'/%3E%3C/g%3E%3C/svg%3E");
box-sizing: border-box;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 0 16px;
border-radius: 8px;
border: 1px solid transparent;
font-family: inherit;
font-weight: 700;
font-size: 14px;
line-height: 1;
white-space: nowrap;
text-decoration: none;
cursor: pointer;
-webkit-appearance: none;
appearance: none;
-webkit-font-smoothing: antialiased;
transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, color .15s ease;
}
.nolaa-btn::before {
content: "";
flex: none;
display: inline-block;
background-image: var(--nolaa-mark);
background-repeat: no-repeat;
background-position: center;
background-size: contain;
}
/* 높이 3종 — 서비스 내에서는 하나만 골라 통일해서 쓰세요. 마크 크기는 높이에 비례합니다. */
.nolaa-btn--40 { height: 40px; }
.nolaa-btn--40::before { width: 20px; height: 20px; }
.nolaa-btn--44 { height: 44px; }
.nolaa-btn--44::before { width: 22px; height: 22px; }
.nolaa-btn--48 { height: 48px; }
.nolaa-btn--48::before { width: 24px; height: 24px; }
/* 배경 4종 */
.nolaa-btn--light {
background-color: #FFFFFF;
border-color: #DADDE3;
color: #15120F;
}
.nolaa-btn--light:hover { background-color: #F5F6F8; }
.nolaa-btn--light:active { background-color: #EBEDF1; }
.nolaa-btn--dark {
background-color: #20242C;
border-color: #333944;
color: #F2F4F7;
}
.nolaa-btn--dark:hover { background-color: #282D36; }
.nolaa-btn--dark:active { background-color: #171A20; }
.nolaa-btn--filled {
background-color: #D6342C;
border-color: transparent;
color: #FFFFFF;
}
.nolaa-btn--filled:hover { background-color: #B22A23; }
.nolaa-btn--filled:active { background-color: #8E211B; }
/* 아이콘 전용(정사각, 글자 없음) — 마크만 표시합니다. 마크 크기는 높이 클래스가 그대로 결정합니다. */
.nolaa-btn--icon {
background-color: transparent;
border-color: transparent;
padding: 0;
gap: 0;
}
.nolaa-btn--icon.nolaa-btn--40 { width: 40px; }
.nolaa-btn--icon.nolaa-btn--44 { width: 44px; }
.nolaa-btn--icon.nolaa-btn--48 { width: 48px; }
.nolaa-btn--icon:hover { background-color: rgba(21, 18, 15, .06); }
.nolaa-btn--icon:active { background-color: rgba(21, 18, 15, .12); }
/* 포커스 상태 — 키보드 사용자를 위한 필수 표시 */
.nolaa-btn:focus-visible {
outline: 2px solid #D6342C;
outline-offset: 2px;
}
@media (max-width:768px){
.doc-section table,.spec-table{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.doc-section table th,.doc-section table td,.spec-table th,.spec-table td{min-width:96px}
}
</style>
<a class="nolaa-btn nolaa-btn--light nolaa-btn--44" href="/login/nolaa">Continue with Nolaa</a>
URL yêu cầu xác thực
Từ điểm cuối bắt đầu đăng nhập, hãy chuyển hướng người dùng tới URL có dạng bên dưới. YOUR_CLIENT_ID / YOUR_REDIRECT_URI là giá trị khác nhau ở mỗi dịch vụ, còn state và code_challenge (PKCE, S256) phải được máy chủ tạo mới cho mỗi yêu cầu.
https://account.nola.kr/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=profile.basic%20profile.avatar&state=RANDOM_STATE&code_challenge=CODE_CHALLENGE&code_challenge_method=S256
Xem client_id / redirect_uri của bạn trong Tài khoản của tôi →
Toàn bộ luồng tích hợp, gồm cách tạo PKCE (state, code_challenge), xem trong hướng dẫn OAuth →
Quy cách kích thước
| Mục | Giá trị |
|---|---|
| Chiều cao | 40 / 44 / 48px — thống nhất một giá trị trong một dịch vụ |
| Bán kính góc | 8px |
| Đệm trái phải (padding) | 16px |
| Kích thước biểu tượng (mark) | Cao 40 → 20px · 44 → 22px · 48 → 24px |
| Khoảng cách biểu tượng – chữ | 10px |
| Phông chữ | Kế thừa (phông mặc định của trang chủ), weight 700, size 14px |
| Xuống dòng | Cấm (white-space: nowrap) |
Những điều không được làm
- Đổi chữ trên nút sang bất kỳ chữ nào ngoài 3 chữ đã quy định (놀아로 계속하기 / 놀아 계정으로 로그인 / Continue with Nolaa)
- Thay biểu tượng (mark, logo) bằng icon hoặc hình ảnh khác
- Đổi màu nền nút sang màu ngoài các màu thương hiệu quy định (light/dark/filled/icon)
- Đặt nút này nhỏ hơn các nút đăng nhập bằng phương thức khác
- Thu hẹp khoảng cách giữa biểu tượng và chữ xuống dưới 6px
Tải toàn bộ tài nguyên thương hiệu
Tệp ZIP chứa cả 3 tệp SVG biểu tượng, PNG, tệp CSS này và README.