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.

Muốn mỗi Kiểu Phiếu có một màu nền riêng

Đôi khi thứ bạn muốn đổi không phải màu chữ mà là chính màu nền. Khi ôn lẫn lộn nhiều loại thẻ như từ vựng tiếng Anh, thuật ngữ chuyên ngành và kiến thức phổ thông, mọi thẻ trông y hệt nhau khiến bạn mất một nhịp mới nhận ra mình đang nhìn thẻ nào. Thẻ tiếng Anh giữ nguyên màu trắng, thẻ chuyên ngành màu kem nhạt, thẻ kiến thức phổ thông màu xanh da trời nhạt — chỉ chừng đó khác biệt là đầu bạn đã tự chuyển mạch ngay khi thẻ hiện lên.

Cách làm rất đơn giản. Nhấp vào chỗ trống trên thẻ để chọn Toàn bộ thẻ, rồi chọn màu ở mục Màu nền trong "Định dạng chữ". Nhớ chọn tông nhạt — màu đậm làm giảm độ tương phản với chữ và nhìn lâu sẽ mỏi mắt. Hãy vừa chọn vừa nhìn bản xem trước để chắc rằng chữ vẫn dễ đọc.

Đây là chỗ dễ hiểu lầm. Bạn có thể nghĩ mình đang đặt "màu theo từng bộ thẻ", nhưng không phải vậy — mẫu thẻ trong Anki được áp dụng theo từng Kiểu Phiếu chứ không phải theo bộ thẻ. Nếu bạn dùng Kiểu Phiếu riêng cho từng môn thì cách này chạy đúng như ý; còn nếu bạn dùng chung một Kiểu Phiếu cho nhiều môn thì tất cả những thẻ đó sẽ cùng một màu.

Và đây là điểm ngược lại với những gì bạn nghĩ — màu nền bạn vừa chỉ định thực ra không giữ được sang chế độ ban đêm. Ban đêm, Anki tô lại nền bằng màu tối riêng của nó, và quy tắc đó thắng màu nền .card của Kiểu Phiếu — đúng quy tắc mà bài này đã giải thích ở trên. Vậy nên nếu bạn học chủ yếu vào ban đêm mà vẫn muốn phân biệt Kiểu Phiếu, hãy chỉ định riêng một màu nền chỉ dùng cho ban đêm theo cách đã nói ở trên (quy tắc .card.nightMode tạo ra theo cách đó thì thắng thật), hoặc bỏ hẳn màu nền và phân biệt Kiểu Phiếu bằng màu chữ hay đường phân cách.

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 Muốn mỗi Kiểu Phiếu có một màu nền riêng.