mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-23 12:50:39 +01:00
Support dark/light theme images in markdown (#36922)
This PR matches GitHub's behavior more closely on how to render Markdown images in light/dark mode. Images with source suffix `#gh-dark-mode-only` / `#gh-light-mode-only` will only show when the correct theme is requested. Closes: #35545 --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
@@ -316,6 +316,16 @@ In markup content, we always use bottom margin for all elements */
|
||||
box-sizing: initial;
|
||||
}
|
||||
|
||||
/* GitHub-style dark/light image switching.
|
||||
These fragments are kept in the rendered HTML as part of the `src` attribute.
|
||||
We decide which to show via `data-gitea-theme-dark` on `<html>`, which is
|
||||
mirrored from `--is-dark-theme` in JS (so it also works with auto/custom themes).
|
||||
*/
|
||||
html[data-gitea-theme-dark="true"] .markup img[src*="#gh-light-mode-only"],
|
||||
html[data-gitea-theme-dark="false"] .markup img[src*="#gh-dark-mode-only"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.file-view.markup {
|
||||
padding: 1em 2em;
|
||||
font-size: 16px;
|
||||
|
||||
@@ -2,3 +2,14 @@ import './polyfills.ts';
|
||||
import './relative-time.ts';
|
||||
import './origin-url.ts';
|
||||
import './overflow-menu.ts';
|
||||
import {isDarkTheme} from '../utils.ts';
|
||||
|
||||
function initPageThemeDarkLight() {
|
||||
// Set page's theme color preference as early as possible, to avoid flicker of wrong theme color during page load.
|
||||
const sync = () => document.documentElement.setAttribute('data-gitea-theme-dark', String(isDarkTheme()));
|
||||
sync();
|
||||
// Track system theme changes in case Gitea is using "auto" theme.
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', sync);
|
||||
}
|
||||
|
||||
initPageThemeDarkLight();
|
||||
|
||||
Reference in New Issue
Block a user