Difference between revisions of "Team:Pasteur Paris/essai"

Line 12: Line 12:
 
}
 
}
  
/*
+
$dot-color: rgba(255,255,255,0.8);
* CSS Fadeshow by @alexerlandsson
+
$dot-active-color: #29acbb;
* This is a fadeshow built in CSS and with customization in focus.
+
$fade-time: 400ms;
* Supports quick navigation, prev/next navigation and autoplay.
+
$autoplay-time: 5s;
*
+
* For better documentation and implementation guide, check out the GitHub repository:
+
* https://github.com/alexerlandsson/css-fadeshow
+
*/
+
  
  
/*
+
[data-am-gallery] {
* ===== VARIABLES =====
+
*
+
* Change these variables to match your preferences. For a more detailed
+
* description of what each variable do, visit https://github.com/alexerlandsson/css-fadeshow
+
*/
+
 
+
$max-slides: 5;
+
$prefix: true;
+
$responsive: true;
+
$breakpoint-small: 500px;
+
$fade-time: 1;
+
$prev-next-fontfamily: sans-serif;
+
$prev-next-icon-size: 3vw;
+
$prev-next-icon-color: rgba(255,255,255,0.5);
+
$prev-next-bg: rgba(255,255,255,0);
+
$prev-next-bg-hover: rgba(255,255,255,0.1);
+
$prev-icon: '❮';
+
$next-icon: '❯';
+
$autohide-next-prev: true;
+
$quick-nav-color: rgba(255,255,255,0.8);
+
$quick-nav-active-color: coral;
+
$fade-color: #fff;
+
$autoplay: true;
+
$autoplay-duration: 5;
+
 
+
 
+
/*
+
* ===== MIXINS =====
+
*
+
* This section contains mixin used
+
* Do not change anything here unless you know what you are doing.
+
*/
+
 
+
/* Mixins to handle prefixes */
+
 
+
@mixin fadeshow-transition($value...) {
+
@if length($value) < 1 {
+
$value: all 150ms linear;
+
}
+
@if $prefix == true {
+
-webkit-transition: $value;
+
}
+
  transition: $value;
+
}
+
 
+
@mixin fadeshow-transform($value...) {
+
@if length($value) < 1 {
+
$value: all 150ms linear;
+
}
+
@if $prefix == true {
+
-webkit-transform: $value;
+
-ms-transform: $value;
+
}
+
  transform: $value;
+
}
+
 
+
@mixin fadeshow-animation($value...) {
+
@if $prefix == true {
+
-webkit-animation: $value;
+
}
+
  animation: $value;
+
}
+
 
+
@mixin fadeshow-animation-delay($value) {
+
@if $prefix == true {
+
-webkit-animation-delay: $value;
+
}
+
  animation-delay: $value;
+
}
+
 
+
@mixin fadeshow-unselectable() {
+
@if $prefix == true {
+
-webkit-user-select: none;
+
  -moz-user-select: none;
+
-ms-user-select: none;
+
}
+
  user-select: none;
+
}
+
 
+
/* Mixins to handle Quick Navigation Button states */
+
 
+
@mixin quickNavBtnActive() {
+
background-color: $quick-nav-active-color;
+
}
+
 
+
@mixin quickNavBtnInactive() {
+
background-color: $quick-nav-color;
+
}
+
 
+
 
+
/*
+
* ===== FADESHOW =====
+
*
+
* Base functionality for the fadeshow.
+
* Do not change anything here unless you know what you are doing.
+
*/
+
 
+
[data-am-fadeshow] {
+
 
position: relative;
 
position: relative;
 
width: 100%;
 
width: 100%;
 
height: 100%;
 
height: 100%;
overflow: hidden;
+
background-color: #fff;
background-color: $fade-color;
+
input[type="radio"] {
 +
position: fixed;
 +
top: -9999px;
 +
&:checked {
 +
$i: 5;
 +
@while $i > 0 {
 +
&:nth-child(#{$i}) {
 +
~ .images {
 +
.image:nth-child(#{$i}) {
 +
opacity: 1;
 +
}
 +
}
 +
~ .navigation {
 +
.dot:nth-child(#{$i}) {
 +
background-color: $dot-active-color;
 +
&:hover {
 +
opacity: 1;
 +
}
 +
}
 +
}
 +
}
 +
  $i: $i - 1;
 +
}
 +
}
 +
}
  
/* Slides */
+
.image {
.fs-slide {
+
 
position: absolute;
 
position: absolute;
 
top: 0;
 
top: 0;
Line 135: Line 56:
 
right: 0;
 
right: 0;
 
opacity: 0;
 
opacity: 0;
 +
transition: opacity $fade-time ease;
 
background-size: cover;
 
background-size: cover;
 
background-position: center;
 
background-position: center;
 
background-repeat: no-repeat;
 
background-repeat: no-repeat;
@include fadeshow-transition(opacity #{$fade-time}s ease);
+
}
  
/* Display first child on load */
+
/* Navigation */
&:first-child {
+
opacity: 1;
+
}
+
}
+
  
/* Quick Navigation */
+
.navigation {
.fs-quick-nav {
+
 
position: absolute;
 
position: absolute;
 
bottom: 15px;
 
bottom: 15px;
 
left: 50%;
 
left: 50%;
z-index: 1;
+
transform: translateX(-50%);
@include fadeshow-unselectable();
+
@include fadeshow-transform(translateX(-50%));
+
 
}
 
}
  
.fs-quick-btn {
+
.dot {
 
display: inline-block;
 
display: inline-block;
 
width: 15px;
 
width: 15px;
Line 162: Line 77:
 
margin: 0 2px;
 
margin: 0 2px;
 
border-radius: 50%;
 
border-radius: 50%;
 +
background-color: $dot-color;
 
cursor: pointer;
 
cursor: pointer;
@include fadeshow-transition(opacity 200ms ease);
+
transition: opacity 200ms ease;
@include quickNavBtnInactive();
+
 
+
 
&:hover {
 
&:hover {
 
opacity: 0.8;
 
opacity: 0.8;
}
 
 
/* Set active state to first button on load */
 
&:first-child {
 
@include quickNavBtnActive();
 
}
 
}
 
 
/* Prev/Next Navigation */
 
%prev-next {
 
position: absolute;
 
display: none;
 
top: 0;
 
bottom: 0;
 
width: 100px;
 
cursor: pointer;
 
font-family: $prev-next-fontfamily;
 
background-color: $prev-next-bg;
 
-webkit-tap-highlight-color: rgba(0,0,0,0);
 
@include fadeshow-transition(all 200ms ease);
 
 
@if $responsive == true {
 
@media (max-width: $breakpoint-small) {
 
width: 50%;
 
}
 
}
 
 
&:before {
 
position: absolute;
 
top: 50%;
 
font-size: $prev-next-icon-size;
 
color: $prev-next-icon-color;
 
}
 
 
&:hover {
 
background-color: $prev-next-bg-hover;
 
@if $responsive == true {
 
@media (max-width: $breakpoint-small) {
 
background-color: rgba(255,255,255,0);
 
}
 
}
 
}
 
}
 
 
.fs-prev-btn {
 
@extend %prev-next;
 
left: 0;
 
 
&:before {
 
content: "#{$prev-icon}";
 
left: 50%;
 
@include fadeshow-transform(translate(-50%, -50%));
 
@if $responsive == true {
 
@media (max-width: $breakpoint-small) {
 
left: 30px;
 
}
 
}
 
}
 
 
@if $autohide-next-prev == true {
 
@include fadeshow-transform(translateX(-100%));
 
@if $responsive == true {
 
@media (max-width: $breakpoint-small) {
 
@include fadeshow-transform(translate(0));
 
}
 
}
 
}
 
}
 
 
.fs-next-btn {
 
@extend %prev-next;
 
right: 0;
 
 
&:before {
 
content: "#{$next-icon}";
 
right: 50%;
 
@include fadeshow-transform(translate(50%, -50%));
 
@if $responsive == true {
 
@media (max-width: $breakpoint-small) {
 
right: 30px;
 
}
 
}
 
}
 
 
@if $autohide-next-prev == true {
 
@include fadeshow-transform(translateX(100%));
 
@if $responsive == true {
 
@media (max-width: $breakpoint-small) {
 
@include fadeshow-transform(translate(0));
 
}
 
}
 
}
 
}
 
 
/* Base functionality */
 
input[type="radio"] {
 
position: fixed;
 
top: -9999px;
 
 
&:checked {
 
 
/* This loop handles the slide switching and quick navigation active state */
 
$i: $max-slides;
 
 
@while $i > 0 {
 
 
&:nth-of-type(#{$i}) {
 
/* Show slide */
 
~ .fs-slides {
 
.fs-slide {
 
//Cancel autoplay
 
opacity: 0;
 
@include fadeshow-animation(none !important);
 
}
 
.fs-slide:nth-child(#{$i}) {
 
opacity: 1;
 
}
 
}
 
 
/* Add active state to dot */
 
~ .fs-quick-nav {
 
.fs-quick-btn {
 
@include quickNavBtnInactive();
 
/* Cancel autoplay */
 
@include fadeshow-animation(none !important);
 
}
 
.fs-quick-btn:nth-child(#{$i}) {
 
background-color: $quick-nav-active-color;
 
&:hover {
 
opacity: 1;
 
}
 
}
 
}
 
 
}
 
$i: $i - 1;
 
}
 
 
/* Hide navigation if only one slide */
 
&:first-of-type:last-of-type {
 
~ .fs-quick-nav,
 
~ .fs-prev-nav,
 
~ .fs-next-nav {
 
display: none !important;
 
}
 
}
 
 
}
 
}
 
 
/* Autohide Prev/Next Navigation */
 
@if $autohide-next-prev == true {
 
&:hover {
 
.fs-prev-btn,
 
.fs-next-btn {
 
@include fadeshow-transform(translateX(0));
 
}
 
}
 
}
 
 
}
 
 
 
/*
 
* ===== PREV/NEXT NAVIGATION =====
 
*
 
* This section handles the prev/next navigation.
 
*/
 
 
/* Handle Prev/Next buttons */
 
[data-am-fadeshow~="next-prev-navigation"] {
 
input[type="radio"] {
 
 
&:checked {
 
 
$i: $max-slides;
 
 
@while $i > 0 {
 
 
&:nth-of-type(#{$i}) {
 
 
$prev: ($i - 1);
 
$next: ($i + 1);
 
 
/* Show previous button */
 
@if $prev > 0 {
 
~ .fs-prev-nav {
 
.fs-prev-btn {
 
display: none;
 
}
 
.fs-prev-btn:nth-child(#{$prev}) {
 
display: block;
 
}
 
}
 
}
 
 
/* Show next button */
 
@if $next < ($max-slides + 1) {
 
~ .fs-next-nav {
 
.fs-next-btn {
 
display: none;
 
}
 
.fs-next-btn:nth-child(#{$next}) {
 
display: block;
 
}
 
}
 
}
 
 
/* Show last prev button if first slide */
 
&:first-of-type {
 
~ .fs-prev-nav {
 
.fs-prev-btn:last-child {
 
display: block;
 
}
 
}
 
}
 
 
/* Show first next button if last slide */
 
&:last-of-type {
 
~ .fs-next-nav {
 
.fs-next-btn:first-child {
 
display: block;
 
}
 
}
 
}
 
 
}
 
  $i: $i - 1;
 
}
 
}
 
}
 
 
/* Display first pair of Prev/Next Buttons on load */
 
.fs-prev-btn:last-child {
 
display: block;
 
}
 
 
.fs-next-btn:nth-child(2) {
 
display: block
 
}
 
 
}
 
 
 
/*
 
* ===== AUTOPLAY =====
 
*
 
* Functions to handle autoplay.
 
* If you're not going to use autoplay, set $autoplay to false.
 
* This part tends to compile into a lot of uneccesary CSS otherwise.
 
*/
 
 
@if $autoplay == true {
 
 
$i: $max-slides;
 
 
@while $i > 1 {
 
 
$total-duration: $autoplay-duration * $i;
 
 
@keyframes quickNavAnimation-#{$i} {
 
0% { @include quickNavBtnInactive();  }
 
#{100% * $fade-time / $total-duration},
 
#{100% * $autoplay-duration / $total-duration} { @include quickNavBtnActive(); }
 
#{100% * ($autoplay-duration + $fade-time) / $total-duration},
 
100% { @include quickNavBtnInactive(); }
 
}
 
@if $prefix == true {
 
@-webkit-keyframes quickNavAnimation-#{$i} {
 
0% { @include quickNavBtnInactive();  }
 
#{100% * $fade-time / $total-duration},
 
#{100% * $autoplay-duration / $total-duration} { @include quickNavBtnActive(); }
 
#{100% * ($autoplay-duration + $fade-time) / $total-duration},
 
100% { @include quickNavBtnInactive(); }
 
}
 
}
 
 
@keyframes slidesAnimation-#{$i} {
 
0% { opacity: 0; }
 
#{100% * $fade-time / $total-duration},
 
#{100% * $autoplay-duration / $total-duration} { opacity: 1; }
 
#{100% * ($autoplay-duration + $fade-time) / $total-duration},
 
100% { opacity: 0; }
 
}
 
@if $prefix == true {
 
@-webkit-keyframes slidesAnimation-#{$i} {
 
0% { opacity: 0; }
 
#{100% * $fade-time / $total-duration},
 
#{100% * $autoplay-duration / $total-duration} { opacity: 1; }
 
#{100% * ($autoplay-duration + $fade-time) / $total-duration},
 
100% { opacity: 0; }
 
}
 
}
 
 
[data-am-fadeshow~="autoplay"] {
 
input[type="radio"]:nth-of-type(#{$i}):last-of-type {
 
 
/* Slide animation */
 
~ .fs-slides {
 
.fs-slide {
 
@include fadeshow-animation(slidesAnimation-#{$i} #{$total-duration}s infinite);
 
}
 
}
 
 
/* Quick navigation animation */
 
~ .fs-quick-nav {
 
.fs-quick-btn {
 
@include fadeshow-animation(quickNavAnimation-#{$i} #{$total-duration}s infinite);
 
}
 
}
 
 
/* Animation Delay */
 
@for $j from 1 through $i {
 
~ .fs-slides .fs-slide:nth-child(#{$j}),
 
~ .fs-quick-nav .fs-quick-btn:nth-child(#{$j}) {
 
$animation-delay: #{($j - 1) * ($autoplay-duration) - $fade-time}s;
 
@include fadeshow-animation-delay(#{$animation-delay});
 
}
 
}
 
 
}
 
$i: $i - 1;
 
 
}
 
}
 
}
 
}
 +
 
}
 
}
  
/* Base Styling */
+
/* Base */
  
 
body {
 
body {
Line 507: Line 100:
 
right: 0;
 
right: 0;
 
box-shadow: 0 0 20px rgba(0,0,0,0.1);
 
box-shadow: 0 0 20px rgba(0,0,0,0.1);
overflow: hidden;
 
 
}
 
}
 
</style>
 
</style>
 +
<body>
 
<div class="container">
 
<div class="container">
 
 
<div data-am-fadeshow="next-prev-navigation">
+
<div data-am-gallery>
  
 
<!-- Radio -->
 
<!-- Radio -->
<input type="radio" name="css-fadeshow" id="slide-1" />
+
<input type="radio" name="gallery" id="img-1" checked />
<input type="radio" name="css-fadeshow" id="slide-2" />
+
<input type="radio" name="gallery" id="img-2" />
<input type="radio" name="css-fadeshow" id="slide-3" />
+
<input type="radio" name="gallery" id="img-3" />
  
<!-- Slides -->
+
<!-- Images -->
<div class="fs-slides">
+
<div class="images">
<div class="fs-slide" style="background-image: url(https://images.unsplash.com/photo-1460500063983-994d4c27756c?crop=entropy&fit=crop&fm=jpg&h=1325&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=2550);">
+
<div class="image" style="background-image: url(https://images.unsplash.com/photo-1433190152045-5a94184895da?crop=entropy&fit=crop&fm=jpg&h=1325&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=2500);"></div>
<!-- Add content to images (sample) -->
+
<div class="image" style="background-image: url(https://images.unsplash.com/photo-1440557653082-e8e186733eeb?crop=entropy&fit=crop&fm=jpg&h=1325&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=2500);"></div>
<div style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-family: sans-serif; text-align: center; text-shadow: 0 0 20px rgba(0,0,0,0.5);">
+
<div class="image" style="background-image: url(https://images.unsplash.com/photo-1449057528837-7ca097b3520c?crop=entropy&fit=crop&fm=jpg&h=1325&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=2500);"></div>
<h1 style="margin-top: 0; margin-bottom: 0.8vw; font-size: 5vw; font-weight: bold;">CSS Fadeshow</h1>
+
<p style="font-size: 2vw; font-weight: 100; margin-top: 0;">Easy to implement and use on <strong>your</strong> site!</p>
+
</div>
+
</div>
+
<div class="fs-slide" style="background-image: url(https://images.unsplash.com/photo-1440557653082-e8e186733eeb?crop=entropy&fit=crop&fm=jpg&h=1325&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=2500);"></div>
+
<div class="fs-slide" style="background-image: url(https://images.unsplash.com/photo-1449057528837-7ca097b3520c?crop=entropy&fit=crop&fm=jpg&h=1325&ixjsv=2.1.0&ixlib=rb-0.3.5&q=80&w=2500);"></div>
+
 
</div>
 
</div>
  
<!-- Quick Navigation -->
+
<!-- Navigation -->
<div class="fs-quick-nav">
+
<div class="navigation">
<label class="fs-quick-btn" for="slide-1"></label>
+
<label class="dot" for="img-1"></label>
<label class="fs-quick-btn" for="slide-2"></label>
+
<label class="dot" for="img-2"></label>
<label class="fs-quick-btn" for="slide-3"></label>
+
<label class="dot" for="img-3"></label>
</div>
+
+
<!-- Prev Navigation -->
+
<div class="fs-prev-nav">
+
<label class="fs-prev-btn" for="slide-1"></label>
+
<label class="fs-prev-btn" for="slide-2"></label>
+
<label class="fs-prev-btn" for="slide-3"></label>
+
</div>
+
+
<!-- Next Navigation -->
+
<div class="fs-next-nav">
+
<label class="fs-next-btn" for="slide-1"></label>
+
<label class="fs-next-btn" for="slide-2"></label>
+
<label class="fs-next-btn" for="slide-3"></label>
+
 
</div>
 
</div>
  
Line 556: Line 129:
 
 
 
</div>
 
</div>
 +
 +
</body>
 
</html>
 
</html>

Revision as of 22:24, 27 November 2016