Skip to content

Commit a38ee68

Browse files
tonaibongudth
authored andcommitted
feat: add TOC documentation (#49)
1 parent c9aa9f8 commit a38ee68

File tree

1 file changed

+351
-9
lines changed

1 file changed

+351
-9
lines changed

Diff for: builtin/components.md

+351-9
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,359 @@
1-
# Component
1+
## Các component
22

3-
## Tích hợp Component
3+
Trang này liệt kê tất cả các component tích hợp sẵn do Slidev cung cấp. Những component này có thể được **sử dụng trực tiếp** trong slide của bạn.
44

5-
> Các tài liệu của phần này vẫn đang được hoàn thiện. Trước đó, bạn có thể xem trực tiếp tại [source code](https://github.com/slidevjs/slidev/blob/main/packages/client/builtin).
5+
Lưu ý rằng <LinkInline link="guide/theme-addon" /> có thể cung cấp các component bổ sung. Để thêm các component của riêng bạn, xem thêm tại <LinkInline link="guide/component#write" />.
66

7-
## Tùy chỉnh Component
7+
## `Arrow`
88

9-
Tạo một thư mục `components/` trong dự án gốc của bạn và chỉ cần đặt các component Vue tùy chỉnh của bạn bên trong nó, sau đó bạn có thể sử dụng nó với cùng tên trong file markdown của mình!
9+
Vẽ một mũi tên.
1010

11-
Đọc thêm trong phần [Tùy chỉnh](/custom/directory-structure#components).
11+
### Cách sử dụng
1212

13-
## Component do Chủ đề cung cấp
13+
```md
14+
<Arrow x1="10" y1="20" x2="100" y2="200" />
15+
```
1416

15-
Chủ đề cũng có thể cung cấp các component. Vui lòng đọc tài liệu về nó để biết những gì nó cung cấp.
17+
Hoặc:
1618

17-
Kiểm tra thêm trong phần [Cấu trúc thư mục](/custom/directory-structure).
19+
```md
20+
<Arrow v-bind="{ x1:10, y1:10, x2:200, y2:200 }" />
21+
```
22+
23+
Thuộc tính:
24+
25+
- `x1` (`string | number`, bắt buộc): vị trí điểm bắt đầu x
26+
- `y1` (`string | number`, bắt buộc): vị trí điểm bắt đầu y
27+
- `x2` (`string | number`, bắt buộc): vị trí điểm kết thúc x
28+
- `y2` (`string | number`, bắt buộc): vị trí điểm kết thúc y
29+
- `width` (`string | number`, mặc định: `2`): độ rộng của đường thẳng
30+
- `color` (`string`, mặc định: `'currentColor'`): màu của đường thẳng
31+
- `two-way` (`boolean`, mặc định: `false`): vẽ mũi tên hai chiều
32+
33+
## `VDragArrow`
34+
35+
Một component `Arrow` có thể kéo di chuyển.
36+
37+
### Cách sử dụng
38+
39+
<LinkCard link="features/draggable#draggable-arrow" />
40+
41+
Các thuộc tính không liên quan đến vị trí giống như [component `Arrow`](#arrow).
42+
43+
## `AutoFitText`
44+
45+
> Experimental
46+
47+
Một hộp mà kích thước font chữ sẽ tự động điều chỉnh để phù hợp với nội dung. Giống như TextBox trong PowerPoint hoặc Keynote.
48+
49+
### Cách sử dụng
50+
51+
```md
52+
<AutoFitText :max="200" :min="100" modelValue="Some text"/>
53+
```
54+
55+
Thuộc tính:
56+
57+
- `max` (`string | number`, mặc định `100`): Kích thước font tối đa
58+
- `min` (`string | number`, mặc định `30`): Kích thước font tối thiểu
59+
- `modelValue` (`string`, mặc định `''`): nội dung văn bản
60+
61+
## `LightOrDark`
62+
63+
Sử dụng để hiển thị một thứ này hoặc thứ khác tùy theo chế độ sáng tối đang hoạt động.
64+
65+
### Cách sử dụng
66+
67+
Sử dụng với hai slot được đặt tên `#dark``#light`:
68+
69+
```md
70+
<LightOrDark>
71+
<template #dark>Chế độ tối đã được bật</template>
72+
<template #light>Chế độ sáng đã được bật</template>
73+
</LightOrDark>
74+
```
75+
76+
Các thuộc tính được cung cấp trong component `LightOrDark` sẽ có sẵn qua các thuộc tính scoped slot:
77+
78+
```md
79+
<LightOrDark width="100" alt="some image">
80+
<template #dark="props">
81+
<img src="/dark.png" v-bind="props"/>
82+
</template>
83+
<template #light="props">
84+
<img src="/light.png" v-bind="props"/>
85+
</template>
86+
</LightOrDark>
87+
```
88+
89+
Bạn có thể cung cấp markdown trong các slot, nhưng bạn sẽ cần bao quanh nội dung với các dòng trống:
90+
91+
```md
92+
<LightOrDark>
93+
<template #dark>
94+
95+
![dark](/dark.png)
96+
97+
</template>
98+
<template #light>
99+
100+
![light](/light.png)
101+
102+
</template>
103+
</LightOrDark>
104+
```
105+
106+
## `Link`
107+
108+
Chèn một liên kết mà bạn có thể sử dụng để điều hướng đến một slide cụ thể.
109+
110+
### Cách sử dụng
111+
112+
```md
113+
<Link to="42">Đi đến slide 42</Link>
114+
<Link to="42" title="Đi đến slide 42"/>
115+
<Link to="solutions" title="Đi đến các giải pháp"/>
116+
```
117+
118+
Thuộc tính:
119+
120+
- `to` (`string | number`): Đường dẫn của slide cần điều hướng tới (đường dẫn slide bắt đầu từ `1`)
121+
- `title` (`string`): Tiêu đề hiển thị
122+
123+
Bạn có thể sử dụng một chuỗi làm `to`, miễn là route tương ứng tồn tại, ví dụ:
124+
125+
```md
126+
---
127+
routeAlias: solutions
128+
---
129+
130+
# Now some solutions!
131+
```
132+
133+
## `PoweredBySlidev`
134+
135+
Hiển thị "Powered by Slidev" với liên kết đến trang web của Slidev.
136+
137+
## `RenderWhen`
138+
139+
Hiển thị các slot phụ thuộc vào việc ngữ cảnh có khớp hay không (ví dụ như khi chúng ta đang ở chế độ trình bày).
140+
141+
### Cách sử dụng
142+
143+
```md
144+
<RenderWhen context="presenter">Chỉ hiển thị trong chế độ trình bày.</RenderWhen>
145+
```
146+
147+
Loại ngữ cảnh: `'main' | 'visible' | 'print' | 'slide' | 'overview' | 'presenter' | 'previewNext'`
148+
149+
Thuộc tính:
150+
151+
- `context` (`Context | Context[]`): một ngữ cảnh hoặc mảng các ngữ cảnh mà bạn muốn kiểm tra
152+
- `'main'`: Hiển thị trong cả chế độ slide và trình bày (tương đương với ['slide', 'presenter']),
153+
- `'visible'`: Hiển thị nội dung nếu nó đang hiển thị
154+
- `'print'`: Hiển thị trong chế độ in ấn
155+
- `'slide'`: Hiển thị trong chế độ slide
156+
- `'overview'`: Hiển thị trong chế độ tổng quan
157+
- `'presenter'`: Hiển thị trong chế độ trình bày
158+
- `'previewNext'`: Hiển thị trong chế độ xem slide tiếp theo của người trình bày
159+
160+
Slots:
161+
162+
- `#default`: Hiển thị khi ngữ cảnh khớp
163+
- `#fallback`: Hiển thị khi ngữ cảnh không khớp
164+
165+
## `SlideCurrentNo`
166+
167+
Số slide hiện tại.
168+
169+
### Cách sử dụng
170+
171+
```md
172+
<SlideCurrentNo />
173+
```
174+
175+
## `SlidesTotal`
176+
177+
Tổng số slide.
178+
179+
### Cách sử dụng
180+
181+
```md
182+
<SlidesTotal />
183+
```
184+
185+
## `TitleRenderer`
186+
187+
Chèn tiêu đề chính từ một slide được phân tích dưới dạng HTML.
188+
189+
Tiêu đề và cấp độ tiêu đề tự động được lấy từ phần tử tiêu đề đầu tiên của mỗi slide.
190+
191+
Bạn có thể ghi đè hành vi tự động này cho một slide bằng cách sử dụng cú pháp front matter:
192+
193+
```yml
194+
---
195+
title: Tiêu đề slide tuyệt vời
196+
level: 2
197+
---
198+
```
199+
200+
### Cách sử dụng
201+
202+
Thành phần `<TitleRenderer>` là một component ảo mà bạn có thể nhập với:
203+
204+
```js
205+
import TitleRenderer from '#slidev/title-renderer'
206+
```
207+
208+
Sau đó, bạn có thể sử dụng nó với:
209+
210+
```md
211+
<TitleRenderer no="42" />
212+
```
213+
214+
Thuộc tính:
215+
216+
- `no` (`string | number`): Số của slide mà bạn muốn hiển thị tiêu đề (slides bắt đầu từ `1`)
217+
218+
## `Toc`
219+
220+
Chèn một mục lục.
221+
222+
Nếu bạn muốn một slide không xuất hiện trong component `<Toc>`, bạn có thể sử dụng tùy chọn `hideInToc` trong frontmatter của slide:
223+
224+
```yml
225+
---
226+
hideInToc: true
227+
---
228+
```
229+
230+
Tiêu đề được hiển thị bằng cách sử dụng component [`<Titles>`](#titles).
231+
232+
### Cách sử dụng
233+
234+
```md
235+
<Toc />
236+
```
237+
238+
Thuộc tính:
239+
240+
- `columns` (`string | number`, mặc định: `1`): Số cột hiển thị
241+
- `listClass` (`string | string[]`, mặc định: `''`): Lớp CSS áp dụng cho danh sách mục lục
242+
- `maxDepth` (`string | number`, mặc định: `Infinity`): Cấp độ tối đa của tiêu đề cần hiển thị
243+
- `minDepth` (`string | number`, mặc định: `1`): Cấp độ tối thiểu của tiêu đề cần hiển thị
244+
- `mode` (`'all' | 'onlyCurrentTree'| 'onlySiblings'`, mặc định: `'all'`):
245+
- `'all'`: Hiển thị tất cả các mục
246+
- `'onlyCurrentTree'`: Hiển thị chỉ các mục trong cây hiện tại (mục đang hoạt động, các mục cha và con của mục đang hoạt động)
247+
- `'onlySiblings'`: Hiển thị chỉ các mục trong cây hiện tại và các anh chị em trực tiếp của chúng
248+
249+
## `Transform`
250+
251+
Áp dụng tỷ lệ hoặc biến đổi cho các phần tử.
252+
253+
### Cách sử dụng
254+
255+
```md
256+
<Transform :scale="0.5">
257+
<YourElements />
258+
</Transform>
259+
```
260+
261+
Thuộc tính:
262+
263+
- `scale` (`number | string`, mặc định `1`): giá trị tỷ lệ biến đổi
264+
- `origin` (`string`, mặc định `'top left'`): giá trị gốc của biến đổi
265+
266+
## `Tweet`
267+
268+
Nhúng một tweet.
269+
270+
### Cách sử dụng
271+
272+
```md
273+
<Tweet id="20" />
274+
```
275+
276+
Thuộc tính:
277+
278+
- `id` (`number | string`, bắt buộc): ID của tweet
279+
- `scale` (`number | string`, mặc định `1`): giá trị tỷ lệ biến đổi
280+
- `conversation` (`string`, mặc định `'none'`): tham số nhúng [tweet embed parameter](https://developer.twitter.com/en/docs/twitter-for-websites/embedded-tweets/guides/embedded-tweet-parameter-reference)
281+
- `cards` (`'hidden' | 'visible'`, mặc định `'visible'`): tham số nhúng [tweet embed parameter](https://developer.twitter.com/en/docs/twitter-for-websites/embedded-tweets/guides/embedded-tweet-parameter-reference)
282+
283+
## `VAfter`, `VClick``VClicks`
284+
285+
<LinkCard link="guide/animations#click-animation" />
286+
287+
## `VSwitch`
288+
289+
Chuyển đổi giữa các slot khác nhau dựa trên các lần nhấp.
290+
291+
<LinkCard link="guide/animations#enter-leave" />
292+
293+
- Nếu thuộc tính `unmount` được đặt là `true`, slot trước đó sẽ bị tháo ra khi chuyển sang slot tiếp theo. Mặc định là `false`.
294+
- Sử dụng thuộc tính `tag``childTag` để thay đổi thẻ mặc định của component và các phần tử con của nó. Mặc định là `div`.
295+
- Sử dụng thuộc tính `transition` để thay đổi hiệu ứng chuyển tiếp. Mặc định là `false` (tắt).
296+
297+
## `VDrag`
298+
299+
<LinkCard link="features/draggable" />
300+
301+
## `SlidevVideo`
302+
303+
Nhúng một video.
304+
305+
### Cách sử dụng
306+
307+
```md
308+
<SlidevVideo v-click autoplay controls>
309+
<!-- Bất kỳ thứ gì có thể đi vào thẻ video HTML. -->
310+
<source src="/myMovie.mp4" type="video/mp4" />
311+
<source src="/myMovie.webm" type="video/webm" />
312+
<p>
313+
Trình duyệt của bạn không hỗ trợ video. Bạn có thể tải xuống tại
314+
<a href="/myMovie.mp4">đây</a>.
315+
</p>
316+
</SlidevVideo>
317+
```
318+
319+
Kiểm tra [Tài liệu về thẻ video HTML](https://developer.mozilla.org/docs/Web/HTML/Element/Video) để xem những gì có thể được bao gồm trong slot của component này.
320+
321+
Thuộc tính:
322+
323+
- `controls` (`boolean`, mặc định: `false`): hiển thị điều khiển video
324+
- `autoplay` (`boolean | 'once'`, mặc định: `false`):
325+
- `true` hoặc `'once'`: bắt đầu video chỉ một lần và không khởi động lại khi kết thúc hoặc tạm dừng
326+
- `false`: không tự động bắt đầu video (dựa vào `controls` thay vào đó)
327+
- `autoreset` (`'slide' | 'click'`, mặc định: `undefined`):
328+
- `'slide'`: quay lại đầu video khi quay lại slide
329+
- `'click'`: quay lại đầu video khi quay lại lần nhấp vào component
330+
- `poster` (`string | undefined`, mặc định: `undefined`):
331+
- Nguồn hình ảnh hiển thị khi video không phát.
332+
- `printPoster` (`string | undefined`, mặc định: `undefined`):
333+
- Ghi đè cho `poster` khi in.
334+
- `timestamp` (`string | number`, mặc định: `0`):
335+
- Thời gian bắt đầu của video tính bằng giây.
336+
- `printTimestamp` (`string | number | 'last' | undefined`, mặc định: `undefined`):
337+
- Ghi đè cho `timestamp` khi in.
338+
339+
::: warning
340+
Khi xuất bản, video có thể không tải được vì Chromium không hỗ trợ một số định dạng video. Trong trường hợp này, bạn có thể chỉ định đường dẫn thực thi của trình duyệt. Xem [Đường dẫn thực thi của Chromium](/guide/exporting.html#executable-path) để biết thêm thông tin.
341+
:::
342+
343+
## `Youtube`
344+
345+
Nhúng một video YouTube.
346+
347+
### Cách sử dụng
348+
349+
```md
350+
<Youtube id="luoMHjh-XcQ" />
351+
```
352+
353+
Thuộc tính:
354+
355+
- `id` (`string`, bắt buộc): ID của video YouTube
356+
- `width` (`number`): chiều rộng của video
357+
- `height` (`number`): chiều cao của video
358+
359+
Bạn cũng có thể làm video bắt đầu từ một thời gian cụ thể nếu thêm `?start=1234` vào giá trị ID (với `1234` là số giây).

0 commit comments

Comments
 (0)