Khi màu chữ biến mất trong chế độ ban đêm

Khi màu chữ biến mất trong chế độ ban đêm

Nói kết luận trước: chỉ định riêng một màu chỉ áp dụng trong chế độ ban đêm là xong. Chế độ ban đêm của Anki chỉ làm tối nền thẻ và màu chữ mặc định, còn màu bạn tự chỉ định trong mẫu thẻ thì nó không đụng tới. Vì vậy dòng chữ xanh hay phần giải thích xám đậm mà bạn chọn khi đang nhìn nền sáng sẽ giữ nguyên và chìm nghỉm trên nền tối. Không có chức năng tự động đảo màu, và ngay từ đầu Anki đã được thiết kế để không làm vậy.

Vì sao nền thì tối đi mà riêng màu chữ vẫn nguyên

Khi bật chế độ ban đêm, Anki gắn lên thẻ một dấu hiệu tên là nightMode, rồi ghi đè nền và màu chữ mặc định của thẻ mang dấu hiệu đó sang phía tối. Dù mẫu thẻ của Kiểu Phiếu mặc định có ghi background-color: white thì ban đêm nó vẫn tối đi, là vì vậy.

Nhưng phép ghi đè này chỉ tác động lên toàn bộ thẻ. Màu bạn đặt thẳng cho từng phần tử bên trong thẻ — ví dụ .answer tô xanh riêng phần đáp án, hay .cloze làm nổi chỗ trống — là chỉ dẫn cụ thể hơn so với thiết lập cho cả thẻ, nên nó thắng và giữ nguyên. CSS luôn nghe theo chỉ dẫn cụ thể hơn.

Vì thế triệu chứng bạn thật sự gặp thường là thế này.

  • Nền thì tối đi ngon lành nhưng riêng dòng đáp án màu xanh lại chìm nghỉm
  • Câu ví dụ hay chú thích để màu xám nhạt thì gần như không thấy
  • Phần nền tô nhấn như bút dạ quang thì chói quá mức

Tức là không phải hỏng, mà là cấu trúc: toàn bộ thẻ thì Anki tự lo, còn màu của từng phần thì người dùng phải tự quyết định.

Mẫu thẻ mặc định của Anki cũng đã dùng cách này

Mở mẫu thẻ của Kiểu Phiếu điền khuyết (Cloze) mà Anki tạo sẵn ra xem, bạn sẽ thấy hai dòng như thế này.

.cloze { color: blue; }

.nightMode .cloze { color: lightblue; }

Dòng đầu là màu thường ngày, dòng thứ hai là màu chỉ dùng khi ở chế độ ban đêm. Trên nền tối thì màu xanh dương bị chìm, nên họ đổi sẵn sang xanh da trời sáng. Đây là cách chính nhóm phát triển Anki tự trình bày trong mẫu thẻ mặc định, nên việc chúng ta cần làm cũng y hệt — cứ phần tử nào có dùng màu thì làm thêm cho nó một bộ màu ban đêm.

Cách chỉnh trong ankieditor

Bạn làm được bằng những cú nhấp chuột, không cần viết mã.

  1. Nhập mẫu thẻ xong thì đánh dấu [Chế độ ban đêm] phía trên bản xem trước. Thẻ sẽ đổi sang đúng dáng vẻ của chế độ ban đêm trong Anki.
  2. Ở trạng thái đó, nhấp vào phần đang bị chìm màu. Muốn đổi cả thẻ thì nhấp vào chỗ trống.
  3. Chọn màu ở Màu chữ hoặc Màu nền trong bảng bên trái. Màu chọn ở đây chỉ áp dụng trong chế độ ban đêm, còn màu thường ngày vẫn giữ nguyên.
  4. Muốn hoàn tác thì bấm [Xóa màu ban đêm của đối tượng này] ở dưới phần chọn màu. Chỉ màu ban đêm bị xóa, màu thường ngày được giữ lại.
  5. Xong xuôi thì dùng [Chép mã] để sao chép mẫu thẻ rồi dán vào Anki.

Trong lúc chế độ ban đêm đang bật, bạn chỉ đổi được màu. Phông chữ, cỡ chữ, căn lề và chiều cao dòng sẽ bị mờ đi và khóa lại. Những giá trị này không có lý do gì phải khác nhau giữa ngày và đêm, và nếu chỉ định riêng cho ban đêm thì sau này khi bạn đổi cỡ chữ thường ngày, riêng phần ban đêm lại kẹt ở giá trị cũ và lệch nhau. Cỡ chữ hay căn lề thì cứ tắt chế độ ban đêm rồi đổi, chúng sẽ áp dụng cho cả hai.

CSS thật sự được tạo ra

Quy tắc mà ankieditor ghi vào phần kiểu dáng của mẫu thẻ có dạng thế này.

.card.nightMode { background-color: #2f2f31; }

.nightMode .answer { color: #7fb2ff; }

Toàn bộ thẻ thì dùng .card.nightMode, còn phần tử bên trong thẻ thì viết .nightMode rồi đến phần tử đó. Đây đúng là hai dạng mà tài liệu hướng dẫn của Anki chỉ ra, và vì bản máy tính, AnkiDroid lẫn AnkiMobile đều dùng cùng một dấu hiệu nên nó chạy trên mọi thiết bị. Nếu muốn tự tay viết thì bạn dán thẳng đoạn mã này vào mẫu thẻ cũng được.

Nên chọn màu nào

Trên nền tối thì nguyên tắc cơ bản là dịch sang phía sáng hơn trong cùng hệ màu. Đổi hẳn sang màu khác thì ấn tượng của thẻ thay đổi và càng dễ rối.

  • Xanh dương → xanh da trời (#1e6fd9#7fb2ff) — đây là cặp phổ biến nhất cho đáp án hoặc phần làm nổi chỗ trống.
  • Đỏ → cam đào, hồng nhạt (#c0392b#ff9b8a) — dùng cho phần đánh dấu sai hoặc câu cảnh báo.
  • Xám đậm → xám nhạt (#666666#aaaaaa) — dùng cho những dòng cần yếu hơn nội dung chính như câu ví dụ hay nguồn trích.
  • Nền dạ quang → nền tối + chữ sáng — để nguyên chữ đen trên nền vàng thì ban đêm nó nhảy ra quá mức. Hạ nền xuống tông nâu đậm và làm chữ sáng lên thì mắt dễ chịu hơn.

Nên tránh màu trắng tinh (#ffffff). Trên nền tối mà tương phản mạnh quá thì chữ trông như bị nhòe, ôn lâu sẽ mỏi. Một màu xám rất sáng (cỡ #e8e8e8) thì dễ chịu hơn.

Những điểm cần lưu ý

Mỗi thiết bị một màu nền hơi khác nhau. Anki không cố định màu nền ban đêm trong mẫu thẻ mà để ứng dụng tự quyết định. Nghĩa là tông nền tối của bản máy tính và bản di động có thể khác nhau đôi chút. Vì vậy màu bám sát nền (ví dụ chữ xám đậm gần trùng với nền) có thể chỉ hiện rõ trên một thiết bị. Hãy chừa một khoảng chênh lệch độ sáng rộng rãi.

Màu đường phân cách ban đêm cũng giữ nguyên. Màu bạn đặt cho đường phân cách là màu của một phần tử riêng chứ không phải thiết lập cho cả thẻ, nên chế độ ban đêm không đụng tới. Nếu bạn chọn một đường xám rất nhạt thì trên nền tối nó biến mất. An toàn hơn là chỉ định riêng màu ban đêm cho đường phân cách, hoặc ngay từ đầu chọn tông trung tính.

Phải đặt riêng cho từng Kiểu Phiếu. Mẫu thẻ được lưu theo từng Kiểu Phiếu, nên nếu bạn dùng nhiều Kiểu Phiếu thì phải sửa từng cái.

Câu hỏi thường gặp

Chế độ ban đêm của Anki không tự động đảo màu sao?

Không đảo. Nó chỉ đổi nền thẻ và màu chữ mặc định sang phía tối, còn màu bạn tự chỉ định trong mẫu thẻ thì giữ nguyên. Nếu đảo tự động thì cả những màu bạn cố ý chọn cũng hỏng theo, nên Anki cố tình hoạt động như vậy. Màu của từng phần thì bạn phải chỉ định riêng bản ban đêm.

Màu đặt trong chế độ ban đêm có làm đổi luôn màu thường ngày không?

Không đổi. Màu ban đêm được ghi thành một quy tắc riêng và chỉ áp dụng khi ở chế độ ban đêm. Màu thường ngày vẫn còn nguyên, và bạn tắt chế độ ban đêm trong ankieditor là thấy ngay màn hình đã trở về màu gốc.

Tôi không đổi nền mà thẻ vẫn trắng nguyên.

Nhiều khả năng mẫu thẻ đã có sẵn một màu nền dành riêng cho ban đêm. Cứ để chế độ ban đêm bật, nhấp vào chỗ trống trên thẻ rồi bấm [Xóa màu ban đêm của đối tượng này] là quay về nền ban đêm mặc định của Anki.

Vấn đề đường phân cách không hiện trong chế độ ban đêm được bàn kèm bí quyết chọn màu ở Làm dày đường phân cách khi mặt trước và mặt sau dính vào nhau. Còn cách đổi hẳn màu nền của thẻ thì xem Đặt màu nền thẻ khác nhau cho từng Kiểu Phiếu.