Skip to content

Commit 6e5d7a6

Browse files
committed
doc: classList
1 parent 155a806 commit 6e5d7a6

File tree

15 files changed

+216
-132
lines changed

15 files changed

+216
-132
lines changed

demos/noengine/engine.js

Lines changed: 15 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demos/noengine/sub/engine.js

Lines changed: 15 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 15 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/.vitepress/config.mts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export default defineConfig({
9494
link: '/tutorial/cocos2.x',
9595
items: [
9696
{ text: '模板引擎使用', link: '/tutorial/templateengine'},
97+
{ text: '动态修改样式', link: '/tutorial/style'},
9798
{ text: 'cocos2.x版本适配', link: '/tutorial/cocos2.x'},
9899
{ text: '使用字体', link: '/tutorial/font'},
99100
{ text: '加载中效果实现', link: '/tutorial/loading'},

docs/CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1+
#### 2024.11.22
2+
1. `A` 新增 classList 特性支持;
3+
3. `U` 小游戏插件发布1.0.14版本;
4+
15
#### 2024.11.11
2-
1. `A` 新增insertElement;
6+
1. `A` 新增insertElement
37
2. `U` 优化ts声明协议;
48
3. `U` 小游戏插件发布1.0.13版本;
59

@@ -75,16 +79,20 @@
7579
#### 2022.1.13
7680
1. `U` 支持 dataset 特性
7781
2. `U` 小游戏插件发布 0.0.10 版本
82+
7883
#### 2022.1.9
7984
1. `U` BitMapText 支持 letterSpacing样式,支持解析配置里面的kerning
8085
2. `U` 小游戏插件发布 0.0.9 版本
86+
8187
#### 2021.12.6
8288
1. `F` 修复点击层级的问题;
8389
2. `U` 小游戏插件发布 0.0.8 版本
90+
8491
#### 2021.9.19
8592
1. `F` 修复文档拼写错误;
8693
2. `U` npm 发布1.0.6版本;
8794
3. `F` 修复点击事件不准确[问题](https://github.com/wechat-miniprogram/minigame-canvas-engine/issues/6);
95+
8896
#### 2021.9.2
8997
1. `U` 重写Scrollview,引用[scroller](https://github.com/pbakaus/scroller),支持横向滚动和纵向滚动,体验更好;
9098
2. `A` Scrollview 新增scrollX和scrollY配置,用于标识是否需要横向滚动和纵向滚动;

docs/components/classList.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# ClassList
2+
3+
返回一个元素 class 属性的集合,通过 ClassList 可以动态操作元素的 class 集合。
4+
5+
## 属性
6+
7+
### length
8+
一个整数,元素的 class 个数。
9+
10+
### value
11+
以字符串的形式返回 class 列表的值。
12+
13+
## 方法
14+
15+
### add(className: string)
16+
新增一个 className
17+
18+
### contains(className: string)
19+
检查是否包含给定的 className
20+
21+
### remove(className: string)
22+
删除给定的 className

docs/components/element.md

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
[[toc]]
2-
31
# Element
42

53
Element 是所有组件的基类,Element 描述了所有组件所普遍具有的方法和属性。一些组件继承自 Element 并且增加了一些额外功能的接口描述了具体的行为。
@@ -27,6 +25,34 @@ Element 是所有组件的基类,Element 描述了所有组件所普遍具有
2725
| top | Number | 以父节点左上角为坐标系原点的 Y 坐标值 | -->
2826

2927

28+
## 属性
29+
30+
### dataset
31+
标签上通过 **data-\*** 设置的属性会存到 dataset 字段,方便记录一些节点信息。
32+
33+
### classList: [ClassList](./classList.md)
34+
返回一个元素 class 属性的集合,通过 ClassList 可以动态操作元素的 class 集合,需要特别注意的是,id 会默认添加到 class 集合
35+
36+
```js
37+
// <view id="container" class="info"></view>
38+
const container = Layout.getElementById('container');
39+
40+
console.log(container.classList.value); // `container info`
41+
42+
container.classList.add('test');
43+
44+
container.classList.remove('test');
45+
46+
```
47+
48+
### style
49+
元素的样式集合,可以通过 style 属性动态修改样式。
50+
``` js
51+
let testText = Layout.getElementById('testText');
52+
53+
testText.style.backgroundColor = '#f3f3f3'
54+
```
55+
3056
## 方法
3157

3258
### getElementsById(elementId: string): Element[]
@@ -49,7 +75,6 @@ Layout.getElementById(String elementId)
4975
const container = Layout.getElementById('container');
5076
```
5177

52-
5378
### getElementsByClassName(className: string): Element[]
5479

5580
获取包含class为**className**的一组元素。

docs/tutorial/style.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# 动态修改样式
2+
3+
动态修改样式是很常见的需求,Layout 支持了一些场景的动态修改样式的能力。
4+
5+
## style 属性
6+
初始化 Layout 的时候,会传入模板和样式,针对于每个节点,Layout 会根据 id 和 class 属性,从样式表中找出应该生效的样式,最终样式会挂载在 style 属性上。
7+
8+
通过 style 属性,可以动态修改元素的样式,Layout 会判定当前的修改是触发重新布局还是重新渲染,无需其他操作,样式会自动生效。
9+
``` js
10+
let testText = Layout.getElementById('testText');
11+
12+
testText.style.backgroundColor = '#f3f3f3'
13+
```
14+
15+
动态修改 style 很常见的使用场景是缓动系统,详情可见[教程](../api/tween.md)
16+
17+
## classList 属性
18+
通过 style 动态修改样式一般作用于样式修改比较少的场景,如果需要批量修改样式,更好的方式是通过操作 class 的方式,通过 [classList](../components/classList.md) 可以动态操作元素的 class 集合,需要特别注意的是,id 会默认添加到 class 集合。
19+
20+
```js
21+
// <view id="container" class="info"></view>
22+
const container = Layout.getElementById('container');
23+
24+
console.log(container.classList.value); // `container info`
25+
26+
container.classList.add('test');
27+
28+
container.classList.remove('test');
29+
```
30+
31+
## 伪类能力
32+
33+
用来添加一些选择器的特殊效果,目前仅支持最场景的 `:active` 场景,伪类本质上是快捷的修改 style 操作,避免通过 js 反复操作元素样式。
34+
35+
| 属性名 | 支持的值或类型 | 说明 |
36+
| --------------- | ------------------- | ----------- |
37+
| ':active' | Object | **(v1.0.9开始支持)**,当节点触发 'touchstart' 事件的时候触发 |
38+
39+
如下所示,当元素被点击的时候,元素会放大,当点击结束,元素又会重置会原样,这对实现按钮特性的时候尤为有用,不需要单独给按钮绑定点击事件手动对元素进行缩放和重置。
40+
``` json
41+
{
42+
color: '#ffffff',
43+
backgroundColor: '#34a123',
44+
borderRadius: 10,
45+
width: 400,
46+
height: 120,
47+
lineHeight: 120,
48+
fontSize: 50,
49+
textAlign: 'center',
50+
marginTop: 20,
51+
':active': {
52+
transform: 'scale(1.05, 1.05)',
53+
},
54+
}
55+
```
56+
57+
<iframe height="439.15838623046875" style="width: 100%;" scrolling="no" title="Layout Text Button" src="https://codepen.io/yuanzm/embed/MWRoexw?default-tab=js%2Cresult&editable=true" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
58+
See the Pen <a href="https://codepen.io/yuanzm/pen/MWRoexw">
59+
Layout Text Button</a> by yuanzm (<a href="https://codepen.io/yuanzm">@yuanzm</a>)
60+
on <a href="https://codepen.io">CodePen</a>.
61+
</iframe>

packages/devtools/src/demos/helloworld.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { defineComponent } from "vue";
33
44
let template = `
55
<view id="container">
6-
<text id="testText" class="" value="Hello World"></text>
6+
<text id="testText" class="redText" value="Hello World"></text>
77
</view>
88
`;
99

packages/devtools/src/demos/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export default defineComponent({
5151
return {
5252
isDev: true,
5353
54-
tabindex: 4,
54+
tabindex: 5,
5555
};
5656
},
5757
mounted() {

0 commit comments

Comments
 (0)