Vi samler op sammen bagefter...
<Button
variant="primary">
Log in
</Button>
<Button
variant="primary"
size="medium">
Log in
</Button>
---
const { variant, size } = Astro.props;
---
<button class={variant + " " + size}>
<slot />
</button>
<style>
.primary { ... }
.medium { ... }
</style>
---
const { variant, size } = Astro.props;
---
<button class:list={[ variant, size ]} />
<slot />
</button>
<style>
.primary { ... }
.medium { ... }
</style>
---
const { variant, size } = Astro.props;
---
<button data-variant={variant} data-size={size}>
<slot />
</button>
<style>
[data-variant="primary"] { ... }
[data-size="medium"] { ... }
</style>
<nav>
<a href="/">Home</a> <!-- index.astro -->
<a href="/search">Search</a> <!-- search.astro -->
</nav>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>Search</title>
</head>
<body>
<h1>Search</h1>
</body>
</html>
---
import MainLayout from '../layouts/MainLayout.astro';
---
<MainLayout title="Search">
<h1>Search</h1>
</MainLayout>
---
const { title } = Astro.props;
---
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
</head>
<body>
<slot />
</body>
</html>
---
import MainLayout from '../layouts/MainLayout.astro';
---
<MainLayout title="Search">
<h1>Search</h1>
</MainLayout>
---
const { title } = Astro.props;
---
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
</head>
<body>
<slot />
</body>
</html>
---
import MainLayout from '../layouts/MainLayout.astro';
---
<MainLayout title="Search">
<h1>Search</h1>
</MainLayout>
We conventionally use the term “layout” for Astro components that provide common UI elements shared across pages such as headers, navigation bars, and footers.
---
const { title } = Astro.props;
---
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
</head>
<body>
<Nav />
<Topbar />
<slot />
<Footer />
</body>
</html>
Lav undersiden Search med layout og pages.
betinget HTML
<article>
<h2>...</h2>
<p class="badge">New</p>
<img />
</article>
<article>
<h2>...</h2>
<img />
</article>
Astro can conditionally display HTML
<p class="badge">New</p>
---
const visible = true;
---
<article>
<h2>...</h2>
<img />
</article>
Astro can conditionally display HTML
<p class="badge">New</p>
{
}
&&
visible
---
const visible = true;
---
<article>
<h2>...</h2>
<img />
</article>
Astro can conditionally display HTML
<p class="badge">New</p>
{
}
&&
visible
---
const visible = true;
---
<article>
<h2>...</h2>
<img />
</article>
Astro can conditionally display HTML
<p class="badge">New</p>
{
}
&&
visible
hvis visible er sand
---
const visible = true;
---
<article>
<h2>...</h2>
<img />
</article>
Astro can conditionally display HTML
<p class="badge">New</p>
{
}
&&
visible
vis HTML
---
const { newBadge } = Astro.props;
---
<article>
<h2>...</h2>
{newBadge && <p class="badge">New</p>}
<img />
</article>
<CategoryCard
newBadge={true}
...
/>
Astro can conditionally display HTML
{
}
&&
---
const { newBadge } = Astro.props;
---
<article>
<h2>...</h2>
{newBadge && <p class="badge">New</p>}
<img />
</article>
<CategoryCard
newBadge={true}
...
/>
<CategoryCard
newBadge={false}
...
/>
Astro can conditionally display HTML
Dynamiske klasser
<Component
isActive={true}
...
/>
---
const { isActive } = Astro.props;
---
<div class={isActive && "active"}>
...
</div>
Dynamiske klasser
hvis isActive er sand -> "active"
active
Dynamiske klasser
Developer Tools
---
const { isActive } = Astro.props;
---
<div class={isActive && "active"}>
...
</div>
active
Dynamiske klasser
Developer Tools
---
const { isActive } = Astro.props;
---
<div class={isActive && "active"}>
...
</div>
active
npm run build
Laver koden om til almindelig HTML, CSS og JavaScript
Netlify gør det hele for os