More complicated Leave animations in VueJS

I’ve been working with Vue for a few months now and I love the ease with which you can work css animations into it. However, when it came to creating an animation with two elements leaving the dom at the same time, I was stuck. I could also not find much help inline, so once I figured out a way, I thought I’d document it.

The trick is, basically, that when you want two elements to leave the dom at the same time, there has to be a containing element as well. It will also leave the dom. Unfortunately, once it has left the dom, the child elements (the ones you’re really interested in) will be gone as well. This means no fading or moving to the side or anything. Something that isn’t there will not show up as animating – bugger.

For this reason Vue has introduced the ‘duration’ prop. Here is some basic example vue template code:
<template>
<transition name="modal-main" :duration="500" >

    <transition-group name="modal-in-out" appear >

      <div class="class1"></div>

      <div class="class2"></div>

   </transition-group>

</transition>
</template>

The outside ‘transition’ tag is for the containing element. The duration of 500 means that it will stay in the DOM for 500 ms after it’s been given the signal to leave.

This gives the ‘transition-group’ the time to manage the two transitions on the two enclosed divs in there. In VueJS you need transition-group if you want to manage more than one animation at once.

To make it more complete, here are some animations you might want to use:

.modal-main-leave-active .class1 {

animation: fadeout 550ms cubic-bezier(0.605, 0.09, 0.37, 0.9);

}
.modal-main-leave-active .class2 {
animation: slideout 550ms cubic-bezier(0.605, 0.09, 0.37, 0.9);
}


@keyframes fadeout {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}


@keyframes slideout {
0% {
margin-left: 0%;
}
100% {
margin-left: 100%;
}
}

Note that while the ‘duration’ of the main transition is 500ms, the css animations are 550ms. The extra 50ms prevent a weird flickering effect at the end of the leave animation. Basically it means that the element will (for some reason) come back in the dom right after the animation stopped. By making sure that the containing element has left the DOM, I’m also making sure that the flickering doesn’t show. It’s a bit hacky, but it works.

Web Developer Certificaat van Codaisseur

Deze zomer heb ik  me verder verdiept in het programmeervak: bij Codaisseur heb ik me tot full stack developer ontwikkeld.

Voor wie het wat zegt, ik heb Ruby and Rails geleerd, RSpec, JavaScript (incl. ES6, JQuery en Ajax), Mocha, Chai, React, SQL en Redux.

Ik heb version control met Github leren gebruiken (verslavend) en heb met ontwikkeld in TDD en Scrum.

Conversie optimalisatie voor ZZP-ers – maak klanten van bezoekers

Conversie optimalisatie is de kunst om klanten te maken van de bezoekers aan je website.

Conversie = hoeveel je verdient per bezoeker

Optimalisatie = zoveel mogelijk verdienen

Als je naïef naar website traffic kijkt, dan is het goed om veel bezoekers te hebben. Maar als die bezoekers niet echt geïnteresseerd zijn in wat jij te bieden hebt, dan heb je er helemaal niets aan om honderden of zelfs duizenden bezoekers per dag te hebben. Ik weet er alles van: zulke sites heb ik.

Dat is niet erg: die websites inspireren en informeren mensen. Ze hebben geen zakelijk doel.

Andere sites hebben in het hoogseizoen honderden bezoekers per dag en leveren dan duizenden euro’s op. Kijk, daar kun je als zakenvrouw mee weg komen. Dat is brood op de plank, hypotheek betaald etc.

Voor een zzp-er is het echter van belang dat je website klanten op levert. Klanten, niet alleen mensen die opbellen om informatie en vervolgens weer verdwijnen.

Als je gaat zoeken op ‘conversie-optimalisatie’ dan vliegen de termen je om je hoofd: A/B testen, usability, web-analytics, neuromarketing…

Dit soort principes werken als je het type bedrijf hebt waar je statistieken op los kunt laten. Voor de meeste zzp-ers zijn ze volkomen irrelevant. Hier mijn factoren voor conversie-optimalisatie voor zzp-ers:

  • Je bent je verhaal
  • Je netwerk is je belangrijkste bron van klanten
  • Wees uitstekend in wat je doet
  • Laat zien wat je in huis hebt
  • Laat zien wat je niet bent

Je bent je verhaal

Of het nu gaat om 50-plussers op de arbeidsmarkt of zzp-ers: de mensen die de draai naar een baan weten te maken zijn degenen die zichzelf helder weten te presenteren.

Als jij niet weet wat je wilt, kan je netwerk je ook niet aan je volgende klus helpen.

Een goede website bouwer weet niet alleen technisch hoe zij een website opzet, maar kan ook helpen je verhaal helder te krijgen.

Je netwerk is je belangrijkste conversie-factor

Als zzp-er moet je het vooral hebben van je netwerk: Mensen die weten wat je kunt en naar je doorverwijzen. Sympathie, de gunfactor.

Je website helpt je zodat je je verhaal niet twintig keer per dag hoeft te vertellen. Dat doet je website al voor je.

Wees uitstekend in wat je doet

Er zijn een heleboel mensen heel behoorlijk in wat ze doen. In loondienst is dat goed genoeg. In loondienst gaat het er om dat je op de juiste stoel zit en het goed genoeg doet om niet ontslagen te worden.

Als zzp-er ga je van klus naar klus. Je moet jezelf elke keer weer verkopen – de meest authentieke manier om dat te doen is door precies te zijn wat je zegt dat je bent. En laat dat ook zien…

Laat zien wat je in huis hebt

Veel Nederlanders hebben de neiging – en de meeste vrouwen nog meer – om verlegen achter een bosje te gaan zitten en vervolgens te verwachten dat mensen opmerken hoe goed je het doet. Dat werkt misschien op school, maar in het echte leven moet je laten zien wat je in huis hebt.

Je website is een van de plekken om dat te doen. En ja, dit is een principe van conversie optimalisatie – laten zien van autoriteit. (*)

Laat zien wat je niet bent

Een effectieve website voor een zzp-er trekt niet alleen klanten. Een duidelijk verhaal zorgt ook dat mensen die NIET bij jou bedrijf passen afdruipen zonder je lastig te vallen.

Hoe help ik daarbij?

Een acceptabele website in elkaar zetten kunnen heel veel mensen. Misschien ben jij er wel een van.

Ik kan je helpen door je verhaal te stroomlijnen, het ontwerp bij je boodschap aan te laten sluiten en de juiste toon te zetten.

Voetnoot

*) De Cialdini-beïnvloedingsprincipes: sociale bewijskracht (via je netwerk), autoriteit, schaarste, consistentie (je duidelijke verhaal), sympathie, wederkerigheid (jij geeft, de ander voelt zich verplicht terug te geven) en verbondenheid (een gezamenlijk doel, ‘ons’).

bol.com affliate programma en nofollow links

Bol.com heeft vorige week geschreven over of je links naar bol.com, via het affiliate programma, moet voorzien van het nofollow attribuut.

Het antwoord dat ze geven (waar ik overigens niet achter sta) is als volgt:

Google heeft aangegeven dat het een voorstander is voor het gebruik van het nofollow attribuut voor betaalde links op een site. Zo kun je aangeven dat de link er staat omdat er voor betaald is door een adverteerder en dat de link daarom geen “stem” is voor die site. Voor jouw eigen website maakt het dus niet uit of je wel of geen no follow link maakt van je partnerlinks. Het zorgt er dus alleen voor dat ‘spamlinks’ niet mee worden geteld voor de ranking in google.

Die eerste zin klopt:

Google heeft aangegeven dat het een voorstander is voor het gebruik van het nofollow attribuut voor betaalde links op een site.

Belangrijk is te weten dat elke affiliate link in de ogen van Google een betaalde link is. En hoewel het advies van Google niet altijd al te letterlijk genomen moet worden, zou ik dat in dit geval wel aanraden.

Dus zet nofollow in je links naar het bol.com affiliate programma.

Dat gaat als volgt:

<a href=”http://www.site.com/page.html” rel=”nofollow” >Visit My Page</a>

of

<a rel=”nofollow” href=”http://www.site.com/page.html” >Visit My Page</a>

Wat gaat er mis als je dit advies van Google niet op volgt?

1) Je loopt kans dat bol.com de traffic krijgt in plaats van jijzelf.

Stel: je schrijft een recensie over het nieuwste boek van A. Grunberg. Dan wil je natuurlijk dat, mochten mensen op zoek zijn naar recensies van dat boek, jou site boven komt drijven in Google. En dan wil je dat ze doorklikken naar bol.com en het boek kopen zodat jij commissie krijgt.

Probleem: zonder nofollow in je link, is de kans groot dat bol.com hoger in de zoekmachine resultaten terecht komt dan jij. Dat was niet helemaal de bedoeling – althans voor jou. Voor bol.com is het natuurlijk fantastisch: ze hoeven jou niet te betalen en krijgen ook nog meer traffic.

2) Als google weet dat er betaalde links op je site staan, loop je groot risico dat je lager in de zoekresultaten gezet wordt, of er zelfs uit geweerd wordt.

Google heeft een groot probleem met links. Aan de ene kant zijn ze essentieel om te bepalen wat goede / belangrijke / interessante inhoud is op het web. Aan de andere kant weten webmasters dit ook en gaan ze er dus naar sturen.

Er is dus de afgelopen 10 jaar een betaalde link economie ontstaan. Links zijn geld waard.

Google straft dit aan twee kanten af. Stel: Site A linkt naar site B en krijgt daarvoor betaald.

  1. Stel, site B heeft overwegend betaalde links naar zich toe, dan kan die site lager in de zoekmachine resultaten terecht komen, of er zelfs uit verbannen worden.
    Bol.com is overigens te groot om met dit effect te maken te krijgen.
  2. Site A heeft zowel betaalde als onbetaalde links. Dan zijn dit de mogelijke gevolgen (als Google er achter komt):
    1. De links op die site kunnen allemaal als niet tellend te boek gaan staan. Dus die ene link naar bol.com kan betekenen dat ook de links naar je vriendjes hen niet helpen om in Google te ranken.
    2. Als de kwaliteit van site A toch al niet zo hoog is, en site A zelf niet al te goede links naar zich toe heeft, dan kan die betaalde link er toe bijdragen dat site A zelf minder goed in de zoekmachines rankt, of zelfs verbannen wordt.

Conclusie

  • Affiliate links zijn betaalde links
  • Google is almachtig
  • Je kunt het je niet veroorloven het risico te lopen dat je site afgestraft wordt, dus kan je beter gewoon nofollow in al je links naar het bol.com affliate netwerk zetten.

Hoe maak je een goede blogpost titel?

Literaire titels voor blogposts – niet doen!

Laat ik beginnen te zeggen dat er op elke regel uitzonderingen zijn. In het geval van creatieve titels voor blogposts is de duidelijke uitzondering: creatieve blogs. Als je een gedicht online zet, is het logisch dat de titel een literaire titel is, namelijk de titel van het gedicht.

Wil je echter met je blog nieuwe lezers aantrekken, of de kans groot maken dat je abonnees de moeite nemen in hun mail door te klikken van de titel naar de inhoud van je blog, dan zul je moeten zorgen dat de titel van je stukje samenvat waar het over gaat.

De beste titels voor blogposts hebben de volgende eigenschappen: Lees verder Hoe maak je een goede blogpost titel?

Web filters – Gepersonificeerde zoekresultaten in Google en Facebook

Voor web professionals is het geen nieuws: zoekresultaten zijn verschillend voor ieder persoon individueel. Google is al jaren verschillend afhankelijk van waar je woont. Tegenwoordig nemen ze ook mee wat voor computer je gebruikt, wat je eerder gezocht hebt enzovoorts. Dit geldt ook voor Facebook: afhankelijk van welke links je klikt filter facebook zaken uit je nieuwsfeed.

Die krijg je dus nooit meer te zien!

Dat kan behulpzaam zijn. Als je, zoals ik, zelden in facebook inlogt – en ook nog eens zo’n 400 ‘friends’ hebt, staat er nogal wat onzin op je nieuwsfeed. Ik heb me weleens af gevraagd hoe ik de berichten over huishoudelijke zorgen (I want a robomaid) uit mijn feed kon krijgen. Voor de niet-enthousiaste facebooker blijkt het voornaamste filter te zijn: hebben andere mensen er op gereageerd? Maar ik ben maar snel gaan ‘liken’ wat ik wel interessant vind, om de volgende keer dat ik kijk tenminste iets meer van dat soort werk te zien te krijgen.

Dus zo’n filter heeft zin.

Maar het beperkt ons ook. Juist omdat we niet te zien krijgen wat er uit gefilterd wordt.

Eli Pariser heeft een TED talk gegeven (zie hieronder) over die personalisatie en hij kwam er achter dat als verschillende mensen over Egypte googlen, de een van alles over vakantie daar te zien kan krijgen, en de ander vooral informatie krijgt over de problemen daar. Stel je toch voor: je gaat op vakantie naar Egypte zonder te weten dat daar net de regering omver geworpen is.

Dat is de uiterste consequentie van die beleid.

Voor de web professional is er nog een probleem: als mijn zoekresultaten laten zien dat mijn site bovenaan staat, betekent dat dan ook dat andere mensen mijn site te zien krijgen? Het antwoord is, jammer genoeg, nee. Google weet wie jij bent – zelfs als je niet ingelogd bent weten ze wie je ongeveer bent.

Om te weten wat de gemiddelde zoeker wereldwijd te zien krijgt bij het zoeken van bepaalde termen gebruik ik Scroogle. Deze site haalt alle persoonlijke filters uit Google, inclusief localisatie. Wat over blijft is Google zoals we het vroeger kenden: voor iedereen het zelfde.
Voor de Nederlandse markt moet je dan wel weer mee nemen dat het Nederlandse publiek veel vaker Nederlandstalige sites zal zien dan bij zoeken via Scroogle lijkt. Dit geldt vooral als je termen in typt die niet duidelijk Nederlands zijn.

Nu dan eindelijk de video:

Wordcamp NL 2010 – impressies

Na de zakelijke sfeer van de zanox day vorige week is de wordcamp een verademing. Ik kom binnen als de eerste bezoeker en er wordt een foto van me genomen :) Blijkbaar ben ik te vroeg. 9 uur betekent blijkbaar dat je vanaf 9 uur verwacht wordt, niet dat de eerste lezing om 9 uur begint. Het is nu kwart over en de zaal is nog helemaal leeg. [Klopt: ik had gewoon het programma moeten lezen, in plaats van het kaartje. Op het programma staat dat de actie om 9.45 begint.]

Ze hebben hun sponsors goed op orde. Van Microsoft tot Adobe – en zelfs Yoast staat op het kaartje en levert een ‘goodie’ voor de goodie bag. Dat is overigens de enige manier waarop onze beroemdste Nederlandse wordpress expert op het programma staat. Hij geeft geen lezing: zijn dochter is jarig.

In de goodie bag twee t-shirts, veel wordpress stickers en twee buttons. Op elke stoel een flesje water. Bij de opening vertelt Erno Hannink dat wie een stikker op zijn flesje heeft een boek krijgt. Leuke actie.

Dit is de tweede Wordcamp Nederland.

Vorige week voelde ik me nog net niet underdressed. Nu voel ik me nog net niet overdressed. Ik had precies dezelfde outfit aan kunnen doen als ik spreker was geweest. Aan het eind zei een van mijn gesprekspartners over een van de sprekers: in dat shirt zou mijn vader nog niet rond willen lopen… Tja. Maar zakelijk of niet, het geheel was veel gezelliger en leerzamer dan vorige week en ik kom zeker nog een keer.

Bovenstaande foto van onder getekende door Happy Hotelier, Toegevoegd aan de WordCamp NL groep op Flickr. En als je wilt weten wat die foto BOVEN de titel van dit stukje doet, dat is standaard Thesis functionaliteit, net als de thumbnails of de index pagina en de categorie pagina’s.

RGB kleuren in CSS toepassen

Webdesigners kunnen kleuren in CSS op drie manieren definiëren, met kleurnamen, met hexadecimale getallen en met RGB codering. Dat laatste is het meest intuïtief, omdat je er niet voor hoeft te leren welke waarde letters hebben, zoals bij Hex.

p
 {
 color:rgb(0,0,255);
 }

Dat is alles. Daarmee wordt de kleur van je letters blauw.

p
 {
 background:rgb(0,0,255); color:rgb(255,255,255);
 }

Daarmee wordt de achtergrondkleur van je paragraaf blauw en de letters wit.

Speel ermee en je komt er vanzelf achter.

Zie ook de RGB en Hexadecimale kleurcodes.

CSS en Kleurcodes: RGB en Hexadecimaal

Hieronder vindt je de kleurcodes voor CSS voor de belangrijkste kleuren en daarnaast een uitleg over het zelf vinden van kleuren. Je kunt ook kleurnamen gebruiken, maar omdat ik dat zelf nooit doe, heb ik die hier weg gelaten. Zie ook hoe je de Hexadecimale kleuren in CSS kunt gebruiken en het zelfde voor RGB.

Kleur Kleur HEX (hexadecimaal) Kleur in RGB
#000000 rgb(0,0,0)
#FF0000 rgb(255,0,0)
#00FF00 rgb(0,255,0)
#0000FF rgb(0,0,255)
#FFFF00 rgb(255,255,0)
#00FFFF rgb(0,255,255)
#FF00FF rgb(255,0,255)
#C0C0C0 rgb(192,192,192)
#FFFFFF rgb(255,255,255)

De RGB staan voor Rood, Groen en Blauw. Dat is ook de volgorde waarin ze in beide notatiewijzen worden gegeven: eerst rood, dan groen, dan blauw.

Zoals je hieronder kunt zien werkt het systeem vanuit licht. Minder licht is donkerder, lichter is feller.

Rood HEX (hexadecimaal) RGB
#000000 rgb(0,0,0)
#080000 rgb(8,0,0)
#100000 rgb(16,0,0)
#180000 rgb(24,0,0)
#200000 rgb(32,0,0)
#280000 rgb(40,0,0)
#300000 rgb(48,0,0)
#380000 rgb(56,0,0)
#400000 rgb(64,0,0)
#480000 rgb(72,0,0)
#500000 rgb(80,0,0)
#580000 rgb(88,0,0)
#600000 rgb(96,0,0)
#680000 rgb(104,0,0)
#700000 rgb(112,0,0)
#780000 rgb(120,0,0)
#800000 rgb(128,0,0)
#880000 rgb(136,0,0)
#900000 rgb(144,0,0)
#980000 rgb(152,0,0)
#A00000 rgb(160,0,0)
#A80000 rgb(168,0,0)
#B00000 rgb(176,0,0)
#B80000 rgb(184,0,0)
#C00000 rgb(192,0,0)
#C80000 rgb(200,0,0)
#D00000 rgb(208,0,0)
#D80000 rgb(216,0,0)
#E00000 rgb(224,0,0)
#E80000 rgb(232,0,0)
#F00000 rgb(240,0,0)
#F80000 rgb(248,0,0)
#FF0000 rgb(255,0,0)

Gradaties van Grijs

Grijze kleuren zien er kleurloos uit, doordat elke kleur even sterk is. Om een genuanceerd bijna grijs te krijgen hoef je alleen maar de kleur die je wil laten doorschijnen, net iets sterker te maken.

Gray Shades HEX RGB
#000000 rgb(0,0,0)
#080808 rgb(8,8,8)
#101010 rgb(16,16,16)
#181818 rgb(24,24,24)
#202020 rgb(32,32,32)
#282828 rgb(40,40,40)
#303030 rgb(48,48,48)
#383838 rgb(56,56,56)
#404040 rgb(64,64,64)
#484848 rgb(72,72,72)
#505050 rgb(80,80,80)
#585858 rgb(88,88,88)
#606060 rgb(96,96,96)
#686868 rgb(104,104,104)
#707070 rgb(112,112,112)
#787878 rgb(120,120,120)
#808080 rgb(128,128,128)
#888888 rgb(136,136,136)
#909090 rgb(144,144,144)
#989898 rgb(152,152,152)
#A0A0A0 rgb(160,160,160)
#A8A8A8 rgb(168,168,168)
#B0B0B0 rgb(176,176,176)
#B8B8B8 rgb(184,184,184)
#C0C0C0 rgb(192,192,192)
#C8C8C8 rgb(200,200,200)
#D0D0D0 rgb(208,208,208)
#D8D8D8 rgb(216,216,216)
#E0E0E0 rgb(224,224,224)
#E8E8E8 rgb(232,232,232)
#F0F0F0 rgb(240,240,240)
#F8F8F8 rgb(248,248,248)
#FFFFFF rgb(255,255,255)

Webveilige kleuren?

Webveilige kleuren zijn niet meer nodig: hedendaagse schermen kunnen met elke combinatie van kleuren overweg die in de CSS standaarden gebruikt worden. Maar, ze zijn nog wel handig als basis om de juiste kleur te kiezen. Dit zijn ze in Hex.

000000 000033 000066 000099 0000CC 0000FF
003300 003333 003366 003399 0033CC 0033FF
006600 006633 006666 006699 0066CC 0066FF
009900 009933 009966 009999 0099CC 0099FF
00CC00 00CC33 00CC66 00CC99 00CCCC 00CCFF
00FF00 00FF33 00FF66 00FF99 00FFCC 00FFFF
330000 330033 330066 330099 3300CC 3300FF
333300 333333 333366 333399 3333CC 3333FF
336600 336633 336666 336699 3366CC 3366FF
339900 339933 339966 339999 3399CC 3399FF
33CC00 33CC33 33CC66 33CC99 33CCCC 33CCFF
33FF00 33FF33 33FF66 33FF99 33FFCC 33FFFF
660000 660033 660066 660099 6600CC 6600FF
663300 663333 663366 663399 6633CC 6633FF
666600 666633 666666 666699 6666CC 6666FF
669900 669933 669966 669999 6699CC 6699FF
66CC00 66CC33 66CC66 66CC99 66CCCC 66CCFF
66FF00 66FF33 66FF66 66FF99 66FFCC 66FFFF
990000 990033 990066 990099 9900CC 9900FF
993300 993333 993366 993399 9933CC 9933FF
996600 996633 996666 996699 9966CC 9966FF
999900 999933 999966 999999 9999CC 9999FF
99CC00 99CC33 99CC66 99CC99 99CCCC 99CCFF
99FF00 99FF33 99FF66 99FF99 99FFCC 99FFFF
CC0000 CC0033 CC0066 CC0099 CC00CC CC00FF
CC3300 CC3333 CC3366 CC3399 CC33CC CC33FF
CC6600 CC6633 CC6666 CC6699 CC66CC CC66FF
CC9900 CC9933 CC9966 CC9999 CC99CC CC99FF
CCCC00 CCCC33 CCCC66 CCCC99 CCCCCC CCCCFF
CCFF00 CCFF33 CCFF66 CCFF99 CCFFCC CCFFFF
FF0000 FF0033 FF0066 FF0099 FF00CC FF00FF
FF3300 FF3333 FF3366 FF3399 FF33CC FF33FF
FF6600 FF6633 FF6666 FF6699 FF66CC FF66FF
FF9900 FF9933 FF9966 FF9999 FF99CC FF99FF
FFCC00 FFCC33 FFCC66 FFCC99 FFCCCC FFCCFF
FFFF00 FFFF33 FFFF66 FFFF99 FFFFCC FFFFFF