@@ -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---
13221321layout: image
13231322image: /mhm.gif
13241323title: 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---
13281568layout: statement
13291569---
0 commit comments