Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!--
- - timeline page 'symphony' by skye southcodes.tumblr.com
- - modify as you please but please do not touch the credit
- - any errors? need help? have questions? let me know!
- southcodes.tumblr.com/inbox
- - normalize css by https://github.com/necolas
- - fonts by google
- - slide in menu https://stackoverflow.com/a/62432099
- - isotope filters https://isotope.metafizzy.co/
- - icon font by https://fontawesome.com/
- -->
- <!DOCTYPE html>
- <html>
- <head>
- <title>{title}</title>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <link rel="shortcut icon" href="{favicon}">
- <meta name="description" content="{MetaDescription}"/>
- <!-- fonts -->
- <link rel="preconnect" href="https://fonts.googleapis.com">
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
- <link href="https://fonts.googleapis.com/css2?&family=Montserrat:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&family=Open+Sans:ital,wght@0,400;0,500;0,600;1,400;1,500;1,600&display=swap" rel="stylesheet">
- <!-- normalize -->
- <link href="https://necolas.github.io/normalize.css/7.0.0/normalize.css" rel="stylesheet">
- <style>
- :root {
- --background:#fafafa;
- --event-background:#ffffff;
- --text:#333;
- --links: #db8c8c;
- --links-hover: #36608c;
- --borders:#ddd;
- --accents:rgb(255, 132, 132);
- }
- * {margin: 0;padding: 0;box-sizing: border-box;}
- .tmblr-iframe {margin:.7rem;opacity:.6;-ms-transform: scale(0.85);-webkit-transform: scale(0.85); /* Safari */transform: scale(0.85);}
- .tmblr-iframe:hover {opacity:.8;}
- ::-webkit-scrollbar-thumb:vertical {border-left:2px solid var(--borders);}
- ::-webkit-scrollbar {width:6px}
- ::-webkit-scrollbar-track-piece{margin:5px 0;}
- pre {font-family:consolas;
- white-space: pre-wrap; /* css-3 */
- white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
- white-space: -pre-wrap; /* Opera 4- */
- white-space: -o-pre-wrap; /* Opera 7 */
- word-wrap: break-word;} /* Internet Explorer 5.5+ */
- body, figure{margin:0;padding:0}
- html{font: 14px 'Open Sans', sans-serif;}
- body {font-size:14px;color:var(--text);background:var(--background);}
- a {text-decoration: none;color:var(--links);word-break:break-word;}
- a:hover {color:var(--links-hover);}
- blockquote {margin:0;padding:0;}
- img {max-width:100%;height: auto;display: block;margin: .7rem 0}
- hr {border:0;border-top:1px solid var(--borders);margin:0;}
- p {margin:1rem 0}
- /* filters sidebar */
- #filters-sidebar {
- width: 15rem;
- height: 100vh;
- transition: 2s ease;
- overflow: auto;
- text-align: right;
- }
- #hamburger-checkbox,.hamburger {display: none;}
- #hamburger-checkbox:checked~.nav {transition: 2s ease;transform: translateX(0px);}
- .nav {
- position: fixed;top: 0;bottom: 0;left: 0;right: 0;
- width: 15rem;
- height: 100vh;
- transition: 2s ease;
- overflow: auto;
- text-align: right;
- border-right: 1px solid var(--borders);
- background-color: var(--event-background);
- padding: 4rem 2rem 2rem;
- }
- .filters-image {
- width:5rem;
- height:5rem;
- margin:0 auto 4rem;
- border-radius: 100%;
- }
- .button-group {
- margin-bottom: 6rem;
- }
- .button-group button{
- padding:0;margin:1rem 0;
- background-color: transparent;
- border: 0;
- display: block;
- width: 100%;
- text-align: right;
- text-transform: uppercase!important;
- font: 600 .8rem 'Montserrat', sans-serif;
- transition-duration: .2s;
- line-height: 175%;
- }
- .button-group button:focus{outline:0}
- .button-group button:after{
- content: '\f111';
- font-family: 'Font Awesome 5 Free';
- font-size: .3rem;
- vertical-align: middle;
- margin-left: .5rem;
- color: var(--accents);
- }
- .is-checked span{
- border-bottom:1px solid var(--accents);
- transition-duration: .2s;
- padding: 0 .3rem .2rem;
- }
- .filter-title {
- font: 700 1.1rem 'Montserrat', sans-serif;
- text-transform: uppercase;
- margin-bottom: 1.5rem;
- }
- .filter-title:after {
- content: 'O';
- font-weight: 700;
- margin-left: 1rem;
- color:var(--accents)
- }
- /* wrappers */
- #main-wrapper {
- display: flex;
- flex-flow: row wrap;
- justify-content: space-evenly;
- }
- #flex-wrapper {width: calc(100% - 15rem);}
- /* header */
- header {
- margin:4rem auto 8rem;
- width:50rem;
- text-align: center;
- padding:2rem;
- background:var(--event-background);
- border: 1px solid var(--borders);
- }
- /* header image */
- figure.header-image {
- display:block;margin:0 auto;
- width:100%;
- max-width: 40rem;
- height: 9rem;
- position: relative;
- }
- figure.header-image:before {
- content: '';
- position: absolute;left:0;right:0;top:50%;
- width:100%;
- height:1px;
- background-color: var(--borders);
- z-index: 2;
- }
- img.header-image {
- width:9rem;
- height: 9rem;
- border-radius: 100%;
- display: block;
- object-fit: cover;
- margin:0 auto;
- z-index: 9999;
- border: 1rem solid var(--event-background);
- position: relative;
- z-index:9
- }
- /* page title */
- #page-title {
- text-transform: uppercase;
- font: 700 1.5rem 'Montserrat', sans-serif;
- line-height: 165%;
- }
- #page-title span {
- box-shadow: inset 0 -7px var(--accents);padding:0 .3rem
- }
- /* header navigation */
- #header-navigation {
- margin-top: 3rem;
- font-size: .9rem;
- font-family: 'Montserrat', sans-serif;
- line-height: 160%;
- }
- #header-navigation ul,#header-navigation ul li{
- list-style: none;
- }
- #header-navigation ul li{
- display: inline-block;
- font-weight: 600;
- }
- #header-navigation ul li a{
- color:var(--text);
- border-bottom: 1px solid var(--accents);
- padding: 0 .2rem 0;
- }
- #header-navigation ul li:after{
- content: '\f111';
- font-family: 'Font Awesome 5 Free';
- font-weight: 900;
- font-size: .3rem;
- vertical-align: middle;
- margin:0 1rem;
- color: var(--accents);
- }
- #header-navigation ul li:last-of-type:after{
- display: none;
- }
- #page-description {
- max-width: 35rem;
- margin:3rem auto 0;
- font-size: .9rem;
- line-height: 160%;
- letter-spacing: .04rem;
- }
- /* timeline */
- #timeline {position: relative;}
- #timeline:after {
- content: '';
- position: absolute;top:0;bottom:0;left:50%;
- width: 1px;
- height: calc(100% - 14rem);
- background-color: var(--borders);
- z-index: -1;
- }
- .fa-circle {
- font-size:1rem;
- display: inline-block;
- vertical-align: top;
- margin: 1rem;
- color: var(--accents);
- border:1px solid var(--borders);
- padding:.3rem;
- border-radius: 100%;
- background-color: var(--event-background);
- }
- /* events */
- .timeline-event {
- width:50rem;
- max-width: 100%;
- margin:0rem auto 12rem;
- position: relative;
- }
- .event-image {
- width:100%;
- display: block;
- margin: 0;
- height: 100%;
- object-fit: cover;
- object-position: 80% 100%;
- }
- /* event date */
- .timeline-date {
- width: 10rem;
- display: inline-block;
- vertical-align: top;
- text-align: center;
- font-family: 'Montserrat', sans-serif;
- font-weight: 600;
- }
- .date-year {
- background-color: var(--accents);
- font: 700 1.1rem 'Montserrat', sans-serif;
- padding: .6rem;
- letter-spacing: .04rem;
- }
- .date-calendar {
- border:1px solid var(--borders);
- background-color: white;
- }
- .date-day {
- padding:1rem 0;
- font: 700 2rem 'Montserrat', sans-serif;
- background-image: url('https://images.vectorhq.com/images/previews/d0a/dots-square-grid-01-pattern-clip-art-83859.png');
- background-size: contain;
- }
- .date-month {
- padding:.6rem 0;
- text-transform: uppercase;
- background-color: var(--accents);
- font: 700 .8rem 'Montserrat', sans-serif;
- letter-spacing: .04rem;
- }
- /* date type */
- .date-type {
- margin-top: 1rem;
- /* padding: 1rem; */
- border:1px solid var(--borders);
- background-color: white;
- }
- .date-type hr{
- margin:1rem 0
- }
- .event-person {
- background-color: var(--accents);
- padding: 1rem;
- text-transform: uppercase;
- font-size: 1.1rem;
- }
- .event-type {
- font-size: .9rem;
- padding:.8rem;
- text-transform: uppercase;
- }
- /* event description */
- .event-description {
- background-color: var(--event-background);
- border:1px solid var(--borders);
- width: calc(100% - 14.2rem - 1px);
- display: inline-block;
- vertical-align: top;
- padding: 1rem 2rem;
- }
- .event-title {
- font: 600 2.5rem 'Montserrat', sans-serif!important;
- margin:2rem 0;
- }
- .event-title span {box-shadow: inset 0 -10px var(--accents);}
- /* event links */
- .event-navigation {
- margin:2rem 0;
- padding-top:2rem;
- border-top: 1px solid var(--borders);
- font-size: .9rem;
- letter-spacing: .04rem;
- font-weight: 600;
- text-align: center;
- }
- .event-navigation li{
- list-style: none;
- display: inline-block;
- margin: 1rem 2rem 1rem 0;
- }
- .event-navigation li:after {
- content:'\f111';
- margin-left: 2rem;
- font-family: 'Font Awesome 5 Free';
- color:var(--accents);
- border: 1px solid var(--borders);
- padding:.3rem;
- border-radius: 100%;
- font-size:.6rem;
- }
- .event-navigation li:last-of-type:after {
- display: none;
- }
- /* MEDIA */
- @media only screen and (min-width:00px) and (max-width:950px) {
- .hamburger {
- font-size: 1.2rem;
- position: fixed;
- z-index: 99;
- display:block;
- left:1rem;top:1rem;
- z-index: 999999999999999999!important;
- padding: .5rem;
- background-color: var(--event-background);
- border: 1px solid var(--borders);
- border-radius: 5px;
- cursor: pointer;
- color: var(--accents);
- }
- .nav {
- transform: translateX(-20rem);
- z-index: 999;
- }
- #flex-wrapper {width: 100%;
- }
- #filters-sidebar {
- width: 0;
- height: 100vh;
- }
- header {
- margin:4rem auto;
- width:90%;
- }
- .timeline-event {
- width:90%;
- max-width: 100%;
- }
- }
- @media only screen and (min-width:00px) and (max-width:600px) {
- .event-description {
- display: block;
- margin:auto;
- width: 100%;
- }
- .timeline-date {margin:0 auto 0;}
- .fa-circle {
- font-size:1rem;
- display: block;
- vertical-align: top;
- margin: 2rem auto;
- color: var(--accents);
- border:1px solid var(--borders);
- padding:.3rem;
- border-radius: 100%;
- background-color: var(--event-background);
- }
- .event-image {margin-bottom: 2rem;}
- .timeline-event{
- display:flex;
- flex-flow: column;
- }
- .event-image{order:1;}
- .timeline-date{order:2;}
- .fa-solid{order:3;}
- .event-description{order:4;}
- }
- @media only screen and (min-width:1500px) and (max-width:999999px) {
- #flex-wrapper {
- width: calc(100% - 15rem);
- }
- header {
- width: 90%;
- max-width: 90rem;
- }
- .timeline-event {
- width: 90%;
- max-width: 90rem;
- margin:0rem auto 12rem;
- position: relative;
- }
- }
- </style>
- </head>
- <body>
- <section id="main-wrapper">
- <!-- filters -->
- <section id="filters-sidebar">
- <input type="checkbox" id="hamburger-checkbox">
- <label title="event filters" class="hamburger" for="hamburger-checkbox"><i class="fa-solid fa-filter"></i></label>
- <nav class="nav">
- <!-- filters image -->
- <figure class="filters-image"><img src="IMAGE URL" alt="" class="filters-image"></figure>
- <!-- - TO CUSTOMIZE FILTERS PLEASE SEE THIS TUTORIAL, SCROLL DOWN TO "FILTER BY MULTIPLE CRITERIA": https://hendrixrph-blog.tumblr.com/post/131707989334/under-the-cut-is-a-tutorial-on-how-to-create-a -->
- <h3 class="filter-title">filter title 1</h3>
- <div class="button-group" data-filter-group="a">
- <button class="button is-checked" data-filter=""><span>all</span></button>
- <button class="button" data-filter=".one"><span>one</span></button>
- <button class="button" data-filter=".two"><span>two</span></button>
- </div>
- <h3 class="filter-title">filter title 2 </h3>
- <div class="button-group" data-filter-group="b">
- <button class="button is-checked" data-filter=""><span>all</span></button>
- <button class="button" data-filter=".three"><span>three</span></button>
- <button class="button" data-filter=".four"><span>four</span></button>
- </div>
- </nav>
- </section>
- <div id="flex-wrapper">
- <!-- header -->
- <header>
- <!-- header image -->
- <figure class="header-image"><img src="IMAGE URL" alt="" class="header-image"></figure>
- <h1 id="page-title"><span>title</span></h1>
- <nav id="header-navigation"><ul>
- <li><a href="">link 1</a></li>
- <li><a href="">link 2</a></li>
- <li><a href="">link 3</a></li>
- </ul></nav>
- <article id="page-description">
- <p>description</p>
- </article>
- </header>
- <!-- timeline -->
- <main id="timeline">
- <!-- you will need to rearrange the html to get the entries to show on the left or the right, or use the templates below
- ENTRY ON THE RIGHT TEMPLATE:
- // template start
- <article class="timeline-event black two">
- <figure class="event-image"><img src="IMAGE URL" alt="" class="event-image"></figure>
- <div class="timeline-date">
- <div class="date-calendar">
- <div class="date-year">year</div>
- <div class="date-day">day</div>
- <div class="date-month">month</div>
- </div>
- <div class="date-type">
- <div class="event-person">person</div>
- <div class="event-type">event type</div>
- </div>
- </div>
- <i class="fa-solid fa-circle"></i>
- <div class="event-description">
- <h2 class="event-title"><span>event title</span></h2>
- <p>content</p>
- <div class="event-navigation">
- <li><a href="">link 1</a></li>
- <li><a href="">link 2</a></li>
- <li><a href="">link 3</a></li>
- </div>
- </div>
- </article>
- // template end
- ENTRY ON THE LEFT TEMPLATE:
- // template start
- <article class="timeline-event black two">
- <figure class="event-image"><img src="IMAGE URL" alt="" class="event-image"></figure>
- <div class="event-description">
- <h2 class="event-title"><span>event title</span></h2>
- <p>content</p>
- <div class="event-navigation">
- <li><a href="">link 1</a></li>
- <li><a href="">link 2</a></li>
- <li><a href="">link 3</a></li>
- </div>
- </div>
- <i class="fa-solid fa-circle"></i>
- <div class="timeline-date">
- <div class="date-calendar">
- <div class="date-year">year</div>
- <div class="date-day">day</div>
- <div class="date-month">month</div>
- </div>
- <div class="date-type">
- <div class="event-person">person</div>
- <div class="event-type">event type</div>
- </div>
- </div>
- </article>
- // template end
- -->
- <!-- event start -->
- <article class="timeline-event black two">
- <!-- event image -->
- <figure class="event-image"><img src="IMAGE URL" alt="" class="event-image"></figure>
- <div class="timeline-date">
- <!-- date -->
- <div class="date-calendar">
- <div class="date-year">year</div>
- <div class="date-day">day</div>
- <div class="date-month">month</div>
- </div>
- <!-- info -->
- <div class="date-type">
- <div class="event-person">person</div>
- <div class="event-type">event type</div>
- </div>
- </div>
- <i class="fa-solid fa-circle"></i>
- <div class="event-description">
- <h2 class="event-title"><span>event title</span></h2>
- <p>content</p>
- <div class="event-navigation">
- <li><a href="">link 1</a></li>
- <li><a href="">link 2</a></li>
- <li><a href="">link 3</a></li>
- </div>
- </div>
- </article>
- <!-- event end -->
- <!-- event start -->
- <article class="timeline-event black two">
- <!-- event image -->
- <figure class="event-image"><img src="IMAGE URL" alt="" class="event-image"></figure>
- <div class="event-description">
- <h2 class="event-title"><span>event title</span></h2>
- <p>content</p>
- <div class="event-navigation">
- <li><a href="">link 1</a></li>
- <li><a href="">link 2</a></li>
- <li><a href="">link 3</a></li>
- </div>
- </div>
- <i class="fa-solid fa-circle"></i>
- <div class="timeline-date">
- <!-- date -->
- <div class="date-calendar">
- <div class="date-year">year</div>
- <div class="date-day">day</div>
- <div class="date-month">month</div>
- </div>
- <!-- info -->
- <div class="date-type">
- <div class="event-person">person</div>
- <div class="event-type">event type</div>
- </div>
- </div>
- </article>
- <!-- event end -->
- </main>
- </div> <!-- flex wrapper -->
- </section>
- <!-- do not touch -->
- <div style="position:fixed;bottom:2rem;right:2rem;z-index:999999999999999999999!important;font-size:.7rem;letter-spacing:.03rem;"><a href="https://southcodes.tumblr.com" title="coded by southcodes" target="_blank">SC</a></div>
- <!-- scripts -->
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
- <!-- icon font -->
- <script src="https://kit.fontawesome.com/0993e30c04.js" crossorigin="anonymous"></script>
- <!-- isotope -->
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/2.2.2/isotope.pkgd.min.js"></script>
- <script type="text/javascript">
- $(document).ready( function() {
- // init Isotope
- var $grid = $('#timeline').isotope({
- itemSelector: '.timeline-event',
- layoutMode: 'vertical',
- vertical: {
- horizontalAlignment: 0.5,
- }
- });
- // store filter for each group
- var filters = {};
- $('#filters-sidebar').on( 'click', '.button', function() {
- var $this = $(this);
- // get group key
- var $buttonGroup = $this.parents('.button-group');
- var filterGroup = $buttonGroup.attr('data-filter-group');
- // set filter for group
- filters[ filterGroup ] = $this.attr('data-filter');
- // combine filters
- var filterValue = concatValues( filters );
- // set filter for Isotope
- $grid.isotope({ filter: filterValue });
- });
- // change is-checked class on buttons
- $('.button-group').each( function( i, buttonGroup ) {
- var $buttonGroup = $( buttonGroup );
- $buttonGroup.on( 'click', 'button', function() {
- $buttonGroup.find('.is-checked').removeClass('is-checked');
- $( this ).addClass('is-checked');
- });
- });
- });
- // flatten object by concatting values
- function concatValues( obj ) {
- var value = '';
- for ( var prop in obj ) {
- value += obj[ prop ];
- }
- return value;
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement