Einsatz von modernem CSS mit neuem Markup
<link href="/files/theme/css/standard.css" rel="stylesheet" >
<link href="{{asset('theme/css/standard.css', contao_vfs.files') }}" rel="stylesheet" >
<script src="{{ asset('js/jquery.js', 'contao-components/jquery') }}"></script>
<script src="{{ asset('theme/js/control.js', 'contao_vfs.files') }}"></script>
{{ include('@Contao/j_colorbox') }}
{{ include('@Contao/j_accordion') }}
{{ include('@Contao/j_tablesort') }}
{{ include('@Contao/js_accordion') }}
{{ include('@Contao/js_slider') }}
{{ include('@Contao/js_autofocus') }}
{{ include('@Contao/js_glightbox') }}
{% slot cta %}
<div class="cta">{{ slot() }}</div>
{% endslot %}
{% slot cta %}
<div class="cta">
{{ slot() }}
<p>Wir freuen uns auf ihren Anruf.</p>
</div>
{% endslot %}
{% slot cta %}
<div class="cta">
{{ slot() }}
</div>
{% else %}
<div class="cta">
<p>Alternativer Standardtext, wenn leer.</p>
</div>
{% endslot %}
body {
display : grid;
min-height : 100vh;
@supports (min-height: 100dvh) {
min-height : 100dvh;
}
grid-template-rows : min-content 1fr min-content;
grid-template-areas :
"header"
"main"
"footer";
}
header {
grid-area: header;
}
main {
grid-area: main;
}
footer {
grid-area: footer;
}
body {
display : grid;
min-height : 100vh;
@supports (min-height: 100dvh) {
min-height : 100dvh;
}
grid-template-rows : min-content 1fr min-content;
grid-template-areas :
"header"
"main"
"footer";
&.two-column-left {
grid-template-rows : min-content 1fr min-content min-content;
grid-template-areas :
"header"
"main"
"aside-left"
"footer";
@media only screen and (min-width : 64em) {
grid-template-rows : min-content 1fr min-content;
grid-template-columns : minmax(0, 30rem) minmax(40rem, 1fr);
grid-template-areas :
"header header"
"aside-left main"
"footer footer";
}
}
&.two-column-right {
grid-template-rows : min-content 1fr min-content min-content;
grid-template-areas :
"header"
"main"
"aside-right"
"footer";
@media only screen and (min-width : 64em) {
grid-template-rows : min-content 1fr min-content;
grid-template-columns : minmax(40rem, 1fr) minmax(0, 30rem) ;
grid-template-areas :
"header header"
"main aside-right"
"footer footer";
}
}
&.three-columns {
grid-template-rows : min-content 1fr min-content min-content min-content;
grid-template-areas :
"header"
"main"
"aside-left"
"aside-right"
"footer";
@media only screen and (min-width : 64em) {
grid-template-rows : min-content 1fr min-content min-content;
grid-template-columns : minmax(0, 30rem) minmax(40rem, 1fr);
grid-template-areas :
"header header"
"aside-left main"
"aside-right aside-right"
"footer footer";
}
@media only screen and (min-width : 80em) {
grid-template-rows : min-content 1fr min-content;
grid-template-columns : minmax(0, 30rem) minmax(40rem, 1fr) minmax(0, 30rem);
grid-template-areas :
"header header header"
"aside-left main aside-right"
"footer footer footer";
}
}
}
header {
grid-area: header;
}
main {
grid-area: main;
}
footer {
grid-area: footer;
}
.aside-left {
grid-area: aside-left;
}
.aside-right {
grid-area: aside-right;
}
main {
padding-block : 2rem;
display : grid;
grid-area : main;
column-gap : 1rem;
grid-template-columns : minmax(1rem, 1fr) repeat(12, minmax(0, 5rem)) minmax(1rem, 1fr);
grid-auto-rows: max-content;
> .mod_article {
grid-column : 1 / -1;
display : grid;
grid-template-columns : subgrid;
> :not(.fullwidth) {
grid-column : 2 / span 12;
}
}
}
weiterführende Infos: Konferenzvortrag 2025
Twig-Layout oder FE‑Page