You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击深色模式切换按钮如何同步关闭video元素的boxShadow效果

问题原因

你当前的代码逻辑中,每次点击切换按钮都会强制给视频元素设置固定的boxShadow属性,没有判断深色模式的开关状态,所以关闭深色模式时阴影样式永远不会被清除。

修复方案

利用你已经在按钮上切换的lightsoff类作为状态判断依据:当按钮有该类(深色模式开启)时给视频加阴影,没有该类(深色模式关闭)时清空阴影样式即可。
修改后的JS代码如下:

/* show/hide overlay & toggle style of button */
$(".togglelight").click(function() {
  $(this).toggleClass("lightsoff");
  $(".overlay").fadeToggle(700);
  const videoEl = document.getElementById("example-video");
  // 判断当前深色模式状态
  if ($(this).hasClass("lightsoff")) {
    // 深色模式开启,添加阴影
    videoEl.style.boxShadow = "#161616 0px 1px 1px 0px inset, #f44336 0px 50px 100px -20px, #f44336 0px 30px 60px -30px";
  } else {
    // 深色模式关闭,清空阴影
    videoEl.style.boxShadow = "none";
  }
});

可选优化方案

你也可以把阴影样式放到CSS类中统一管理,避免JS硬编码样式,后期维护更灵活:
首先新增CSS规则:

.dark-mode-video-shadow {
  box-shadow: #161616 0px 1px 1px 0px inset, #f44336 0px 50px 100px -20px, #f44336 0px 30px 60px -30px;
}

JS逻辑可以简化为:

$(".togglelight").click(function() {
  $(this).toggleClass("lightsoff");
  $(".overlay").fadeToggle(700);
  $("#example-video").toggleClass("dark-mode-video-shadow");
});

内容的提问来源于stack exchange,提问作者ondravirag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:57:04