Dojo:主題(theme)切換以及Div蒙板覆蓋
主題的切換本質上來說即使:1、圖片的改變;2、顏色的改變。
以上兩點都是可以css控制的,所以在設計之初,就應該把需要被主題控制的css統一到一個css檔案中,同一個主題的圖片也要分開歸類資料夾。
下面說一下Dojo的主題切換實現:
Html片段:
<link id="firstTheme" rel="stylesheet" type="text/css" href="/dojo/css/firstTheme.css" ></link> <link id="secondTheme" rel="stylesheet" type="text/css" href="/dojo/css/secondTheme.css" disabled="true"></link> <link id="thirdTheme" rel="stylesheet" type="text/css" href="/dojo/css/thirdTheme.css" disabled="true"></link>
從linked引入的css檔案,有disabled屬性可以控制css是否可用。
JS片段:
function changeThemes(newThemes){ dojo.forEach(dojo.query("link"),function(link_theme){ if(link_theme.id != newThemes){ link_theme.disabled = true; }else{ link_theme.disabled = false; } }) }
通過對changeThemes(“secondTheme”)的呼叫,即實現了對link標籤disabled屬性的改變。
切換html,含方便的div半透明蒙板實現,下一步工作既是將之構成dojo類:
View Code
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>主題</title> <style> .theme,.cover{ position:absolute; width:200px; height:160px; } div.container{ position:relative; width:200px; height:160px; float:left; margin-left:10px; } div.cover{ background-color:#333; opacity: 0.0; } b.description{ position:absolute; left:38%; top:40%; font-size:15px; color:#FFF; } </style> <script type="text/javascript"> dojo.require("dojo.fx"); dojo.query("div.cover").connect("mouseover",function(){ dojo.animateProperty({ node: this, duration:1000, properties: { opacity: 0.5 } }).play(); }); dojo.query("div.cover").connect("mouseout",function(){ dojo.animateProperty({ node: this, duration:1000, properties: { opacity: 0 } }).play(); }); </script> </head> <body> <div class="container"> <img class="theme" src="/dojo/resource/image/firstTheme/preview.jpg" /> <div class="cover" onClick="changeThemes(`firstTheme`)"><b class="description">--黑色--</b></div> </div> <div class="container"> <img class="theme" src="/dojo/resource/image/secondTheme/preview.jpg" /> <div class="cover" onClick="changeThemes(`secondTheme`)"><b class="description">--藍色--</b></div> </div> <div class="container"> <img class="theme" src="/dojo/resource/image/thirdTheme/preview.jpg" /> <div class="cover" onClick="changeThemes(`thirdTheme`)"><b class="description">--紅色--</b></div> </div> </body> </html>
相關文章
- hexo切換主題後hexo-theme-landscape報錯Hexo
- (九)主題切換
- 小程式切換主題配色
- echarts 主題動態切換Echarts
- Flutter主題切換之flutter reduxFlutterRedux
- 簡易的主題切換功能
- SVG <mask>蒙板SVG
- 線段覆蓋問題
- 實現Vue專案主題切換Vue
- 深色模式適配和主題切換模式
- Sass應用之實現主題切換
- 企業WiFi覆蓋,解決覆蓋四大難題WiFi
- Web前端主題切換的幾種方案Web前端
- Android 主題動態切換框架:PrismAndroid框架
- Redis主從切換Redis
- MySQL主從切換MySql
- win10主題切換時間設定在哪裡 win10主題切換時間設定方法Win10
- 同步master主分支,覆蓋xxx分支AST
- div-固定在頁面中間,不被其他元素覆蓋
- flutter theme 主題樣式生成工具Flutter
- Flutter UI使用Provide實現主題切換FlutterUIIDE
- HeyUI元件庫 | 如何實現線上切換主題UI元件
- MySQL 主從切換延時高問題分析MySql
- 【離散優化】覆蓋問題優化
- 手工切換MySQL主從MySql
- Redis sentinel主從切換Redis
- mysql主從搭建切換MySql
- 主備切換(failover)AI
- 演算法題:頂點覆蓋問題演算法
- mysql主從複製+主備切換MySql
- Mysql+keepalived主主切換薦MySql
- Silence 主題暗黑模式根據瀏覽器配置,以及切換頁面閃白屏的問題處理模式瀏覽器
- Flutter 樣式基礎之 Theme 主題Flutter
- hexo-theme-next主題設定Hexo
- Android樣式(style)和主題(theme)Android
- Flutter主題切換——讓你的APP也能一鍵換膚FlutterAPP
- 切換頁面主題樣式研究及less教程
- mysql主備切換canal出現的問題解析MySql