提问人:Volkan 提问时间:7/14/2023 最后编辑:tadmanVolkan 更新时间:10/29/2023 访问量:50
Ruby on Rails 7 在浅色和深色主题之间切换时的闪烁效果
Ruby on Rails 7 flickering effect while switching between light and dark theme
问:
我使用这个 youtube 教程来介绍在主题(浅色、深色或系统默认)之间切换的能力。一切正常,但是存在闪烁效果形式的错误。 例如,我在 LIGHT 主题上,我访问其他子页面,都很好,显示浅色主题。 我切换到深色主题。它有效,但是在访问其他子页面时,在应用深色主题之前,浅色主题会显示一秒钟,从而产生一些闪烁。
本教程中给出的代码更改,用于此主题切换工作:
application.html.erb(可点击链接):
<%= cookies[:theme] %>
<%= link_to 'Light', set_theme_path(theme: 'light') %>
<%= link_to 'Dark', set_theme_path(theme: 'dark') %>
<%= link_to 'System default', set_theme_path %>
theme.scss:
@media (prefers-color-scheme: dark) {
.home {
background:black;
color: white;
}
.home.light {
background: silver;
color: black;
}
}
@media (prefers-color-scheme: light) {
.home {
background: silver;
color: black;
}
.home.dark {
background:black;
color: white;
}
}
routes.rb:
get 'set_theme', to: 'theme#update'
theme_controller.rb:
class ThemeController < ApplicationController
def update
cookies[:theme] = params[:theme]
redirect_to(request.referrer || root_path )
end
end
主题切换有效,但我想删除这种闪烁效果。谁能帮我解决这个问题?
谢谢
答:
1赞
Guillermo Aguirre
10/29/2023
#1
我认为您缺少直接在 HTML 中设置主题,因此它在加载开始时就在那里:
<html class="<%= cookies[:theme] == 'dark' ? 'dark' : 'light' %>">
除此之外,我建议使用 StimulusJS 通过 JS 添加切换和 cookie 设置。
评论