Not finished or the actual piece but how I got there. Here's the finished item:
A Pen by John Healey on CodePen.
<div class="contentContainer bg-white" style="height: 902px;"> | |
<!-- needed --><!--[if IE 7]><div class="ie7-wrap"><![endif]--> | |
<div class="basics-wrap no-js"> | |
<noscript> | |
<h1>Please enable JavaScript to view the content on this page.</h1> | |
</noscript> | |
<ul class="slide-nav"> | |
<!-- <li class="go-prev">↑</li> --> | |
<li><a href="#slide-1" class="NaN">♦</a></li> | |
<li><a href="#slide-2">♢</a></li> | |
<li><a href="#slide-3">♢</a></li> | |
<li><a href="#slide-4">♢</a></li> | |
<li><a href="#slide-5">♢</a></li> | |
<li><a href="#slide-6">♢</a></li> | |
<li><a href="#slide-7">♢</a></li> | |
<li><a href="#slide-8">♢</a></li> | |
<li><a href="#slide-9">♢</a></li> | |
<li><a href="#slide-10">♢</a></li> | |
<li><a href="#slide-11">♢</a></li> | |
<li><a href="#slide-12">♢</a></li> | |
<li><a href="#slide-13">♢</a></li> | |
<li><a href="#slide-14">♢</a></li> | |
<li><a href="#slide-15">♢</a></li> | |
<!-- <li class="go-next">↓</li> --> | |
</ul> | |
<div class="slides-container"> | |
<div class="slide slide-1" id="slide-1"> | |
<div class="headline tip"> | |
<span><em>scroll down to view</em></span> | |
<span class="icon-down">∨</span> | |
</div> | |
</div> | |
<div class="slide" id="slide-2"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/01.jpg" height="1065" width="1866" alt="Pritter Shirt, Bucaneer Pant and Converse Chuck Taylor All Star 70's Hi"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-3"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/02.jpg" height="1065" width="1866" alt="Cayman Shirt and Bucaneer Pant"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-4"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/03.jpg" height="1065" width="1866" alt="Michigan Coat, College Fill T-Shirt, Skill Shorts and Converse Chuck Taylor All Star 70's Lo"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-5"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/04.jpg" height="1065" width="1866" alt="Battle Parka Jacket, Skill Pant and Converse Chuck Taylor All Star 70's Lo"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-6"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/05.jpg" height="1065" width="1866" alt="Detroit Jacket, Pritter Shirt and Bucaneer Pant"> | |
<div class="basics-content"> | |
</div> | |
</div> | |
<div class="slide" id="slide-7"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/06.jpg" height="1065" width="1866" alt="Foster Camo Shirt, Quality T-Shirt, Skill Shorts and Converse Chuck Taylor All Star 70's Hi"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-8"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/07.jpg" height="1065" width="1866" alt="Manor Palm Print Pocket T-Shirt"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-9"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/08.jpg" height="1065" width="1866" alt="Fynn Jacket and College Fill T-Shirt"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-10"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/09.jpg" height="1065" width="1866" alt="State Chambray Shirt, Zip Wallet and Vicious Madera Jeans"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-11"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/10.jpg" height="1065" width="1866" alt="Fuller Long Sleeved Shirt, Travis T-Shirt, Pocket Sweatshirt and Skill Shorts"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-12"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/11.jpg" height="1065" width="1866" alt="Backley 5 Panel Cap and Langley Floral Shirt"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-13"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/12.jpg" height="1065" width="1866" alt="Classic Vest, Pocket T-Shirt and Skill Pant"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-14"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/13.jpg" height="1065" width="1866" alt="Travis T-Shirt"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-16"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/13.jpg" height="1065" width="1866" alt="Travis T-Shirt"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide" id="slide-14"> | |
<img src="http://www.size.co.uk/lib/hlight/carhartt-lookbook-ss14-by-size/images/13.jpg" height="1065" width="1866" alt="Travis T-Shirt"> | |
<div class="basics-content"> | |
<div class="marker"> | |
<span class="trigger">shop</span> | |
<svg class="shop-menu" version="1.1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" enable-background="new 0 0 133.3 296.7" xml:space="preserve"> | |
<polyline class="line" stroke-miterlimit="10" points="44.2,46.8 115.2,117.8 115.2,286.7 "/> | |
<circle class="circle circle1" stroke-miterlimit="10" cx="44.2" cy="46.8" r="37.5"/> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle2 s-circle" stroke-miterlimit="10" cx="115" cy="120" r="11.5"/> | |
<text class="text text1" x="135" y="126">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle3 s-circle" stroke-miterlimit="10" cx="115" cy="171" r="11.5"/> | |
<text class="text text2" x="135" y="177">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle4 s-circle" stroke-miterlimit="10" cx="115" cy="222" r="11.5"/> | |
<text class="text text3" x="135" y="228">T-Shirt: Fred Perry x size?</text> | |
</a> | |
<a xlink:href="/svg/index.html"> | |
<circle class="circle circle5 s-circle" stroke-miterlimit="10" cx="115" cy="274" r="11.5"/> | |
<text class="text text4" x="135" y="281">T-Shirt: Fred Perry x size?</text> | |
</a> | |
</svg> | |
</div> | |
</div> | |
</div> | |
<div class="slide slide-15" id="slide-15"> | |
<div class="headline"> | |
<div class="basics-logo">Carhartt Work In Progress</div> | |
<a href="/brand/carhartt-wip">Shop The Collection</a> | |
</div> | |
</div> | |
</div> | |
<!--[if IE 7]></div><![endif]--> | |
</div> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/1.11.6/TweenLite.min.js" type="text/javascript"></script> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/1.11.6/plugins/ScrollToPlugin.min.js" type="text/javascript"></script> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.touchswipe/1.6.4/jquery.touchSwipe.min.js" type="text/javascript"></script> | |
</div> |
$('.basics-wrap').removeClass('no-js'); | |
// References to DOM elements | |
var $window = $(window); | |
var $document = $(document); | |
// Only links that starts with # | |
var $navButtons = $(".slide-nav a").filter("[href^=#]"); | |
var $navGoPrev = $(".go-prev"); | |
var $navGoNext = $(".go-next"); | |
var $slidesContainer = $(".slides-container"); | |
var $slides = $(".slide"); | |
var $currentSlide = $slides.first(); | |
// Animating flag - is our app animating | |
var isAnimating = false; | |
// The height of the window | |
var pageHeight = $window.innerHeight(); | |
// Key codes for up and down arrows on keyboard. We'll be using this to navigate change slides using the keyboard | |
var keyCodes = { | |
UP : 38, | |
DOWN: 40 | |
} | |
// Going to the first slide | |
goToSlide($currentSlide); | |
// Adding event listeners | |
$window.on("resize", onResize).resize(); | |
$slidesContainer.on("mousewheel DOMMouseScroll", onMouseWheel); | |
$document.on("keydown", onKeyDown); | |
$navButtons.on("click", onNavButtonClick); | |
$navGoPrev.on("click", goToPrevSlide); | |
$navGoNext.on("click", goToNextSlide); | |
// Touch listeners | |
$slidesContainer.swipe({ | |
swipeDown:function() { | |
goToPrevSlide(); | |
}, | |
swipeUp:function() { | |
goToNextSlide(); | |
} | |
}); | |
// Internal functions | |
// When a button is clicked - first get the button href, and then slide to the container, if there's such a container | |
function onNavButtonClick(event) | |
{ | |
// The clicked button | |
var $button = $(this); | |
// The slide the button points to | |
var $slide = $($button.attr("href")); | |
// If the slide exists, we go to it | |
if($slide.length) | |
{ | |
goToSlide($slide); | |
event.preventDefault(); | |
} | |
} | |
// Getting the pressed key. Only if it's up or down arrow, we go to prev or next slide and prevent default behaviour This way, if there's text input, the user is still able to fill it | |
function onKeyDown(event) | |
{ | |
var PRESSED_KEY = event.keyCode; | |
if(PRESSED_KEY == keyCodes.UP) | |
{ | |
goToPrevSlide(); | |
event.preventDefault(); | |
} | |
else if(PRESSED_KEY == keyCodes.DOWN) | |
{ | |
goToNextSlide(); | |
event.preventDefault(); | |
} | |
} | |
// When user scrolls with the mouse, we have to change slides | |
function onMouseWheel(event) | |
{ | |
// Normalize event wheel delta | |
var delta = event.originalEvent.wheelDelta / 30 || -event.originalEvent.detail; | |
// If the user scrolled up, it goes to previous slide, otherwise - to next slide | |
if(delta < -1) | |
{ | |
goToNextSlide(); | |
} | |
else if(delta > 1) | |
{ | |
goToPrevSlide(); | |
} | |
event.preventDefault(); | |
} | |
// If there's a previous slide, slide to it | |
function goToPrevSlide() | |
{ | |
if($currentSlide.prev().length) | |
{ | |
goToSlide($currentSlide.prev()); | |
} | |
} | |
// If there's a next slide, slide to it | |
function goToNextSlide() | |
{ | |
if($currentSlide.next().length) | |
{ | |
goToSlide($currentSlide.next()); | |
} | |
} | |
// Actual transition between slides | |
function goToSlide($slide) | |
{ | |
// If the slides are not changing and there's such a slide | |
if(!isAnimating && $slide.length) | |
{ | |
// Setting animating flag to true | |
isAnimating = true; | |
$currentSlide = $slide; | |
// Sliding to current slide | |
TweenLite.to($slidesContainer, 1, {scrollTo: {y: pageHeight * $currentSlide.index() }, onComplete: onSlideChangeEnd, onCompleteScope: this}); | |
// Animating menu items | |
TweenLite.to($navButtons.filter(".active"), 0.5, {className: "-=active"}); | |
TweenLite.to($navButtons.filter("[href=#" + $currentSlide.attr("id") + "]"), 0.5, {className: "+=active", onComplete:contentActive, onCompleteScope: this}); | |
} | |
} | |
// Once the sliding is finished, we need to restore "isAnimating" flag. You can also do other things in this function, such as changing page title | |
function onSlideChangeEnd() | |
{ | |
isAnimating = false; | |
} | |
// On slide change the active state of the nav link | |
function contentActive() | |
{ | |
$navButtons.filter("[href=#" + $currentSlide.attr("id") + "]").html('♦'); | |
$navButtons.not("[href=#" + $currentSlide.attr("id") + "]").html('♢'); | |
} | |
// When user resize it's browser we need to know the new height, so we can properly align the current slide | |
function onResize(event) | |
{ | |
// This will give us the new height of the window | |
var newPageHeight = $window.innerHeight(); | |
// If the new height is different from the old height ( the browser is resized vertically ), the slides are resized | |
if(pageHeight !== newPageHeight) | |
{ | |
pageHeight = newPageHeight; | |
// This can be done via CSS only, but fails into some old browsers, so I prefer to set height via JS | |
TweenLite.set([$slidesContainer, $slides], {height: pageHeight + "px"}); | |
// The current slide should be always on the top | |
TweenLite.set($slidesContainer, {scrollTo: {y: pageHeight * $currentSlide.index() }}); | |
} | |
// Make sure page content height is adjusted on resise too. | |
$('.slides-container, .contentContainer').css({ | |
height: pageHeight + "px" | |
}); | |
} | |
// We'll take each slides image and replace it with a div with a background-image with the same img src, because background-size: cover doesn't work on images | |
$('.slide').each(function(i){ | |
if ($(this).children('img')) { | |
imgSrc=$(this).children('img').attr('src'); | |
$(this).children('img').remove(); | |
$(this).append('<div class="backbg"></div>'); | |
$(this).children('.backbg').css('background-image', 'url(' + imgSrc + ')'); | |
} | |
}); | |
// Set heights properly... | |
$('.slides-container, .contentContainer').css({ | |
height: pageHeight + "px" | |
}); | |
// Content Toggle | |
$('.circle1').on('click', function(){ | |
$(this).parents('.marker').toggleClass('active'); | |
}); | |
$('.circle1').on({ | |
'mouseenter' : function(){ | |
$('.trigger').toggleClass('hovered'); | |
}, | |
'mouseleave' : function() { | |
$('.trigger').toggleClass('hovered'); | |
} | |
}); | |
Not finished or the actual piece but how I got there. Here's the finished item:
A Pen by John Healey on CodePen.
.contentContainer { | |
position: relative; | |
height: 100%; | |
} | |
.no-js .slide-nav, | |
.no-js .slides-container { | |
display: none; | |
} | |
.no-js h1 { | |
text-align: center; | |
margin: 2em; | |
} | |
.slide-nav { | |
position: absolute; | |
top: 50%; | |
margin-top: -202px; | |
right: 20px; | |
width: 20px; | |
z-index: 100; | |
list-style: none; | |
text-align: center; | |
} | |
.slide-nav li { | |
display: block; | |
text-align: center; | |
} | |
.slide-nav a { | |
color: #fff; | |
display: block; | |
width: 20px; | |
height: 25px; | |
font-size: 14px; | |
line-height: 1; | |
text-decoration: none; | |
} | |
.slide-nav a.active { | |
font-size: 18px; | |
line-height: .7; | |
} | |
.slides-container { | |
position: absolute; | |
left: 0; | |
top: 0; | |
width: 100%; | |
height: 100%; | |
overflow: hidden; | |
z-index: 10; | |
} | |
.slide { | |
position: relative; | |
width: 100%; | |
height: 100%; | |
overflow: hidden; | |
} | |
.slide img { | |
position: absolute; | |
top: 0; | |
left: 0; | |
bottom: 0; | |
right: 0; | |
width: 100%; | |
height: auto; | |
} | |
.backbg { | |
background-repeat: no-repeat; | |
background-size: cover; | |
background-position: top center; | |
width: 100%; | |
height: 100%; | |
top: 0; | |
left: 0; | |
bottom: 0; | |
right: 0; | |
margin: 0 auto; | |
} | |
.go-prev, .go-next { | |
cursor: pointer; | |
font-weight: bold; | |
} | |
.slide em { | |
font-style: italic; | |
} | |
.slide { | |
background-color: #F6F3E4; | |
} | |
.slide .headline { | |
width: 46em; | |
margin: 0 auto; | |
} | |
@media screen and (max-width: 635px) { | |
.slide .headline { | |
font-size: 60%; | |
width: 34em; | |
} | |
} | |
.slide-1 h2, | |
.slide-1 h3, | |
.slide-1 span, | |
.slide-15 a { | |
color: #2D2B2F; | |
line-height: 1; | |
} | |
.slide-1 h2 { | |
font-family: 'Playfair Display SC', serif; | |
margin-top: 29.5%; | |
font-size: 2.8em; | |
letter-spacing: 1px; | |
text-transform: uppercase; | |
} | |
.slide-1 span { | |
font-family: 'Dancing Script', cursive; | |
font-size: 3.5em; | |
line-height: 1.2; | |
text-align: right; | |
display: block; | |
padding-right: .2em; | |
} | |
.slide-1 h3, | |
.slide-15 a, | |
.tip span { | |
font-family: 'Playfair Display', serif; | |
font-size: 2.8em; | |
} | |
.slide-15 { | |
text-align: center; | |
} | |
.slide-15 a { | |
color: #2D2B2F; | |
display: inline-block; | |
line-height: 1.2; | |
font-size: 2em; | |
padding-bottom: 10px; | |
border-bottom: 1px solid transparent; | |
} | |
.slide-15 a:hover { | |
border-bottom: 1px solid #2D2B2F; | |
} | |
.slide .tip { | |
position: absolute; | |
width: 100%; | |
bottom: 29%; | |
} | |
.tip span { | |
color: #ACA89D; | |
text-align: center; | |
font-size: 1.7em; | |
} | |
.tip .icon-down { | |
font-size: 2em; | |
} | |
.basics-content { | |
font-size: 1.5em; | |
color: #242424; | |
line-height: 1; | |
position: absolute; | |
left: 1em; | |
top: 1em; | |
} | |
.marker.active .line, | |
.marker.active .circle { | |
animation-name: animStroke; | |
} | |
.marker { | |
position: relative; | |
height: 400px; | |
width: 600px; | |
} | |
.trigger { | |
position: absolute; | |
top: 37px; | |
left: 22px; | |
cursor: pointer; | |
pointer-events: none; | |
text-transform: uppercase; | |
font-family: Oswald; | |
color: #333; | |
transition: color .2s linear; | |
font-size: 22px; | |
} | |
.hovered { | |
color: #fff; | |
} | |
.line { | |
stroke: #DDDFD7; | |
stroke-width: 2; | |
fill: none; | |
stroke-dasharray: 1000; | |
stroke-dashoffset: 1000; | |
animation-duration: 6s; | |
animation-delay: .3s; | |
animation-fill-mode: forwards; | |
} | |
.circle { | |
fill: #fff; | |
stroke-width: 2; | |
stroke: #DDDFD7; | |
stroke-dasharray: 1000; | |
stroke-dashoffset: 1000; | |
animation-duration: 3s, .3s; | |
animation-fill-mode: forwards; | |
cursor: pointer; | |
} | |
.circle1 { | |
fill: #fff; | |
transition: fill .18s linear; | |
animation-duration: 3s; | |
&:hover { | |
fill: #303D62; | |
} | |
} | |
.s-circle { | |
opacity: 0; | |
} | |
.text { | |
fill: transparent; | |
font-family: Oswald; | |
font-size: 20px; | |
text-transform: uppercase; | |
} | |
.marker.active .text { | |
animation-name: animFill; | |
animation-duration: 3s; | |
animation-fill-mode: forwards; | |
} | |
.marker.active .s-circle { | |
animation-name: animStroke, animOpac; | |
transition: fill .18s linear; | |
} | |
.active a:hover .text { | |
text-decoration: underline; | |
} | |
.active a:hover .s-circle { | |
fill: #303D62; | |
} | |
.circle2, | |
.text1 { | |
animation-delay: .8s; | |
} | |
.circle3, | |
.text2 { | |
animation-delay: 1.2s; | |
} | |
.circle4, | |
.text3 { | |
animation-delay: 1.4s; | |
} | |
.circle5, | |
.text4 { | |
animation-delay: 1.6s; | |
} | |
@keyframes animStroke { | |
to { | |
stroke-dashoffset: 0; | |
} | |
} | |
@keyframes animOpac { | |
to { | |
opacity: 1; | |
} | |
} | |
@keyframes animFill { | |
to { | |
fill: #333; | |
} | |
} |