Topbalk met reviewscore en header met infoblokken Nieuw
Bovenkant voor een praktijk of winkel: smalle topbalk met reviewscore en aantal, werkgebied en spoednummer, daaronder een header met drie infoblokken (bellen, adres, openingstijden). De openingstijden rekenen live uit of je open bent en klappen uit tot een weekoverzicht (knop met aria-expanded, Esc sluit). Puur HTML/CSS plus een kleine klok in JS; zonder JS staan de vaste tijden er gewoon.
Voor Maarssen, Breukelen, Oud-Zuilen en Utrecht-Noord
Spoed 24/7 0346 55 12 80- Bel ons0346 55 12 00
- Adres · plan je routeBisonspoor 1120, Maarssen
-
Openingstijden balie en spreekuur Buiten deze tijden: bel 0346 55 12 80, er is altijd een dierenarts bereikbaar.
Oktober is gebitsmaand · gratis gebitscheck bij elke vaccinatie
Dierenarts in Maarssen, ook buiten kantoortijd bereikbaar
Vier dierenartsen en zes paraveterinairen voor honden, katten, konijnen en kleine huisdieren. Eigen operatiekamer, röntgen en echo in huis.
Zo gebruik je het
- Plak de HTML op de plek waar het onderdeel moet komen.
- Zet de CSS in je stylesheet. Alle klassen hebben een eigen voorvoegsel, dus niets botst met je eigen opmaak.
- Voeg de JavaScript toe en roep init() aan met het element waar de HTML in staat.
<!-- Topbalk met reviewscore en header met infoblokken · NedDev · eigen werk. -->
<div class="jouw-container">
<div class="dkv">
<div class="dkv__top">
<div class="dkv__top-in">
<a class="dkv__score" href="#" aria-label="Beoordeeld met 4,9 van 5 uit 386 Google-reviews">
<span class="dkv__stars" aria-hidden="true"><svg viewBox="0 0 100 20"><defs><clipPath id="dkv-clip"><rect width="98" height="20"/></clipPath></defs><g class="dkv__st-bg"><path id="dkv-s" d="M10 1.5l2.6 5.4 5.9.8-4.3 4.1 1 5.8L10 14.8l-5.2 2.8 1-5.8L1.5 7.7l5.9-.8z"/><use href="#dkv-s" x="20"/><use href="#dkv-s" x="40"/><use href="#dkv-s" x="60"/><use href="#dkv-s" x="80"/></g><g class="dkv__st-fg" clip-path="url(#dkv-clip)"><use href="#dkv-s"/><use href="#dkv-s" x="20"/><use href="#dkv-s" x="40"/><use href="#dkv-s" x="60"/><use href="#dkv-s" x="80"/></g></svg></span>
<b>4,9</b><span class="dkv__score-n">uit 386 Google-reviews</span>
</a>
<p class="dkv__area"><svg class="dkv__i" viewBox="0 0 20 20" aria-hidden="true"><path d="M10 18s-5.5-5.2-5.5-9.3a5.5 5.5 0 0 1 11 0C15.5 12.8 10 18 10 18z"/><circle cx="10" cy="8.6" r="2"/></svg>Voor Maarssen, Breukelen, Oud-Zuilen en Utrecht-Noord</p>
<a class="dkv__spoed" href="tel:+31346551280"><span class="dkv__pulse" aria-hidden="true"></span>Spoed 24/7 <b>0346 55 12 80</b></a>
</div>
</div>
<div class="dkv__head">
<div class="dkv__head-in">
<a class="dkv__logo" href="#" aria-label="Dierenkliniek De Vecht, naar de homepage">
<svg viewBox="0 0 40 40" aria-hidden="true"><rect width="40" height="40" rx="9" fill="#0f4c47"/><path d="M9 13c4 0 6 3 7.5 7s3.5 9 3.5 9 2-5 3.5-9 3.5-7 7.5-7" fill="none" stroke="#f3ece1" stroke-width="2.6" stroke-linecap="round"/><path d="M8 29c6-2.2 18-2.2 24 0" fill="none" stroke="#d9643a" stroke-width="2.6" stroke-linecap="round"/></svg>
<span><small>Dierenkliniek</small>De Vecht</span>
</a>
<ul class="dkv__info">
<li><a class="dkv__blk" href="tel:+31346551200"><svg class="dkv__i" viewBox="0 0 20 20" aria-hidden="true"><path d="M5.2 2.8h2.6l1.3 3.6-1.8 1.2a9 9 0 0 0 5.1 5.1l1.2-1.8 3.6 1.3v2.6a1.6 1.6 0 0 1-1.7 1.6C9 15.9 4.1 11 3.6 4.5a1.6 1.6 0 0 1 1.6-1.7z"/></svg><span><small>Bel ons</small><b>0346 55 12 00</b></span></a></li>
<li><a class="dkv__blk" href="#"><svg class="dkv__i" viewBox="0 0 20 20" aria-hidden="true"><path d="M10 18s-5.5-5.2-5.5-9.3a5.5 5.5 0 0 1 11 0C15.5 12.8 10 18 10 18z"/><circle cx="10" cy="8.6" r="2"/></svg><span><small>Adres · plan je route</small><b>Bisonspoor 1120, Maarssen</b></span></a></li>
<li class="dkv__hrs">
<button class="dkv__blk dkv__blk--btn" type="button" aria-expanded="false" aria-controls="dkv-week"><svg class="dkv__i" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="7.5"/><path d="M10 5.6V10l2.8 1.8"/></svg><span><small class="dkv__now"><i class="dkv__dot"></i><em>Openingstijden</em></small><b class="dkv__when">ma tot vr 08:00 tot 18:00</b></span><svg class="dkv__chev" viewBox="0 0 20 20" aria-hidden="true"><path d="M6 8l4 4 4-4"/></svg></button>
<div id="dkv-week" class="dkv__week" hidden>
<table><caption>Openingstijden balie en spreekuur</caption><tbody></tbody></table>
<p>Buiten deze tijden: bel <a href="tel:+31346551280">0346 55 12 80</a>, er is altijd een dierenarts bereikbaar.</p>
</div>
</li>
</ul>
<a class="dkv__cta" href="#">Afspraak maken</a>
</div>
</div>
<div class="dkv__nav"><ul class="dkv__nav-in"><li><a href="#" aria-current="page">Honden en katten</a></li><li><a href="#">Konijnen en knagers</a></li><li><a href="#">Vogels en reptielen</a></li><li><a href="#">Gebitszorg</a></li><li><a href="#">Tarieven</a></li><li><a href="#">Over de kliniek</a></li><li><a href="#">Contact</a></li></ul></div>
<div class="dkv__hero">
<div class="dkv__hero-in">
<div>
<p class="dkv__kick">Oktober is gebitsmaand · gratis gebitscheck bij elke vaccinatie</p>
<h2 class="dkv__h">Dierenarts in Maarssen, ook buiten kantoortijd bereikbaar</h2>
<p class="dkv__lead">Vier dierenartsen en zes paraveterinairen voor honden, katten, konijnen en kleine huisdieren. Eigen operatiekamer, röntgen en echo in huis.</p>
</div>
<img class="dkv__img" src="https://neddev.com/lab-media/topbalk-vertrouwen-1.webp" alt="Dierenarts onderzoekt een beagle op de behandeltafel" loading="lazy">
</div>
</div>
<div class="dkv__demo"><span>Demo, zet de klok op</span><button type="button" data-dkv-t="nu" aria-pressed="true">nu</button><button type="button" data-dkv-t="2,17,35" aria-pressed="false">di 17:35</button><button type="button" data-dkv-t="6,13,0" aria-pressed="false">za 13:00</button><button type="button" data-dkv-t="0,10,0" aria-pressed="false">zo 10:00</button></div>
</div>
</div>/* Topbalk met reviewscore en header met infoblokken · NedDev · eigen werk. */
/* fonts (Fontshare): zodiak@400,700 + general-sans@400,500,600 */
.dkv{--dkv-teal:#0f4c47;--dkv-teal2:#176159;--dkv-sand:#f3ece1;--dkv-coral:#d9643a;--dkv-ink:#13201e;--dkv-mut:#556461;--dkv-line:#e2d9ca;--dkv-ok:#24835a;--dkv-warn:#b7790c;background:#fff;color:var(--dkv-ink);font-family:'General Sans',sans-serif;box-sizing:border-box}
.dkv *,.dkv *::before,.dkv *::after{box-sizing:border-box}
.dkv a{color:inherit}
.dkv a:focus-visible,.dkv button:focus-visible{outline:2px solid var(--dkv-coral);outline-offset:2px;border-radius:4px}
.dkv__i{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.dkv__top{background:var(--dkv-teal);color:#fff;font-size:13px}
.dkv__top-in{max-width:1200px;margin:0 auto;padding:0 32px;height:40px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.dkv__score{display:inline-flex;align-items:center;gap:8px;text-decoration:none;white-space:nowrap}
.dkv__score:hover .dkv__score-n{text-decoration:underline;text-underline-offset:3px}
.dkv__stars svg{width:78px;height:15px;display:block}
.dkv__st-bg{fill:rgba(255,255,255,.28)}.dkv__st-fg{fill:#f6c453}
.dkv__score b{font-weight:600;font-variant-numeric:tabular-nums}
.dkv__score-n{color:rgba(255,255,255,.82)}
.dkv__area{margin:0;display:flex;align-items:center;gap:6px;color:rgba(255,255,255,.82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.dkv__area .dkv__i{width:15px;height:15px}
.dkv__spoed{display:inline-flex;align-items:center;gap:8px;text-decoration:none;white-space:nowrap;padding:5px 10px;margin-right:-10px;border-radius:4px;transition:background-color .18s}
.dkv__spoed:hover{background:rgba(255,255,255,.1)}
.dkv__spoed b{font-weight:600;font-variant-numeric:tabular-nums}
.dkv__pulse{width:8px;height:8px;border-radius:50%;background:#ff8a5c;box-shadow:0 0 0 0 rgba(255,138,92,.6);animation:dkv-pulse 2.4s infinite}
@keyframes dkv-pulse{70%{box-shadow:0 0 0 7px rgba(255,138,92,0)}100%{box-shadow:0 0 0 0 rgba(255,138,92,0)}}
.dkv__head{border-bottom:1px solid var(--dkv-line)}
.dkv__head-in{max-width:1200px;margin:0 auto;padding:16px 32px;display:flex;align-items:center;gap:28px}
.dkv__logo{display:flex;align-items:center;gap:10px;text-decoration:none;margin-right:auto}
.dkv__logo svg{width:42px;height:42px}
.dkv__logo span{font-family:'Zodiak',serif;font-weight:700;font-size:22px;line-height:1;letter-spacing:-.01em}
.dkv__logo small{display:block;font-family:'General Sans',sans-serif;font-weight:500;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--dkv-mut);margin-bottom:3px}
.dkv__info{list-style:none;margin:0;padding:0;display:flex;gap:6px}
.dkv__hrs{position:relative}
.dkv__blk{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;text-decoration:none;text-align:left;background:none;border:0;font:inherit;color:inherit;cursor:pointer;transition:background-color .18s}
.dkv__blk:hover{background:var(--dkv-sand)}
.dkv__blk>.dkv__i{width:34px;height:34px;padding:8px;border-radius:50%;background:var(--dkv-sand);color:var(--dkv-teal);transition:background-color .18s}
.dkv__blk:hover>.dkv__i{background:#fff}
.dkv__blk small{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--dkv-mut);line-height:1.2}
.dkv__blk small em{font-style:normal}
.dkv__blk b{display:block;font-weight:600;font-size:14.5px;line-height:1.3;font-variant-numeric:tabular-nums;white-space:nowrap}
.dkv__dot{width:8px;height:8px;border-radius:50%;background:#9aa6a3;flex:none}
.dkv__hrs[data-st=open] .dkv__dot{background:var(--dkv-ok)}
.dkv__hrs[data-st=bijna] .dkv__dot{background:var(--dkv-warn)}
.dkv__hrs[data-st=open] .dkv__now em{color:var(--dkv-ok);font-weight:600}
.dkv__hrs[data-st=bijna] .dkv__now em{color:var(--dkv-warn);font-weight:600}
.dkv__chev{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s}
.dkv__blk[aria-expanded=true] .dkv__chev{transform:rotate(180deg)}
.dkv__week{position:absolute;top:calc(100% + 8px);right:0;z-index:5;width:300px;background:#fff;border:1px solid var(--dkv-line);border-radius:10px;padding:14px 16px;box-shadow:0 18px 40px -20px rgba(15,76,71,.35);font-size:14px}
.dkv__week table{width:100%;border-collapse:collapse}
.dkv__week caption{text-align:left;font-weight:600;font-size:13px;color:var(--dkv-mut);padding-bottom:6px}
.dkv__week td{padding:5px 0;border-bottom:1px solid #f0ebe2;font-variant-numeric:tabular-nums}
.dkv__week td+td{text-align:right}
.dkv__week tr.is-today td{font-weight:600;color:var(--dkv-teal)}
.dkv__week p{margin:10px 0 0;font-size:12.5px;color:var(--dkv-mut);line-height:1.45}
.dkv__week p a{color:var(--dkv-teal);font-weight:600}
.dkv__cta{display:inline-flex;align-items:center;height:46px;padding:0 20px;border-radius:8px;background:var(--dkv-coral);color:#fff!important;text-decoration:none;font-weight:600;font-size:15px;white-space:nowrap;transition:background-color .18s}
.dkv__cta:hover{background:#c2532b}
.dkv__cta:active{transform:translateY(1px)}
.dkv__nav{border-bottom:1px solid var(--dkv-line)}
.dkv__nav-in{list-style:none;max-width:1200px;margin:0 auto;padding:0 20px;display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.dkv__nav-in::-webkit-scrollbar{display:none}
.dkv__nav-in a{display:block;padding:13px 12px;font-size:14.5px;font-weight:500;text-decoration:none;white-space:nowrap;border-bottom:2px solid transparent;transition:color .18s,border-color .18s}
.dkv__nav-in a:hover{color:var(--dkv-teal);border-bottom-color:var(--dkv-line)}
.dkv__nav-in a[aria-current]{color:var(--dkv-teal);border-bottom-color:var(--dkv-teal)}
.dkv__hero{background:var(--dkv-sand)}
.dkv__hero-in{max-width:1200px;margin:0 auto;padding:36px 32px;display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center}
.dkv__kick{display:inline-block;margin:0 0 14px;font-size:13px;font-weight:600;color:#8f3a1a;background:#fbe1d4;padding:5px 10px;border-radius:4px}
.dkv__h{font-family:'Zodiak',serif;font-weight:700;font-size:clamp(28px,3.4vw,42px);line-height:1.08;letter-spacing:-.01em;margin:0 0 12px;max-width:20ch}
.dkv__lead{margin:0;font-size:16px;line-height:1.6;color:var(--dkv-mut);max-width:52ch}
.dkv__img{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:10px;display:block}
.dkv__demo{max-width:1200px;margin:0 auto;padding:12px 32px 16px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--dkv-mut)}
.dkv__demo span{font-weight:600;margin-right:4px}
.dkv__demo button{font:500 12px 'General Sans',sans-serif;border:1px solid var(--dkv-line);background:#fff;border-radius:999px;padding:5px 11px;cursor:pointer;color:var(--dkv-ink);transition:background-color .18s}
.dkv__demo button:hover{background:var(--dkv-sand)}
.dkv__demo button[aria-pressed=true]{background:var(--dkv-teal);border-color:var(--dkv-teal);color:#fff}
@media (max-width:1080px){.dkv__info li:nth-child(2){display:none}}
@media (max-width:860px){.dkv__area{display:none}.dkv__head-in{flex-wrap:wrap;gap:10px 14px;padding:14px 16px}.dkv__top-in{padding:0 16px}.dkv__info{order:3;width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.dkv__info li:nth-child(2){display:block}.dkv__blk{flex-direction:column;align-items:flex-start;gap:6px;padding:8px;border:1px solid var(--dkv-line);height:100%;width:100%}.dkv__blk b{font-size:12.5px;white-space:normal;overflow-wrap:anywhere}.dkv__chev{display:none}.dkv__week{left:auto;right:0;width:min(300px,calc(100vw - 40px))}.dkv__hero-in{grid-template-columns:1fr;padding:24px 16px;gap:20px}.dkv__demo{padding:12px 16px 16px}.dkv__nav-in{padding:0 8px}}
@media (max-width:520px){.dkv__score-n{display:none}.dkv__spoed{font-size:12.5px}.dkv__cta{height:40px;padding:0 14px;font-size:14px}.dkv__logo span{font-size:19px}.dkv__blk small{font-size:11px}}
@media (prefers-reduced-motion:reduce){.dkv *{animation:none!important;transition:none!important}}// Topbalk met reviewscore en header met infoblokken · NedDev · eigen werk.
// root = het element waarin de HTML staat
function init(root){
var w=root.querySelector('.dkv');if(!w)return;
var H={0:null,1:[8,0,18,0],2:[8,0,18,0],3:[8,0,20,0],4:[8,0,18,0],5:[8,0,18,0],6:[9,0,12,0]};
var DAG=['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag'],KORT=['zo','ma','di','wo','do','vr','za'];
var hrs=w.querySelector('.dkv__hrs'),btn=hrs.querySelector('button'),pane=w.querySelector('#dkv-week'),now=w.querySelector('.dkv__now em'),when=w.querySelector('.dkv__when'),tb=pane.querySelector('tbody');
var fake=null;
function t2(h,m){return (h<10?'0':'')+h+':'+(m<10?'0':'')+m;}
function next(d){for(var i=1;i<8;i++){var k=(d+i)%7;if(H[k])return {d:k,i:i};}}
function paint(){
var n=new Date(),d=n.getDay(),mins=n.getHours()*60+n.getMinutes();
if(fake){d=fake[0];mins=fake[1]*60+fake[2];}
var o=H[d],st='dicht';
if(o){var a=o[0]*60+o[1],b=o[2]*60+o[3];if(mins>=a&&mins<b)st=(b-mins<=45)?'bijna':'open';
if(st==='open'){now.textContent='Nu open';when.textContent='vandaag tot '+t2(o[2],o[3]);}
else if(st==='bijna'){now.textContent='Sluit over '+(b-mins)+' min';when.textContent='vandaag tot '+t2(o[2],o[3]);}
else if(mins<a){now.textContent='Nu gesloten';when.textContent='vandaag open om '+t2(o[0],o[1]);}}
if(st==='dicht'&&(!o||mins>=o[2]*60+o[3])){var x=next(d);now.textContent='Nu gesloten';when.textContent=(x.i===1?'morgen':KORT[x.d])+' open om '+t2(H[x.d][0],H[x.d][1]);}
hrs.setAttribute('data-st',st);
tb.innerHTML=[1,2,3,4,5,6,0].map(function(k){var v=H[k];return '<tr'+(k===d?' class="is-today"':'')+'><td>'+DAG[k]+(k===d?' (vandaag)':'')+'</td><td>'+(v?t2(v[0],v[1])+' tot '+t2(v[2],v[3]):'alleen spoed')+'</td></tr>';}).join('');
}
function open(v){btn.setAttribute('aria-expanded',v?'true':'false');pane.hidden=!v;}
btn.addEventListener('click',function(){open(pane.hidden);});
w.addEventListener('keydown',function(e){if(e.key==='Escape'&&!pane.hidden){open(false);btn.focus();}});
document.addEventListener('click',function(e){if(!pane.hidden&&!hrs.contains(e.target))open(false);});
w.querySelector('.dkv__demo').addEventListener('click',function(e){var b=e.target.closest('[data-dkv-t]');if(!b)return;
[].forEach.call(w.querySelectorAll('[data-dkv-t]'),function(x){x.setAttribute('aria-pressed',x===b?'true':'false');});
var v=b.getAttribute('data-dkv-t');fake=v==='nu'?null:v.split(',').map(Number);paint();});
paint();setInterval(function(){if(!fake)paint();},60000);
}
init(document.querySelector('.jouw-container'));
Meer uit paginasecties
Iets gezien dat je mooi vindt?
Zet het in je selectie en stuur hem op. Dan bouwen we je site eromheen, in jouw huisstijl.
Neem contact op →