Add slideshow.
This commit is contained in:
parent
9fc7f1012a
commit
f03e1113ba
@ -58,10 +58,10 @@
|
|||||||
|
|
||||||
<figcaption>
|
<figcaption>
|
||||||
<h3>Don't even consider running.</h3>
|
<h3>Don't even consider running.</h3>
|
||||||
<p>You can hide but you can't hide.</p>
|
<p>You can run but you can't hide.</p>
|
||||||
</figcaption>
|
</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
<figure id="stocks">
|
<figure id="stonks">
|
||||||
<img alt="Stocks." src="../img/thumbnails/stonks.jpg">
|
<img alt="Stocks." src="../img/thumbnails/stonks.jpg">
|
||||||
<div id="stocks">
|
<div id="stocks">
|
||||||
<div class="stock">
|
<div class="stock">
|
||||||
@ -97,6 +97,62 @@
|
|||||||
</nav>
|
</nav>
|
||||||
<div id="click-catcher"></div>
|
<div id="click-catcher"></div>
|
||||||
<main>
|
<main>
|
||||||
|
<section id="slideshow">
|
||||||
|
<div id="left" class="controls">
|
||||||
|
<i class="fas fa-hand-point-left"></i>
|
||||||
|
</div>
|
||||||
|
<div id="slideshow-container">
|
||||||
|
<div id="inner-slideshow">
|
||||||
|
<figure style="--color: red">
|
||||||
|
<img src="../img/thumbnails/stuffhappens.jpg"
|
||||||
|
alt="Stuff happens">
|
||||||
|
<figcaption>
|
||||||
|
<header>
|
||||||
|
Stuff happens.
|
||||||
|
</header>
|
||||||
|
<p>
|
||||||
|
A honda has glued ducks to its front bumper. Deadly car accidents drop to 0.
|
||||||
|
"If this were our owners, we'd probably probably give them a good huff about this,"
|
||||||
|
Skloot said.
|
||||||
|
|
||||||
|
Honda released an interview with a weather reporter who commented on some of the
|
||||||
|
characteristics of the Accord Clarity. Specifically, he compared the combination to
|
||||||
|
the
|
||||||
|
Honda Accord Hybrid and said:
|
||||||
|
|
||||||
|
"We are riding a totally new bike in a completely new environment."
|
||||||
|
|
||||||
|
In order to become the successful world-beating hybrid and electric motorcycle
|
||||||
|
manufacturers that they are, I believe that at the end of the day, it's all about
|
||||||
|
image.
|
||||||
|
</p>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
<figure style="--color: blue;">
|
||||||
|
<img src="../img/thumbnails/monalisa.jpg"
|
||||||
|
alt="Mona lisa">
|
||||||
|
<figcaption>
|
||||||
|
<header>
|
||||||
|
Spotted: Mona Lisa subway.
|
||||||
|
</header>
|
||||||
|
<p>
|
||||||
|
F32 spotted at subway Poznań. Was a healthy male please
|
||||||
|
contact me for further details. Sjało 085-2654 9/17/2017 Hana:
|
||||||
|
Dr. Tomasz Stunek said that he studied the man, identified by
|
||||||
|
the German news agency DPA, for three years in Germany before it
|
||||||
|
turned out that he is not a German, but a Pole. He told journalists
|
||||||
|
that he did not understand why the city government felt forced to
|
||||||
|
disclose the man's identity on public media. The man, who is
|
||||||
|
currently based in Warsaw and part of.
|
||||||
|
</p>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="right" class="controls">
|
||||||
|
<i class="fas fa-hand-point-right"></i>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
<section id="sports">
|
<section id="sports">
|
||||||
<header>
|
<header>
|
||||||
<h3>Sports</h3>
|
<h3>Sports</h3>
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
|
@import './styles/_vars.scss';
|
||||||
|
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
$secondary: green;
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Lato', sans-serif;
|
font-family: 'Lato', sans-serif;
|
||||||
@ -32,4 +33,5 @@ body {
|
|||||||
|
|
||||||
@import './styles/nav.scss';
|
@import './styles/nav.scss';
|
||||||
@import './styles/header.scss';
|
@import './styles/header.scss';
|
||||||
|
@import './styles/main.scss';
|
||||||
|
|
||||||
|
52
src/index.ts
52
src/index.ts
@ -100,3 +100,55 @@ let header = {
|
|||||||
};
|
};
|
||||||
header.makeHeaderAnimatable();
|
header.makeHeaderAnimatable();
|
||||||
header.setDate();
|
header.setDate();
|
||||||
|
|
||||||
|
let s = {
|
||||||
|
slideshow: document.querySelector("section#slideshow"),
|
||||||
|
innerSlideshow: null as HTMLDivElement,
|
||||||
|
position: 0,
|
||||||
|
num: 0,
|
||||||
|
figures: null as NodeListOf<HTMLElement>
|
||||||
|
};
|
||||||
|
|
||||||
|
let slideshow = {
|
||||||
|
...s,
|
||||||
|
figures: s.slideshow.querySelectorAll("figure"),
|
||||||
|
innerSlideshow: s.slideshow.querySelector("#inner-slideshow") as HTMLDivElement,
|
||||||
|
innerSlideshowTransform: "",
|
||||||
|
controls: {
|
||||||
|
left: s.slideshow.querySelector("#left") as HTMLDivElement,
|
||||||
|
setPosition: () => {
|
||||||
|
const pos = slideshow.position;
|
||||||
|
console.log(`position: `, pos);
|
||||||
|
if(pos === 0) {
|
||||||
|
slideshow.controls.left.classList.add("inactive");
|
||||||
|
} else {
|
||||||
|
slideshow.controls.left.classList.remove("inactive");
|
||||||
|
}
|
||||||
|
if(pos === slideshow.num - 1) {
|
||||||
|
slideshow.controls.right.classList.add("inactive");
|
||||||
|
} else {
|
||||||
|
slideshow.controls.right.classList.remove("inactive");
|
||||||
|
}
|
||||||
|
slideshow.innerSlideshow.style.transform
|
||||||
|
= `translateX(-${pos * 100 + 50}%)`;
|
||||||
|
},
|
||||||
|
onLeftClick: () => {
|
||||||
|
console.log("left");
|
||||||
|
slideshow.position = Math.max(0, --slideshow.position);
|
||||||
|
slideshow.controls.setPosition();
|
||||||
|
},
|
||||||
|
right: s.slideshow.querySelector("#right") as HTMLDivElement,
|
||||||
|
onRightClick: () => {
|
||||||
|
console.log("right");
|
||||||
|
slideshow.position = Math.min(slideshow.num - 1, ++slideshow.position);
|
||||||
|
slideshow.controls.setPosition();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
slideshow.num = slideshow.figures.length;
|
||||||
|
slideshow.controls.setPosition();
|
||||||
|
|
||||||
|
["left", "right"].forEach(side => {
|
||||||
|
const x = slideshow.controls[side] as HTMLDivElement;
|
||||||
|
x.addEventListener("click", slideshow.controls[`on${side[0].toUpperCase()}${side.slice(1)}Click`]);
|
||||||
|
});
|
||||||
|
1
src/styles/_vars.scss
Normal file
1
src/styles/_vars.scss
Normal file
@ -0,0 +1 @@
|
|||||||
|
$secondary: green;
|
@ -1,3 +1,5 @@
|
|||||||
|
@import './_vars.scss';
|
||||||
|
|
||||||
header#main-header {
|
header#main-header {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -137,7 +139,7 @@ header#main-header {
|
|||||||
|
|
||||||
figure {
|
figure {
|
||||||
|
|
||||||
&#stocks {
|
&#stonks {
|
||||||
border-left: 1px solid black;
|
border-left: 1px solid black;
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
}
|
}
|
||||||
|
113
src/styles/main.scss
Normal file
113
src/styles/main.scss
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
@import './_vars.scss';
|
||||||
|
|
||||||
|
body > main {
|
||||||
|
margin-top: 2rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
section#slideshow {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.controls {
|
||||||
|
font-size: 5rem;
|
||||||
|
color: $secondary;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: transform 1s ease-out;
|
||||||
|
|
||||||
|
&.inactive {
|
||||||
|
color: gray;
|
||||||
|
cursor: default;
|
||||||
|
transition-duration: 2s;
|
||||||
|
transition-timing-function: ease-in;
|
||||||
|
|
||||||
|
&#left {
|
||||||
|
transform: rotate(0.5turn);
|
||||||
|
}
|
||||||
|
|
||||||
|
&#right {
|
||||||
|
transform: rotate(-0.5turn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#slideshow-container {
|
||||||
|
position: relative;
|
||||||
|
width: 80%;
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
overflow: hidden;
|
||||||
|
#inner-slideshow {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
transition: transform 500ms ease-out;
|
||||||
|
|
||||||
|
figure {
|
||||||
|
min-width: 100%;
|
||||||
|
position: relative;
|
||||||
|
$color: var(--color);
|
||||||
|
|
||||||
|
img {
|
||||||
|
min-width: 100%;
|
||||||
|
min-height: 100%;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
object-position: center;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
figcaption {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: 2rem;
|
||||||
|
|
||||||
|
header {
|
||||||
|
font-weight: 800;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-family: 'Bungee Inline', serif;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
background-color: $color;
|
||||||
|
width: fit-content;
|
||||||
|
color: white;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
$padding: 1rem;
|
||||||
|
padding: $padding;
|
||||||
|
transform: translateX(-$padding);
|
||||||
|
color: white;
|
||||||
|
z-index: 5;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: '';
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: $color;
|
||||||
|
background-blend-mode: soft-light;
|
||||||
|
opacity: 0.7;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,5 @@
|
|||||||
|
@import './_vars.scss';
|
||||||
|
|
||||||
nav {
|
nav {
|
||||||
$bg-color: white;
|
$bg-color: white;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
Loading…
Reference in New Issue
Block a user