@@ -36,177 +36,70 @@ <h1 class="heading-1">Cloud für die öffentliche Verwaltung🇨🇭</h1>
3636
3737< section class ="customers ">
3838 < div class ="container " data-aos ="fade-up ">
39-
40- < div class ="brand-logo text-center ">
41- < div class ="row align-items-center ">
42- < div class ="col-6 col-md-4 col-lg-2 ">
43- < div class ="card ">
44- < img src ="{{ 'static/images/customer-icons/zg.svg'|asseturl }} " alt ="Kanton Zug ">
45- </ div >
46- </ div >
47- < div class ="col-6 col-md-4 col-lg-2 ">
48- < div class ="card ">
49- < img src ="{{ 'static/images/customer-icons/bs.png'|asseturl }} " alt ="Kanton Basel Stadt ">
50- </ div >
51- </ div >
52- < div class ="col-6 col-md-4 col-lg-2 ">
53- < div class ="card ">
54- < img src ="{{ 'static/images/customer-icons/sg.svg'|asseturl }} " alt ="Kanton St. Gallen ">
55- </ div >
56- </ div >
57- < div class ="col-6 col-md-4 col-lg-2 ">
58- < div class ="card ">
59- < img src ="{{ 'static/images/customer-icons/sz.svg'|asseturl }} " alt ="Kanton Schwyz ">
60- </ div >
61- </ div >
62- < div class ="col-6 col-md-4 col-lg-2 ">
63- < div class ="card ">
64- < img src ="{{ 'static/images/customer-icons/gr.svg'|asseturl }} " alt ="Kanton Graubünden ">
65- </ div >
66- </ div >
67- < div class ="col-6 col-md-4 col-lg-2 ">
68- < div class ="card ">
69- < img src ="{{ 'static/images/customer-icons/ar.svg'|asseturl }} "
70- alt ="Kanton Appenzell Ausserrhoden ">
71- </ div >
72- </ div >
73- </ div >
74- < div class ="row align-items-center ">
75- < div class ="col-6 col-md-4 col-lg-2 ">
76- < div class ="card ">
77- < img src ="{{ 'static/images/customer-icons/gl.svg'|asseturl }} " alt ="Kanton Glarus ">
78- </ div >
79- </ div >
80- < div class ="col-6 col-md-4 col-lg-2 ">
81- < div class ="card ">
82- < img src ="{{ 'static/images/customer-icons/lu.svg'|asseturl }} " alt ="Kanton Luzern ">
83- </ div >
84- </ div >
85- < div class ="col-6 col-md-4 col-lg-2 ">
86- < div class ="card ">
87- < img src ="{{ 'static/images/customer-icons/ai.svg'|asseturl }} " alt ="Appenzell Innerrhoden ">
88- </ div >
89- </ div >
90- < div class ="col-6 col-md-4 col-lg-2 ">
91- < div class ="card ">
92- < img src ="{{ 'static/images/customer-icons/sh.svg'|asseturl }} " alt ="Kanton Schaffhausen ">
93- </ div >
94- </ div >
95- < div class ="col-6 col-md-4 col-lg-2 ">
96- < div class ="card ">
97- < img src ="{{ 'static/images/customer-icons/bl.svg'|asseturl }} " alt ="Kanton Basel Landschaft ">
98- </ div >
99- </ div >
100- < div class ="col-6 col-md-4 col-lg-2 ">
101- < div class ="card ">
102- < img src ="{{ 'static/images/customer-icons/stadt-bern.svg'|asseturl }} " alt ="Stadt Bern ">
103- </ div >
104- </ div >
105- </ div >
106- < div class ="row align-items-center ">
107- < div class ="col-6 col-md-4 col-lg-2 ">
108- < div class ="card ">
109- < img src ="{{ 'static/images/customer-icons/winterthur.svg'|asseturl }} " alt ="Stadt Winterhur ">
110- </ div >
111- </ div >
112- < div class ="col-6 col-md-4 col-lg-2 ">
113- < div class ="card ">
114- < img src ="{{ 'static/images/customer-icons/privatim.png'|asseturl }} " alt ="privatim - Konferenz der schweizerischen Datenschutzbeauftragten ">
115- </ div >
116- </ div >
117- < div class ="col-6 col-md-4 col-lg-2 ">
118- < div class ="card ">
119- < img src ="{{ 'static/images/customer-icons/ersigen.png'|asseturl }} " alt ="Gemeinde Ersigen ">
120- </ div >
121- </ div >
122- < div class ="col-6 col-md-4 col-lg-2 ">
123- < div class ="card ">
124- < img src ="{{ 'static/images/customer-icons/ebikon.png'|asseturl }} " alt ="Gemeinde Ebikon ">
125- </ div >
126- </ div >
127- < div class ="col-6 col-md-4 col-lg-2 ">
128- < div class ="card ">
129- < img src ="{{ 'static/images/customer-icons/duerrenaesch.svg'|asseturl }} "
130- alt ="Gemeinde Dürrenäsch ">
131- </ div >
132- </ div >
133- < div class ="col-6 col-md-4 col-lg-2 ">
134- < div class ="card ">
135- < img src ="{{ 'static/images/customer-icons/lauerz.png'|asseturl }} " alt ="Gemeinde Lauerz ">
136- </ div >
137- </ div >
138- </ div >
139- < div class ="row align-items-center ">
140- < div class ="col-6 col-md-4 col-lg-2 ">
141- < div class ="card ">
142- < img src ="{{ 'static/images/customer-icons/neuheim.png'|asseturl }} " alt ="Gemeinde Neuheim ">
143- </ div >
144- </ div >
145- < div class ="col-6 col-md-4 col-lg-2 ">
146- < div class ="card ">
147- < img src ="{{ 'static/images/customer-icons/steinhausen.png'|asseturl }} "
148- alt ="Gemeinde Steinhausen ">
149- </ div >
150- </ div >
151- < div class ="col-6 col-md-4 col-lg-2 ">
152- < div class ="card ">
153- < img src ="{{ 'static/images/customer-icons/huenenberg.png'|asseturl }} "
154- alt ="Gemeinde Hünenberg ">
155- </ div >
156- </ div >
157- < div class ="col-6 col-md-4 col-lg-2 ">
158- < div class ="card ">
159- < img src ="{{ 'static/images/customer-icons/ottenbach.png'|asseturl }} " alt ="Gemeinde Ottenbach ">
160- </ div >
161- </ div >
162- < div class ="col-6 col-md-4 col-lg-2 ">
163- < div class ="card ">
164- < img src ="{{ 'static/images/customer-icons/risch-rotkreuz.png'|asseturl }} "
165- alt ="Gemeinde Risch Rotkreuz ">
166- </ div >
167- </ div >
168- < div class ="col-6 col-md-4 col-lg-2 ">
169- < div class ="card ">
170- < img src ="{{ 'static/images/customer-icons/besenbueren.png'|asseturl }} "
171- alt ="Gemeinde Besenbüren ">
39+ {% set customer_logos = [
40+ {'src': 'static/images/customer-icons/zg.svg', 'alt': 'Kanton Zug'},
41+ {'src': 'static/images/customer-icons/bs.png', 'alt': 'Kanton Basel Stadt'},
42+ {'src': 'static/images/customer-icons/sg.svg', 'alt': 'Kanton St. Gallen'},
43+ {'src': 'static/images/customer-icons/sz.svg', 'alt': 'Kanton Schwyz'},
44+ {'src': 'static/images/customer-icons/gr.svg', 'alt': 'Kanton Graubünden'},
45+ {'src': 'static/images/customer-icons/ar.svg', 'alt': 'Kanton Appenzell Ausserrhoden'},
46+ {'src': 'static/images/customer-icons/gl.svg', 'alt': 'Kanton Glarus'},
47+ {'src': 'static/images/customer-icons/lu.svg', 'alt': 'Kanton Luzern'},
48+ {'src': 'static/images/customer-icons/ai.svg', 'alt': 'Appenzell Innerrhoden'},
49+ {'src': 'static/images/customer-icons/sh.svg', 'alt': 'Kanton Schaffhausen'},
50+ {'src': 'static/images/customer-icons/bl.svg', 'alt': 'Kanton Basel Landschaft'},
51+ {'src': 'static/images/customer-icons/stadt-bern.svg', 'alt': 'Stadt Bern'},
52+ {'src': 'static/images/customer-icons/winterthur.svg', 'alt': 'Stadt Winterhur'},
53+ {'src': 'static/images/customer-icons/privatim.png', 'alt': 'privatim - Konferenz der schweizerischen Datenschutzbeauftragten'},
54+ {'src': 'static/images/customer-icons/ersigen.png', 'alt': 'Gemeinde Ersigen'},
55+ {'src': 'static/images/customer-icons/ebikon.png', 'alt': 'Gemeinde Ebikon'},
56+ {'src': 'static/images/customer-icons/duerrenaesch.svg', 'alt': 'Gemeinde Dürrenäsch'},
57+ {'src': 'static/images/customer-icons/lauerz.png', 'alt': 'Gemeinde Lauerz'},
58+ {'src': 'static/images/customer-icons/neuheim.png', 'alt': 'Gemeinde Neuheim'},
59+ {'src': 'static/images/customer-icons/steinhausen.png', 'alt': 'Gemeinde Steinhausen'},
60+ {'src': 'static/images/customer-icons/huenenberg.png', 'alt': 'Gemeinde Hünenberg'},
61+ {'src': 'static/images/customer-icons/ottenbach.png', 'alt': 'Gemeinde Ottenbach'},
62+ {'src': 'static/images/customer-icons/risch-rotkreuz.png', 'alt': 'Gemeinde Risch Rotkreuz'},
63+ {'src': 'static/images/customer-icons/besenbueren.png', 'alt': 'Gemeinde Besenbüren'},
64+ {'src': 'static/images/customer-icons/musikschule-rontal.svg', 'alt': 'Musikschule Rontal'},
65+ {'src': 'static/images/customer-icons/ph-zug.png', 'alt': 'PH Zug'},
66+ {'src': 'static/images/customer-icons/pro-juventute.svg', 'alt': 'Pro Juventute'},
67+ {'src': 'static/images/customer-icons/universitaet-bern.svg', 'alt': 'Universität Bern'},
68+ {'src': 'static/images/customer-icons/neuenkirch.svg', 'alt': 'Gemeinde Neuenkirch'},
69+ {'src': 'static/images/customer-icons/meggen.png', 'alt': 'Gemeinde Meggen'}
70+ ] %}
71+ {% set logo_sets = customer_logos|batch(12, None)|list %}
72+
73+ < div id ="customerLogoCarousel " class ="brand-logo text-center carousel slide " data-bs-ride ="carousel " data-bs-interval ="3000 ">
74+ < div class ="carousel-inner ">
75+ {% for logo_set in logo_sets %}
76+ < div class ="carousel-item{% if loop.first %} active{% endif %} ">
77+ {% for logo_row in logo_set|batch(6, None) %}
78+ < div class ="row align-items-center ">
79+ {% for logo in logo_row %}
80+ {% if logo %}
81+ < div class ="col-6 col-md-4 col-lg-2 ">
82+ < div class ="card ">
83+ < img src ="{{ logo.src|asseturl }} " alt ="{{ logo.alt }} ">
84+ </ div >
85+ </ div >
86+ {% endif %}
87+ {% endfor %}
88+ </ div >
89+ {% endfor %}
17290 </ div >
173- </ div >
91+ {% endfor %}
17492 </ div >
175- < div class ="row align-items-center ">
176- < div class ="col-6 col-md-4 col-lg-2 ">
177- < div class ="card ">
178- < img src ="{{ 'static/images/customer-icons/musikschule-rontal.svg'|asseturl }} "
179- alt ="Musikschule Rontal ">
180- </ div >
181- </ div >
182- < div class ="col-6 col-md-4 col-lg-2 ">
183- < div class ="card ">
184- < img src ="{{ 'static/images/customer-icons/ph-zug.png'|asseturl }} " alt ="PH Zug ">
185- </ div >
186- </ div >
187- < div class ="col-6 col-md-4 col-lg-2 ">
188- < div class ="card ">
189- < img src ="{{ 'static/images/customer-icons/pro-juventute.svg'|asseturl }} " alt ="Pro Juventute ">
190- </ div >
191- </ div >
192- < div class ="col-6 col-md-4 col-lg-2 ">
193- < div class ="card ">
194- < img src ="{{ 'static/images/customer-icons/universitaet-bern.svg'|asseturl }} "
195- alt ="Universität Bern ">
196- </ div >
197- </ div >
198- < div class ="col-6 col-md-4 col-lg-2 ">
199- < div class ="card ">
200- < img src ="{{ 'static/images/customer-icons/neuenkirch.svg'|asseturl }} "
201- alt ="Gemeinde Neuenkirch ">
202- </ div >
203- </ div >
204- < div class ="col-6 col-md-4 col-lg-2 ">
205- < div class ="card ">
206- < img src ="{{ 'static/images/customer-icons/meggen.png'|asseturl }} "
207- alt ="Gemeinde Meggen ">
208- </ div >
209- </ div >
93+
94+ < div class ="carousel-indicators customers-pagination ">
95+ {% for _ in logo_sets %}
96+ < button
97+ type ="button "
98+ data-bs-target ="#customerLogoCarousel "
99+ data-bs-slide-to ="{{ loop.index0 }} "
100+ {% if loop.first %}class ="active " aria-current ="true "{% endif %}
101+ aria-label ="Slide {{ loop.index }} "> </ button >
102+ {% endfor %}
210103 </ div >
211104 </ div >
212105 </ div >
0 commit comments