Skip to content

Commit e864866

Browse files
committed
Add styles and classes to slids
1 parent bea6f79 commit e864866

File tree

2 files changed

+263
-3
lines changed

2 files changed

+263
-3
lines changed

04-frameworks/03-vue/slides/.vscode/settings.json

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,25 @@
22
"editor.defaultFormatter": "antfu.slidev",
33
"[vue]": {
44
"editor.defaultFormatter": "esbenp.prettier-vscode"
5-
}
5+
},
6+
"workbench.colorCustomizations": {
7+
"activityBar.activeBackground": "#65c89b",
8+
"activityBar.background": "#65c89b",
9+
"activityBar.foreground": "#15202b",
10+
"activityBar.inactiveForeground": "#15202b99",
11+
"activityBarBadge.background": "#945bc4",
12+
"activityBarBadge.foreground": "#e7e7e7",
13+
"commandCenter.border": "#15202b99",
14+
"sash.hoverBorder": "#65c89b",
15+
"statusBar.background": "#42b883",
16+
"statusBar.foreground": "#15202b",
17+
"statusBarItem.hoverBackground": "#359268",
18+
"statusBarItem.remoteBackground": "#42b883",
19+
"statusBarItem.remoteForeground": "#15202b",
20+
"titleBar.activeBackground": "#42b883",
21+
"titleBar.activeForeground": "#15202b",
22+
"titleBar.inactiveBackground": "#42b88399",
23+
"titleBar.inactiveForeground": "#15202b99"
24+
},
25+
"peacock.color": "#42b883"
626
}

04-frameworks/03-vue/slides/slides.md

Lines changed: 242 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ const msg = ref('World! 🔥🔥')
314314

315315

316316
---
317-
layout: section
317+
layout: statement
318318
---
319319

320320
# ¿List@s para Empezar?
@@ -1317,13 +1317,253 @@ title: Lifecycle Hooks
13171317

13181318
</v-clicks>
13191319

1320-
13211320
---
13221321
layout: image
13231322
image: /mhm.gif
13241323
title: Homer
13251324
---
13261325

1326+
---
1327+
layout: section
1328+
---
1329+
1330+
# Estilos: `class` y `style`
1331+
1332+
---
1333+
layout: quote
1334+
---
1335+
1336+
# Clases dinámicas
1337+
1338+
---
1339+
layout: two-cols
1340+
---
1341+
1342+
# Clases dinámicas (condicionales)
1343+
1344+
```vue{all|2|2,6|all}
1345+
<template>
1346+
<div :class="{ active: isActive }"></div>
1347+
</template>
1348+
1349+
<script setup>
1350+
const isActive = ref(true)
1351+
</script>
1352+
```
1353+
1354+
::right::
1355+
1356+
### `:class` (Object syntax)
1357+
1358+
<v-clicks>
1359+
1360+
- (alias de`v-bind:class`)
1361+
- Se le pasa un objecto `:class="{ className: condition }"`
1362+
- En este caso: La clase `'active'` se añade si `isActive` es `true`.
1363+
1364+
</v-clicks>
1365+
1366+
1367+
---
1368+
layout: two-cols
1369+
---
1370+
1371+
# Clases dinámicas (composición)
1372+
1373+
```vue{all|2|2,6-7|all}
1374+
<template>
1375+
<div :class="[class1, class2]"></div>
1376+
</template>
1377+
1378+
<script setup>
1379+
const class1 = 'active'
1380+
const class2 = ref('text-red bg-blue')
1381+
</script>
1382+
```
1383+
1384+
::right::
1385+
1386+
### `:class` (Array syntax)
1387+
1388+
<v-clicks>
1389+
1390+
- (alias de`v-bind:class`)
1391+
- Se le pasa un array `:class="[class1, class2]"`
1392+
- En este caso: Se añaden las clases `'active'`, `'text-red'` y `'bg-blue'`.
1393+
1394+
</v-clicks>
1395+
1396+
---
1397+
layout: two-cols
1398+
---
1399+
1400+
# Clases dinámicas (mezcla)
1401+
1402+
```vue{all|2-5|2-5,9-10|all}
1403+
<template>
1404+
<div :class="[
1405+
class1,
1406+
{ active: isActive }
1407+
]"></div>
1408+
</template>
1409+
1410+
<script setup>
1411+
const class1 = 'text-red'
1412+
const isActive = ref(true)
1413+
</script>
1414+
```
1415+
1416+
::right::
1417+
1418+
### `:class` (Combining syntaxes)
1419+
1420+
<v-clicks>
1421+
1422+
- (alias de`v-bind:class`)
1423+
- Se le pasa un array que puede contener objetos `:class="[class1, { active: isActive }]"`
1424+
- En este caso: Se añaden las clases `'active'` y `'text-red'`.
1425+
1426+
</v-clicks>
1427+
1428+
---
1429+
layout: quote
1430+
---
1431+
1432+
# Estilos en línea
1433+
1434+
---
1435+
layout: two-cols
1436+
---
1437+
1438+
# Estilos en línea
1439+
1440+
```vue{all|2|2,6|all}
1441+
<template>
1442+
<div :style="{ backgroundColor: bgColor }"></div>
1443+
</template>
1444+
1445+
<script setup>
1446+
const bgColor = ref('red')
1447+
</script>
1448+
```
1449+
1450+
::right::
1451+
1452+
### `:style`
1453+
1454+
<v-clicks depth="2">
1455+
1456+
- (alias de`v-bind:style`)
1457+
- Se le pasa un objecto `:style="{ styleName: value }"`
1458+
- Los nombres de las propiedades son "camelCase", como en <logos-javascript /> JS.
1459+
- En este caso: El fondo del elemento será rojo.
1460+
1461+
</v-clicks>
1462+
1463+
---
1464+
layout: quote
1465+
---
1466+
1467+
# Scoped Styles
1468+
1469+
---
1470+
layout: two-cols
1471+
---
1472+
1473+
# Bloque de estilo en los componentes
1474+
1475+
```vue{all|5|2,5-9|all}
1476+
<template>
1477+
<div>Ejemplo</div>
1478+
</template>
1479+
1480+
<style scoped>
1481+
div {
1482+
background-color: red;
1483+
}
1484+
</style>
1485+
```
1486+
1487+
::right::
1488+
1489+
### `scoped`
1490+
1491+
<v-clicks>
1492+
1493+
- Si añade el atributo `scoped` al bloque de estilos, los estilos se aplican solo al componente actual.
1494+
1495+
```vue
1496+
<style>
1497+
/* global styles: leaking */
1498+
</style>
1499+
1500+
<style scoped>
1501+
/* local styles: contained */
1502+
</style>
1503+
```
1504+
1505+
</v-clicks>
1506+
1507+
1508+
---
1509+
layout: quote
1510+
---
1511+
1512+
# <logos-css-3 /> Estilos Globales
1513+
1514+
---
1515+
layout: two-cols
1516+
transition: fade
1517+
---
1518+
1519+
# Estilos Globales (JS/TS)
1520+
1521+
## Opción 1: <logos-typescript-icon /> `import`
1522+
1523+
```ts{all}
1524+
// main.ts
1525+
import { createApp } from 'vue'
1526+
import App from './App.vue'
1527+
// 👇🏽 Importamos los estilos globales
1528+
// Vite se encarga de importarlos en el HTML
1529+
import './styles.css'
1530+
1531+
createApp(App).mount('#app')
1532+
```
1533+
---
1534+
layout: two-cols
1535+
---
1536+
1537+
# Estilos Globales (HTML)
1538+
1539+
## Opción 2: <logos-html-5 /> `link` o `<style>`
1540+
1541+
```html{all}
1542+
<!-- index.html -->
1543+
<!DOCTYPE html>
1544+
<html lang="">
1545+
<head>
1546+
<meta charset="UTF-8">
1547+
<link rel="icon" href="/favicon.ico">
1548+
<link rel="stylesheet" href="/styles.css">
1549+
<style>
1550+
/* global styles */
1551+
</style>
1552+
<title>Vue App</title>
1553+
</head>
1554+
<!-- ... -->
1555+
```
1556+
1557+
::right::
1558+
1559+
<v-clicks>
1560+
1561+
- Normalmente, se importan en el `main.ts` o en el `index.html`.
1562+
- Se pueden importar como un módulo JS o como un archivo CSS normal.
1563+
1564+
</v-clicks>
1565+
1566+
13271567
---
13281568
layout: statement
13291569
---

0 commit comments

Comments
 (0)