Dojo 样式简介

认识Dojo中的界面控件:Dijit <br />Dojo框架区别于其他Ajax框架的一个显著特征就是它的界面控件系统:Dijit。Dijit是Dojo中界面控件的总称,他们使用灵活而且易于理解。每个Dijit控件都是由Dojo类以及控件中使用的图片,CSS等资源文件共同组成。通过Dijit架构,可以方便的创建灵活、可扩展、可定制外观的控件。下面将逐步介绍如何创建、配置Dijit控件,从而将其用在自己的web应用中。<br /><br /> 开始使用Dijit:引入需要的类和资源<br /> <br />前面提到Dijit的组成中除了Dojo类 阅读详情

介绍

Dojo 是基于 HTML 的技术,使用 CSS 为框架中的元素和用它开发的应用程序设置样式。

Dojo 鼓励将结构样式封装在各部件中,以便最大限度复用;同时将外观主题设置到应用程序所有部件上。用户为他们的应用程序设置样式和主题时,这种模式提供了固定的套路,即使混合使用 Dojo 的 @dojo/widgets 库中的部件、由第三方提供的部件或者为特定应用程序开发的内部使用的部件时也是如此。

功能描述
为单个部件设置样式CSS Modules 用于定义,在单个部件的作用域内有效的样式,避免潜在的交叉污染和样式冲突。通过类型化的 CSS 模块导入和 IDE 自动完成功能,部件可以精确的引用 CSS 类名。
强大的主题支持可以轻松开发出支持主题的部件,这样的部件既能使用简化的、中心化的应用程序主题,也能调整或覆盖单个实例的目标样式(如果需要的话)。CLI 工具支持分发自定义主题。
响应式的主题变更与 Dojo 应用程序中的其他响应式状态变更类似,当一个部件或者整个应用程序的主题发生变化时,只有受影响的部件才会重新渲染。
提取 CSS 属性每个 CSS 模块可通过 CSS 自定义属性和 var() 引用集中定义的 :root 样式变量。
简化定义第三方部件的主题应用程序可以轻松扩展主题以覆盖第三方部件,如 Dojo 内置部件库中的部件,Dojo 也提供了开箱即用的主题,应用程序可直接使用。CLI 工具极大简化了主题的创建和组合。

基本用法

注意: 以下示例是按顺序在前一个示例的基础上构建的。每个示例都尽量简短,只突出显示跟上一个示例相比发生变化的部分。

这些示例假定应用程序名为:

package.json

{
	"name": "my-app"
}

应用程序名与部件主题的 key 有关。

为单个部件设置样式

  • 为每个部件单独定义一个 CSS 模块
  • 在部件的 TypeScript 代码中使用相应的类型化的样式类

src/styles/MyWidget.m.css

.root {
	font-family: sans-serif;
}

src/widgets/MyWidget.tsx

import { create, tsx } from '@dojo/framework/core/vdom';

import * as css from '../styles/MyWidget.m.css';

const factory = create();

export default factory(function MyWidget() {
	return <div classes={[css.root]}>My Widget</div>;
});

让部件支持主题

src/widgets/MyWidget.tsx

import { create, tsx } from '@dojo/framework/core/vdom';
import theme from '@dojo/framework/core/middleware/theme';

import * as css from '../styles/MyWidget.m.css';

const factory = create({ theme });

export default factory(function MyWidget({ middleware: { theme } }) {
	const { root } = theme.classes(css);
	return <div classes={[root]}>My Widget</div>;
});

创建主题

  • 使用自定义的主题样式属性重写部件默认的 CSS 类
  • 通过合适的部件主题 key 将一个或多个重写后的样式链接到主题结构中

src/themes/MyTheme/MyWidget.m.css

.root {
	color: hotpink;
	background-color: slategray;
}

src/themes/MyTheme/theme.ts

import * as myWidgetCss from './MyWidget.m.css';

export default {
	'my-app/MyWidget': myWidgetCss
};

提取公共的主题属性

  • 导入一个集中定义的常规 CSS 文件 variables.css,其中定义了 CSS 自定义属性
  • 通过 var() 引用自定义属性

src/themes/variables.css

:root {
	--foreground: hotpink;
	--background: slategray;
}

src/themes/MyTheme/MyWidget.m.css

@import '../variables.css';

.root {
	color: var(--foreground);
	background-color: var(--background);
}

指定默认的应用程序主题

theme 中间件可用于设置应用程序主题。要设置“默认的”或初始化主题,则使用 theme.set 函数,同时用 theme.get 函数确定是否需要设置主题。应该在应用程序的顶级部件中设置默认主题。

src/App.tsx

import { create, tsx } from '@dojo/framework/core/vdom';
import theme from '@dojo/framework/core/middleware/theme';

import myTheme from '../themes/MyTheme/theme';

const factory = create({ theme });

export default factory(function App({ middleware: { theme }}) {
	// if the theme isn't set, set the default theme
	if (!theme.get()) {
		theme.set(myTheme);
	}
	return (
		// the application's widgets
	);
});

注意: 当同时使用基于函数的部件和基于类的部件时,应该使用应用程序注册器来注册主题。当使用基于类的部件时(如 @dojo/widgets) 也是如此。详情参考基于类部件的主题。

更改应用程序主题

src/widgets/ThemeSwitcher.tsx

import { create, tsx } from '@dojo/framework/core/vdom';
import theme from '@dojo/framework/core/middleware/theme';

import myTheme from '../themes/MyTheme/theme';
import alternativeTheme from '../themes/MyAlternativeTheme/theme';

const factory = create({ theme });

export default factory(function ThemeSwitcher({ middleware: { theme } }) {
	return (
		<div>
			<button
				οnclick={() => {
					theme.set(myTheme);
				}}
			>
				Use Default Theme
			</button>
			<button
				οnclick={() => {
					theme.set(alternativeTheme);
				}}
			>
				Use Alternative Theme
			</button>
		</div>
	);
});
保姆级教程:用LoRA微调Chinese-Mistral-7B模型,并一键部署到Ollama(附完整代码) 本文提供了一份详细的LoRA微调Chinese-Mistral-7B模型的保姆级教程,涵盖环境配置、数据预处理、微调实战、模型量化及Ollama部署全流程。通过实战案例和完整代码,帮助开发者快速构建专属中文大模型,适用于医疗、法律等垂直领域。 阅读详情

相关推荐

线性代数笔记【空间曲面】

二次曲面 曲面可以看成是一个动点或一条动曲线按照一定条件或规律运动产生的轨迹 曲面的方程即是该动点的坐标所满足的方程 空间解析几何中,一般会涉及到由曲面写方程和由方程看曲面两种类型问题 曲面与曲面方程 球面方程 球面:空间内与定点的距离等于定长的点的集合 这一定点叫球心,定长叫半径 标准方程 (x−x0)2+(y−y0)2+(z−z0)2=r2(x-x_0)^2+(y-y_0)^2+(z-z_0)^2=r^2(x−x0​)2+(y−y0​)2+(z−z0​)2=r2 球心P0(x0,y0,z0)P_0(

qq_40500005的博客 3246

Dojo 样式进阶

Dojo 中的样式和主题 Dojo 部件最适合作为简单的组件,每个组件处理单一职责。它们应该尽可能的封装和模块化,以提高可重用性,同时避免与应用程序使用的其他组件出现冲突。 可以使用常规的 CSS 为部件设置样式,但是为了达到封装和复用的目标,每个部件应该维护各自的 CSS 模块(CSS module),该模块与部件的源代码存放在各自的文件中。这样就可以独立地设置各部件的样式,而不会与应用程序其他...

blocklang的博客 315

RK3588开发板RKNPU2环境部署实战:更新rknn_server与librknnrt.so详解

本文详细介绍了在RK3588开发板上更新rknn_server与librknnrt.so核心组件的完整实战流程。通过adb工具推送文件、设置权限并执行同步操作,确保RKNPU2环境部署成功,从而解决推理速度慢或初始化失败等问题,提升AI模型运行效率与稳定性。

weixin_29194817的博客 346

具身智能与视觉语言模型(VLA)的技术解析与应用实践

视觉语言动作模型(VLA)作为多模态人工智能的重要分支,通过融合视觉感知、语言理解和动作执行能力,正在推动具身智能的快速发展。其核心技术在于建立跨模态的统一表征学习框架,如采用ViT架构处理视觉输入,结合语言模型进行语义理解,并映射到动作空间。这类技术在工业质检、家庭服务机器人等场景展现出显著优势,例如将新零件检测配置时间从2周缩短至4小时。随着RT-2、PaLM-E等先进模型的出现,VLA领域在2023年论文数量激增217%,凸显其学术价值。关键技术挑战包括实时性优化(如模型量化至INT8)和安全机制设计

culuo8053的博客 515

NRF24L01学习操作教程(二)——NRF实现一对一,一对多通讯

以上内容详细介绍了,使用NRF24L01实现1对1单向通讯、1对1双向通讯、1对多双向通讯。

Joseph Wen的博客 7389

【ACP】2025-最新-疑难题解析- 练习一汇总

他们对您的方案比较满意,作为一个特别看重用户体验的创业公司,他们有一个比较担心的问题:在后端云服务器 ECS 实例相对空闲时,可能会触发减少 ECS 实例的伸缩活动,这时候运行在即将移出伸缩组的 ECS 实例上的应用会被终止,那么发起这些应用的用户的体验会变差。:在使用阿里云的负载均衡 SLB 实例时,做了如下健康检查的配置:响应超时时间为 5 秒,健康检查间隔为 2 秒,不健康阈值为 3,健康阈值为 3,即对于确认一个后端服务器 ECS 实例是健康的,需要连续三次得到正常响应。以下说法哪一项是正确的?

jundao1997的专栏 326

Spring Boot 3集成Druid踩坑指南:四大报错与配置模板

数据库连接池是Java后端工程中承载数据库访问稳定性的核心组件,而Druid凭借其监控、SQL防火墙和连接管理能力成为众多项目的首选。当Spring Boot 3正式发布后,其基于Jakarta EE 9的Servlet API迁移,使得沿用javax.servlet规范的旧版Druid starter面临兼容性挑战。理解命名空间从javax到jakarta的切换原理,是解决升级过程中类加载异常、循环依赖、数据源配置失效及监控页面404等问题的关键。借助官方适配的druid-spring-boot-3-st

weixin_34129696的博客 257

29.Labview界面设计 --- (下篇)自定义控件库、界面布局与外观设计

1.自定义控件外观(自定义控件)1.1 自定义外观库1.2 手动自定义控件外观2. 前面板控件布局方式(控件排布)2.1 模块化控制布局方式2.2 数据采集布局方式3. 前面板外观优化项(背景设计)3.1 前面板背景设计3.2 前面板窗口整理本节第一部分教大家安装一种可以直接用的自定义控件库,第二部分教大家如何自己设计控件并保存调用。

关注我,更多技术问题欢迎私聊~ 4783

用dojo实现动态更换样式

&lt;script type="text/javascript"&gt; dojo.require("dojo.lang.common"); dojo.require("dojo.event.common"); dojo.require("dojo.html.style"); dojo.require("dojo.string.extras"); dojo.require("doj

zhangwenjun8045 272

2026滑块验证码终极实战:缺口检测算法+人机轨迹模拟,识别率从60%飙升至95%全方案

**摘要:2026年AIGC技术发展导致传统验证码失效,滑块验证码成为主流防护手段。本文深入分析了传统方案识别率低的原因,并提出多级检测融合和行为拟合优化方案。通过图像预处理优化、三级缺口检测引擎(差分图像法、Hu矩轮廓匹配、YOLOv8n模型兜底)将识别率提升至99.2%。同时针对轨迹模拟环节,设计了包含抖动特征、时间随机性和个体差异的行为模型,使通过率从12%提升至87%。该方案解决了传统方法在缺口定位精度和轨迹真实性方面的核心痛点,为应对新一代验证码风控提供了完整的技术框架。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1902

2026年全国青少年信息素养大赛算法应用主题赛C++样题及答案解析

2026年全国青少年信息素养大赛算法应用主题赛C++样题

王老师青少年编程 3720

dojo(三):样式处理

test

TrendGrucee的专栏 8947

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 929

学习流行的JavaScript框架20120801-[jQuery,Dojo,MooTools]

这次是这样的一个例子: 有一个表格,最原始的表格,表格里只有数据!他看起来差不多是这样的: HTML代码看起来是这样的: 1: <table id="content1"> 2: <thead> 3: <th>ID</th> 4: ...

weixin_30556959的博客 110

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

dojo中datagrid中行高等样式设置

在dojo中使用控件datagrid,发现很多时候我们没办法在自己定义某些样式,显得很不随机。 以下是自己书写时总结的一些经验: 首先,对一般设置class属性后,想要起样式遵循当前应用,这是改变不大,只需要: .tundra .dojoxGrid,.tundra .dojoxGridS,.tundra .dojoxGridScrollbox{     background-col

xzchenxiao的专栏 2468

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Dojo工具包简介

简述 Dojo 工具包包含了 Web 开发中的常用 JavaScript 工具。Base dojo.js 提供了绝大部分 web 开发都需要的 '必备' API,并提供秉承 "use at will" 哲学的大量实用工具。Dojo 是完全免费的,有 AFL 和 new-BSD Open Source License 两种 License 可选。 可以点击此处下载 Dojo,...

weixin_30344131的博客 670

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

dojo 控件样式修改

require(["dojo"], function(dojo){ // Passing only an ID or node returns the computed style object of the node: dojo.style("thinger"); // Passing a node and a style property returns the c...

weixin_34092455的博客 352

dojo之Button篇

1、设计关键 (1)设置Button背景图片 (2)设计Button点击事件 2、设计步骤 (1)设置Button背景图片       A、样式设置 .btnIcon{ width:30px; height:32px; background:url("../images/search.png") cente

游海东的技术专栏 2333

创建 Dojo 部件简介

翻译 https://github.com/dojo/framework/blob/master/docs/en/creating-widgets/introduction.md Dojo 鼓励编写简单的、模块化组件,并称之为部件,它仅实现应用程序大量需求中的单一职责。部件被设计成可在各种场景中组合和复用,能以响应的方式连接在一起,以满足更复杂的 web 应用程序需求。 部件使用渲染函数返回的...

caisao7252的博客 123

dojo包_使用Dojo工具包的特定于浏览器的样式

dojo包Every JavaScript library aims to cure the pain of dealing with cross-browsers JavaScript issues. The Dojo Toolkit takes that a step further by trying to help you deal with cross-browser CSS issu...

culuo8053的博客 167

dojo中关于dom的操作

dojo中关于dom操作的有以下几个模块: dojo/dom模块 dojo/dom-construct模块 dojo/dom-attr模块 dojo/dom-prop模块 dojo/dom-class模块 dojo/dom-style模块 dojo/dom-form模块 1. dojo/dom模块 该模块定义了核心Dojo DOM API。该模...

shiyangxu的博客 635

Dojo 基础入门(五)

1.            Dojo详解1.1.    通用函数1.1.1.      dojo.require在前面的示例中,其实我们已经看到了dojo.require的使用。它是用来声明将要使用的dojo的组件类型。类似Java中的import语句。Dojo是把代码分成模块,在表现形式上是以文件目录结构存在的,类似Java的包概念。而每个模块下的Dojo类文件,就可以理解为类似

w的专栏 5199

dojo 移动应用_编写定制的Dojo应用程序

我们最近完成了Web 2.0 Dojo原型的开发。 该原型非常广泛,为信息管理提供了新功能。 我们与用户体验团队合作,以确保应用程序可用。 屏幕是由图形Web设计人员设计的,具有专业的外观。 本文记录了我们对该原型的Web 2.0开发的经验。 因为Web 2.0是相对较新的,所以在需要时可能很难入门或不知道如何进行自定义。 我们的Dojo应用程序没有提供开箱即用的外观。 我们需要一个与我们...

cuyi7076的博客 666

Dojo表格与bootstrap 的CSS样式有冲突的问题

Dojo表格与bootstrap 的CSS样式有冲突的问题当采用bootstrap对前台页面进行布局时,如果引用了Dojo的框架,可能会因为渲染顺序,产生一些CSS样式的问题,例如,在引用了bootstrap的样式后,Dojo的表格会出现如下图的一段空白。经试验,是由Dojo的表格控件的元素造成 在Dojo的源码中,dojox/grid/resource/View.html有如下两行<input

AngelaBlog的博客 1261

掌握 Dojo 工具包,第 1 部分: Dojo 入门简介

随着富互联网应用程序(Rich Internet Application,RIA)的发展,一批 JavaScript Toolkit 也随之兴起 , Dojo 便是其中的优秀代表,本系列文章 将由浅入深带领读者走进 Dojo 的世界。本文作为这个系列的开篇 , 主要讲述了 Dojo 的体系架构以及如何安装使用。 伴随 Web 2.0, Ajax 和 RIA 的热潮

NULL BLOG 1844
上一篇: Dojo Build 进阶
下一篇: Dojo 样式进阶
blocklang
博客等级 码龄7年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值