Compare commits
2 Commits
cv_dev_con
...
ascii_css
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea781e2aac | ||
|
|
f027ca2752 |
@@ -1,4 +0,0 @@
|
||||
# adding https redirection :
|
||||
RewriteEngine On
|
||||
RewriteCond %{HTTPS} off
|
||||
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
|
||||
41
README.md
@@ -1,44 +1,4 @@
|
||||
|
||||
start it with a server, like : `alive-server`
|
||||
- https://www.npmjs.com/package/alive-server
|
||||
- install : `npm install -g alive-server`
|
||||
|
||||
---
|
||||
|
||||
difficulties :
|
||||
|
||||
- [accessibility with ascii art titles](https://stackoverflow.com/questions/77537096/make-text-in-ascii-art-more-accessible)
|
||||
- I finally decided to go with a structure like this :
|
||||
```html
|
||||
<h1 aria-label="hugo lamy">
|
||||
<span aria-hidden="true" class="pre">
|
||||
hugo (ascii)
|
||||
</span>
|
||||
<span aria-hidden="true" class="pre">
|
||||
lamy (ascii)
|
||||
</span>
|
||||
</h1>
|
||||
```
|
||||
- [links accessibility](https://webaim.org/techniques/hypertext/)
|
||||
- [accessibility gone wild](https://webaim.org/articles/gonewild/)
|
||||
- [don't use title attribute](https://stackoverflow.com/questions/11161915/simple-tooltip-title-attribute/11163133#11163133)
|
||||
- [I thought title text improved accessibility. I was wrong.](https://silktide.com/blog/i-thought-title-text-improved-accessibility-i-was-wrong/)
|
||||
- [Things I learned by pretending to be blind for a week](https://medium.com/silktide/things-i-learned-by-pretending-to-be-blind-for-a-week-bf7b09f33eb4)
|
||||
- [create the full screen hero section with the navbar under the title](https://stackoverflow.com/questions/77596781/in-css-how-to-make-a-sticky-navbar-after-the-header-in-an-hero-section/)
|
||||
|
||||
---
|
||||
|
||||
projects :
|
||||
|
||||
- [/] ljdp
|
||||
- [ ] tchat transcendance
|
||||
- setup docker without sudo on server
|
||||
- remove authentification from project
|
||||
- [ ] cube3d
|
||||
- [ ] minishell
|
||||
|
||||
---
|
||||
|
||||
direction | width | child | child | child
|
||||
| | position | main axis | second axis
|
||||
................................................................
|
||||
@@ -226,3 +186,4 @@ projects :
|
||||
. .
|
||||
. . . . . . . . . . . . . . . . . . .
|
||||
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
@@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
|
||||
<path fill="#fff" d="M0 0h640v480H0z"/>
|
||||
<path fill="#000091" d="M0 0h213.3v480H0z"/>
|
||||
<path fill="#e1000f" d="M426.7 0H640v480H426.7z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 231 B |
@@ -1,5 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-fr" viewBox="0 0 640 480">
|
||||
<path fill="#ffffff" d="M0 0h640v480H0z"/>
|
||||
<path fill="#232323" d="M0 0h213.3v480H0z"/>
|
||||
<path fill="#727272" d="M426.7 0H640v480H426.7z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 234 B |
@@ -1,7 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb" viewBox="0 0 640 480">
|
||||
<path fill="#012169" d="M0 0h640v480H0z"/>
|
||||
<path fill="#FFF" d="m75 0 244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0z"/>
|
||||
<path fill="#C8102E" d="m424 281 216 159v40L369 281zm-184 20 6 35L54 480H0zM640 0v3L391 191l2-44L590 0zM0 0l239 176h-60L0 42z"/>
|
||||
<path fill="#FFF" d="M241 0v480h160V0zM0 160v160h640V160z"/>
|
||||
<path fill="#C8102E" d="M0 193v96h640v-96zM273 0v480h96V0z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 504 B |
@@ -1,7 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="flag-icons-gb" viewBox="0 0 640 480">
|
||||
<path fill="#262626" d="M0 0h640v480H0z"/>
|
||||
<path fill="#FFFFFF" d="m75 0 244 181L562 0h78v62L400 241l240 178v61h-80L320 301 81 480H0v-60l239-178L0 64V0z"/>
|
||||
<path fill="#666666" d="m424 281 216 159v40L369 281zm-184 20 6 35L54 480H0zM640 0v3L391 191l2-44L590 0zM0 0l239 176h-60L0 42z"/>
|
||||
<path fill="#FFFFFF" d="M241 0v480h160V0zM0 160v160h640V160z"/>
|
||||
<path fill="#666666" d="M0 193v96h640v-96zM273 0v480h96V0z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 510 B |
|
Before Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 9.2 MiB |
|
Before Width: | Height: | Size: 938 KiB |
|
Before Width: | Height: | Size: 5.3 MiB |
967
index.html
@@ -1,102 +1,33 @@
|
||||
.banner {
|
||||
width: 100%;
|
||||
--base_banner_height: 24px;
|
||||
--banner_height: var(--base_banner_height); /*default*/
|
||||
--base_dot_size: 4.2vw;
|
||||
--dot_size: var(--base_dot_size); /*default*/
|
||||
height: min(var(--dot_size), var(--banner_height));
|
||||
|
||||
background-image: url(../../docs/banners/banner_1.svg); /*default*/
|
||||
background-size: contain;
|
||||
background-repeat: repeat;
|
||||
background-position-x: 0%;
|
||||
|
||||
animation-duration: 10s; /*default*/
|
||||
animation-name: slide_svg;
|
||||
pre.banner {
|
||||
position: relative;
|
||||
margin: 10px 0px 10px -100px;
|
||||
animation-name: slide;
|
||||
animation-iteration-count: infinite;
|
||||
animation-duration: 2s;
|
||||
animation-timing-function: linear;
|
||||
animation-direction: normal;
|
||||
}
|
||||
@keyframes slide_svg {
|
||||
from {background-position-x: 0%;}
|
||||
to {background-position-x: 100%;}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* speeds
|
||||
*
|
||||
*/
|
||||
.banner_pause {
|
||||
pre.banner.pause {
|
||||
animation-play-state: paused;
|
||||
}
|
||||
.banner_reverse {
|
||||
pre.banner.reverse {
|
||||
animation-direction: reverse;
|
||||
}
|
||||
.banner_speed_10 {
|
||||
animation-duration: 10s;
|
||||
pre.banner.t0_5 {
|
||||
animation-duration: 0.5s;
|
||||
}
|
||||
.banner_speed_20 {
|
||||
animation-duration: 20s;
|
||||
pre.banner.t1_0 {
|
||||
animation-duration: 1s;
|
||||
}
|
||||
.banner_speed_30 {
|
||||
animation-duration: 30s;
|
||||
pre.banner.t1_5 {
|
||||
animation-duration: 1.5s;
|
||||
}
|
||||
.banner_speed_40 {
|
||||
animation-duration: 40s;
|
||||
pre.banner.t2_0 {
|
||||
animation-duration: 2s;
|
||||
}
|
||||
.banner_speed_50 {
|
||||
animation-duration: 50s;
|
||||
@keyframes slide {
|
||||
from {left:0;}
|
||||
to {left:2.4em;}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* sizes
|
||||
*
|
||||
*/
|
||||
.banner_size_0 {
|
||||
background-image: url(../../docs/banners/banner_0.svg);
|
||||
--banner_height: calc(var(--base_banner_height) * 1);
|
||||
--dot_size: calc(var(--base_dot_size) * 1);
|
||||
}
|
||||
.banner_size_00 {
|
||||
background-image: url(../../docs/banners/banner_00.svg);
|
||||
--banner_height: calc(var(--base_banner_height) * 1);
|
||||
--dot_size: calc(var(--base_dot_size) * 1);
|
||||
}
|
||||
.banner_size_1 {
|
||||
background-image: url(../../docs/banners/banner_1.svg);
|
||||
--banner_height: calc(var(--base_banner_height) * 1);
|
||||
--dot_size: calc(var(--base_dot_size) * 1);
|
||||
}
|
||||
.banner_size_2 {
|
||||
background-image: url(../../docs/banners/banner_2.svg);
|
||||
--banner_height: calc(var(--base_banner_height) * 2);
|
||||
--dot_size: calc(var(--base_dot_size) * 2);
|
||||
}
|
||||
.banner_size_3 {
|
||||
background-image: url(../../docs/banners/banner_3.svg);
|
||||
--banner_height: calc(var(--base_banner_height) * 3);
|
||||
--dot_size: calc(var(--base_dot_size) * 3);
|
||||
}
|
||||
.banner_size_4 {
|
||||
background-image: url(../../docs/banners/banner_4.svg);
|
||||
--banner_height: calc(var(--base_banner_height) * 4);
|
||||
--dot_size: calc(var(--base_dot_size) * 4);
|
||||
}
|
||||
.banner_size_5 {
|
||||
background-image: url(../../docs/banners/banner_5.svg);
|
||||
--banner_height: calc(var(--base_banner_height) * 5);
|
||||
--dot_size: calc(var(--base_dot_size) * 5);
|
||||
}
|
||||
|
||||
|
||||
/* specific banners */
|
||||
#top_banner {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -1,60 +1,33 @@
|
||||
.cv {
|
||||
width: auto;
|
||||
max-width: 900px;
|
||||
}
|
||||
|
||||
.cv {
|
||||
display: flex;
|
||||
text-align: left;
|
||||
#cv_infos {
|
||||
margin: 10px 10px 30px 10px;
|
||||
}
|
||||
.cv summary {
|
||||
position: relative;
|
||||
list-style-position: outside;
|
||||
list-style-type: "▸ ";
|
||||
font-size: 1.8rem;
|
||||
margin: auto;
|
||||
width: fit-content;
|
||||
}
|
||||
.cv summary .open {
|
||||
display: none;
|
||||
}
|
||||
.cv summary .close {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.cv .cv_download {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
margin-top: 30px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cv[open] summary {
|
||||
list-style-type: "▾ ";
|
||||
}
|
||||
.cv[open] summary .open {
|
||||
display: inline;
|
||||
}
|
||||
.cv[open] summary .close {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cv > *:last-child {
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
|
||||
.cv .banner {
|
||||
margin: 0px 0px 50px;
|
||||
#cv_infos h1,
|
||||
#cv_infos h2,
|
||||
#cv_infos h3,
|
||||
#cv_infos h4,
|
||||
#cv_infos h5,
|
||||
#cv_infos h6 {
|
||||
/*
|
||||
margin: 50px 50px;
|
||||
width: calc(100% - 100px);
|
||||
place-self: center;
|
||||
margin-left: var(--list-padding);
|
||||
*/
|
||||
}
|
||||
.cv h2 {
|
||||
margin-top: 100px;
|
||||
#cv_infos details {
|
||||
margin: 10px 0px;
|
||||
}
|
||||
.cv ul {
|
||||
border: 1px dashed black;
|
||||
padding: 20px;
|
||||
padding-left: 40px;
|
||||
#cv_infos summary {
|
||||
/*
|
||||
*/
|
||||
margin-left: var(--list-padding);
|
||||
}
|
||||
#cv_infos summary + * {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
details summary {
|
||||
/*
|
||||
list-style-type: none;
|
||||
*/
|
||||
list-style-position: outside;
|
||||
}
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#hero {
|
||||
min-height: 100vh;
|
||||
grid-template-columns: 1fr auto 1fr;
|
||||
/*
|
||||
* WIP : trying to find a solution to have both qualities :
|
||||
* - elements are spread across the page vertically ('hugo lamy developpeur' is not compacted on top)
|
||||
* - the details element 'voir le cv' dont jump when we unroll it
|
||||
*
|
||||
grid-template-rows: 1fr auto 1fr;
|
||||
grid-template-rows: auto auto 1fr;
|
||||
*/
|
||||
grid-template-rows: 50vh auto 1fr;
|
||||
}
|
||||
#hero .subtitle {
|
||||
text-align: center;
|
||||
display:inline-block;
|
||||
max-width: 700px;
|
||||
}
|
||||
@@ -1,6 +1,3 @@
|
||||
#infos article {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
place-content: center;
|
||||
height: 200px;
|
||||
|
||||
#personnal_infos {
|
||||
}
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
input#language {
|
||||
display: none;
|
||||
}
|
||||
label#language_label {
|
||||
position: fixed;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
z-index: 1;
|
||||
}
|
||||
label#language_label .flag {
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* FR
|
||||
*/
|
||||
input#language:not(:checked) + label #fr {
|
||||
display: inline;
|
||||
}
|
||||
input#language:checked + label #fr {
|
||||
display: none;
|
||||
}
|
||||
input#language:not(:checked) ~ * span.fr {
|
||||
display: none;
|
||||
}
|
||||
input#language:checked ~ * span.fr {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* EN
|
||||
*/
|
||||
input#language:not(:checked) + label #en {
|
||||
display: none;
|
||||
}
|
||||
input#language:checked + label #en {
|
||||
display: inline;
|
||||
}
|
||||
input#language:not(:checked) ~ * span.en {
|
||||
display: inline;
|
||||
}
|
||||
input#language:checked ~ * span.en {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -1,36 +1,59 @@
|
||||
@import "./mouses/mouse_1.css";
|
||||
@import "./mouses/mouse_2.css";
|
||||
@import "./mouses/mouse_3.css";
|
||||
@import "./mouses/mouse_4.css";
|
||||
|
||||
.mouse {
|
||||
margin: auto;
|
||||
position: relative;
|
||||
margin: 0px;
|
||||
}
|
||||
.frames_container {
|
||||
display: grid;
|
||||
width: fit-content;
|
||||
overflow: hidden;
|
||||
|
||||
/*
|
||||
border: 1px solid blue;
|
||||
*/
|
||||
}
|
||||
.mouse .frames {
|
||||
.frame {
|
||||
position: relative;
|
||||
animation: mouse_move infinite 2s normal steps(4);
|
||||
}
|
||||
.mouse .frames::before {
|
||||
position: relative;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
}
|
||||
.mouse .frames::after {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0px;
|
||||
grid-column: 1;
|
||||
grid-row: 1;
|
||||
margin: auto auto 0px 0px;
|
||||
|
||||
/*
|
||||
width: fit-content;
|
||||
height: fit-content;
|
||||
|
||||
border: 1px solid red;
|
||||
*/
|
||||
|
||||
opacity: 0;
|
||||
--tframes: 2s;
|
||||
animation-name: ascii_frame;
|
||||
animation-iteration-count: infinite;
|
||||
animation-duration: var(--tframes);
|
||||
animation-timing-function: linear;
|
||||
animation-direction: normal;
|
||||
}
|
||||
|
||||
/*
|
||||
* using 'transform' instead of 'top', because 'top' needs
|
||||
* the parent to have an explicit height
|
||||
* but in this case its height is according to the children
|
||||
*
|
||||
*/
|
||||
@keyframes mouse_move {
|
||||
0% {transform: translateY(0%);}
|
||||
100% {transform: translateY(-400%);}
|
||||
.frame.f2 {animation-delay: calc(var(--tframes) * 25/100);}
|
||||
.frame.f3 {animation-delay: calc(var(--tframes) * 50/100);}
|
||||
.frame.f4 {animation-delay: calc(var(--tframes) * 75/100);}
|
||||
|
||||
@keyframes ascii_frame {
|
||||
0% {opacity: 1;}
|
||||
25% {opacity: 1;}
|
||||
25.1% {opacity: 0;}
|
||||
100% {opacity: 0;}
|
||||
}
|
||||
|
||||
#mouse_1 {
|
||||
place-self: center;
|
||||
}
|
||||
#mouse_2 {
|
||||
left: 10%;
|
||||
}
|
||||
#mouse_3 {
|
||||
left: 60%;
|
||||
}
|
||||
#mouse_4 {
|
||||
left: 20%;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
.mouse_1::before {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
.mouse_1::after {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
.mouse_2::before {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
.mouse_2::after {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
.mouse_3::before {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
.mouse_3::after {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
.mouse_4::before {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
.mouse_4::after {
|
||||
content:'\
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
\a
|
||||
';
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
#projects {
|
||||
header {
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
#projects .projects_grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, auto));
|
||||
grid-template-columns: repeat(2, minmax(100px, auto));
|
||||
grid-template-columns: repeat(2, minmax(100px, 500px));
|
||||
grid-gap: 20px;
|
||||
}
|
||||
#projects .projects_grid figure {
|
||||
}
|
||||
#projects .projects_grid figure figcaption {
|
||||
text-align: left;
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
|
||||
#projects .mouse {
|
||||
margin-top: 100px;
|
||||
}
|
||||
97
styles/elements/test.css
Normal file
@@ -0,0 +1,97 @@
|
||||
#test {
|
||||
border: 1px solid blue;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-image: url(" \
|
||||
data:image/svg+xml;utf8, \
|
||||
<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='50px' width='100%'>\
|
||||
<text x='0' y='15'>\
|
||||
I love SVG!\
|
||||
</text>\
|
||||
</svg>");
|
||||
}
|
||||
/*
|
||||
#test::after {
|
||||
content: " \a \a \a \a \a \a \a \a \a \a \a \a \a \a \a ";
|
||||
white-space: pre;
|
||||
}
|
||||
*/
|
||||
|
||||
#mouse_test .frame.f1::before {
|
||||
content: " \A \A \A \A \A \A \A \A \A \A \A \A \A ";
|
||||
/*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
#mouse_test .frame.f2::before {
|
||||
content: " \A \A \A \A \A \A \A \A \A \A \A \A \A ";
|
||||
/*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
#mouse_test .frame.f3::before {
|
||||
content: " \A \A \A \A \A \A \A \A \A \A \A \A \A ";
|
||||
/*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
#mouse_test .frame.f4::before {
|
||||
content: " \A \A \A \A \A \A \A \A \A \A \A ";
|
||||
/*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -1,26 +1,8 @@
|
||||
|
||||
#name {
|
||||
margin:30px 0px 20px 0px;
|
||||
#role_title #name {
|
||||
margin:30px 0px 40px 0px;
|
||||
}
|
||||
#title {
|
||||
margin:20px 0px 20px 0px;
|
||||
}
|
||||
.title {
|
||||
/*
|
||||
older safari doesn't not support flex gap
|
||||
I could use a workaround :
|
||||
https://stackoverflow.com/questions/65452057/flexbox-gap-workaround-for-safari
|
||||
but it doesn't work with wrap
|
||||
so instead I make them in columns and add a margin
|
||||
|
||||
gap: 10px 30px;
|
||||
*/
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.title > *:first-child {
|
||||
margin-bottom: 10px;
|
||||
#role_title #title {
|
||||
margin:30px 0px 40px 0px;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,41 +1,8 @@
|
||||
/* https://stackoverflow.com/questions/62107074/how-to-hide-a-text-and-make-it-accessible-by-screen-reader */
|
||||
.visually-hidden {
|
||||
border: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
position: absolute !important;
|
||||
height: 1px;
|
||||
width: 1px;
|
||||
overflow: hidden;
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
clip: rect(1px 1px 1px 1px); /* IE6, IE7 - a 0 height clip, off to the bottom right of the visible 1px box */
|
||||
clip: rect(1px, 1px, 1px, 1px); /* maybe deprecated but we need to support legacy browsers */
|
||||
clip-path: inset(50%); /* modern browsers, clip-path works inwards from each corner */
|
||||
white-space: nowrap; /* added line to stop words getting smushed together (as they go onto separate lines and some screen readers do not understand line feeds as a space) */
|
||||
}
|
||||
|
||||
|
||||
.margin_top_small {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.margin_bottom_small {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.margin_top_big {
|
||||
margin-top: 50px;
|
||||
}
|
||||
.margin_bottom_big {
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
DATA-FLEX
|
||||
|
||||
direction width childrens childrens childrens
|
||||
position main axis cross axis
|
||||
direction width position main axis cross axis
|
||||
|
||||
[/]-horizontal [/]-parent [/]-center [/]-pack [/]-fit
|
||||
[/] vertical [/] content [/] left [/]-wrap [/] stretch
|
||||
@@ -64,37 +31,32 @@
|
||||
/*
|
||||
width : -parent- content
|
||||
*/
|
||||
[data-flex~="parent"] {
|
||||
width: 100%;
|
||||
width: -moz-available; /* WebKit-based browsers will ignore this. */
|
||||
width: -webkit-fill-available; /* Mozilla-based browsers will ignore this. */
|
||||
width: fill-available;
|
||||
}
|
||||
[data-flex~="parent"] { width: auto; }
|
||||
[data-flex~="content"] { width: fit-content; }
|
||||
/*
|
||||
position : -center- left right top bottom
|
||||
*/
|
||||
[data-flex~="left"] ,[data-flex~="vertical"][data-flex~="left"] { align-items: flex-start; text-align: left; }
|
||||
[data-flex~="right"] ,[data-flex~="vertical"][data-flex~="right"] { align-items: flex-end; text-align: right; }
|
||||
[data-flex~="top"] ,[data-flex~="vertical"][data-flex~="top"] { justify-content: flex-start; }
|
||||
[data-flex~="bottom"] ,[data-flex~="vertical"][data-flex~="bottom"] { justify-content: flex-end; }
|
||||
[data-flex~="center"] ,[data-flex~="vertical"][data-flex~="center"] { align-items: center; text-align: center; }
|
||||
[data-flex~="horizontal"][data-flex~="left"] { justify-content: flex-start; }
|
||||
[data-flex~="horizontal"][data-flex~="right"] { justify-content: flex-end; }
|
||||
[data-flex~="horizontal"][data-flex~="top"] { align-items: flex-start; }
|
||||
[data-flex~="horizontal"][data-flex~="bottom"] { align-items: flex-end; }
|
||||
[data-flex~="horizontal"][data-flex~="center"] { }
|
||||
[data-flex~="vertical"][data-flex~="left"] { align-items: flex-start; }
|
||||
[data-flex~="vertical"][data-flex~="right"] { align-items: flex-end; }
|
||||
[data-flex~="vertical"][data-flex~="top"] { justify-content: flex-start; }
|
||||
[data-flex~="vertical"][data-flex~="bottom"] { justify-content: flex-end; }
|
||||
[data-flex~="vertical"][data-flex~="center"] { align-items: center; }
|
||||
/*
|
||||
main axis : -pack- space spread grow wrap gap
|
||||
*/
|
||||
[data-flex~="pack"] > * ,[data-flex~="vertical"][data-flex~="pack"] > * { flex-grow: 0; }
|
||||
[data-flex~="space"] ,[data-flex~="vertical"][data-flex~="space"] { justify-content: space-around; }
|
||||
[data-flex~="spread"] ,[data-flex~="vertical"][data-flex~="spread"] { justify-content: space-between; }
|
||||
[data-flex~="grow"] > * ,[data-flex~="vertical"][data-flex~="grow"] > * { flex-grow: 1; }
|
||||
[data-flex~="horizontal"][data-flex~="pack"] > * { flex-grow: 0; }
|
||||
[data-flex~="horizontal"][data-flex~="space"] { justify-content: space-around; }
|
||||
[data-flex~="horizontal"][data-flex~="spread"] { justify-content: space-between; }
|
||||
[data-flex~="horizontal"][data-flex~="grow"] > * { flex-grow: 1; }
|
||||
[data-flex~="vertical"][data-flex~="pack"] > * { flex-grow: 0; }
|
||||
[data-flex~="vertical"][data-flex~="space"] { justify-content: space-around; }
|
||||
[data-flex~="vertical"][data-flex~="spread"] { justify-content: space-between; }
|
||||
[data-flex~="vertical"][data-flex~="grow"] > * { flex-grow: 1; }
|
||||
[data-flex~="wrap"] { flex-wrap: wrap; }
|
||||
/*
|
||||
cross axis : -fit- stretch
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
section {
|
||||
display: grid;
|
||||
margin: 0px;
|
||||
width: 100vw;
|
||||
grid-template-columns: auto auto auto;
|
||||
grid-auto-rows: auto;
|
||||
grid-gap: 10px;
|
||||
gap: 10px;
|
||||
min-height: 100vh;
|
||||
justify-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
section header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
place-content: center;
|
||||
}
|
||||
section header h1 {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
section article {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
section > * {
|
||||
grid-column: 2 / span 1;
|
||||
}
|
||||
section > .grid_full_width {
|
||||
grid-column: 1 / span 3;
|
||||
}
|
||||
|
||||
section .banner {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
:root {
|
||||
--base_font_size: 62.5%;
|
||||
}
|
||||
html {
|
||||
font-size: var(--base_font_size);
|
||||
font-size: 62.5%;
|
||||
}
|
||||
:root {
|
||||
--small-space: 10px;
|
||||
--medium-space: calc(var(--small-space) * 3);
|
||||
--big-space: calc(var(--small-space) * 10);
|
||||
--list-padding: 40px;
|
||||
}
|
||||
body {
|
||||
overflow-x: clip;
|
||||
margin: auto;
|
||||
width: fit-content;
|
||||
background-color: #f6f6f6;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
figure {
|
||||
overflow: hidden;
|
||||
}
|
||||
script, style {
|
||||
display: none;
|
||||
@@ -17,15 +20,41 @@ pre {
|
||||
margin: 10px 0px;
|
||||
}
|
||||
|
||||
/* https://css-tricks.com/slow-movement/#h-you-can-implement-native-smooth-scrolling-in-css */
|
||||
/* Animate scrolling only if users don’t prefer reduced motion */
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
/* Add some spacing between the target and the top of the viewport */
|
||||
:target {
|
||||
scroll-margin-top: 0px;
|
||||
}
|
||||
/*
|
||||
grid
|
||||
*/
|
||||
|
||||
#personnal_infos { grid-area: infos; }
|
||||
#role_title { grid-area: title; }
|
||||
#cv_infos { grid-area: cv; }
|
||||
#mouse_1 { grid-area: mouse_1; }
|
||||
#mouse_2 { grid-area: mouse_2; }
|
||||
#mouse_3 { grid-area: mouse_3; }
|
||||
#mouse_4 { grid-area: mouse_4; }
|
||||
#banner_1 { grid-area: banner_1;}
|
||||
#banner_2 { grid-area: banner_2;}
|
||||
#banner_3 { grid-area: banner_3;}
|
||||
#banner_4 { grid-area: banner_4;}
|
||||
#banner_5 { grid-area: banner_5;}
|
||||
|
||||
body {
|
||||
/*
|
||||
*/
|
||||
margin: 0px;
|
||||
display: grid;
|
||||
grid:
|
||||
' title ' auto
|
||||
' banner_1 ' auto
|
||||
' mouse_1 ' auto
|
||||
' banner_2 ' auto
|
||||
' cv ' auto
|
||||
' banner_3 ' auto
|
||||
' banner_4 ' auto
|
||||
' mouse_2 ' auto
|
||||
' mouse_3 ' auto
|
||||
' banner_5 ' auto
|
||||
' mouse_4 ' auto
|
||||
' infos ' auto
|
||||
/ 1fr ;
|
||||
}
|
||||
|
||||
@@ -6,36 +6,28 @@
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/*
|
||||
*/
|
||||
body, pre {
|
||||
font-family: "notomono", monospace;
|
||||
font-size: 1.5rem;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/*
|
||||
*/
|
||||
@media screen and (min-width: 500px) {
|
||||
html {
|
||||
font-size: calc(var(--base_font_size) * 1.2);
|
||||
}
|
||||
}
|
||||
ul {
|
||||
/*
|
||||
*/
|
||||
display: block;
|
||||
list-style-type: "• ";
|
||||
padding-left: 25px;
|
||||
/*
|
||||
list-style-position: inside;
|
||||
*/
|
||||
list-style-position: outside;
|
||||
padding-left: var(--list-padding);
|
||||
}
|
||||
li {
|
||||
display: list-item;
|
||||
}
|
||||
li::marker {
|
||||
font-size: 1.8rem;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
a:empty::after {
|
||||
a::after {
|
||||
content: attr(href);
|
||||
}
|
||||
h1 { margin: 30px 0px; font-size: 2.25rem; }
|
||||
@@ -44,17 +36,8 @@ h3 { margin: 20px 0px; font-size: 1.75rem; }
|
||||
h4 { margin: 20px 0px; font-size: 1.5rem; }
|
||||
h5 { margin: 10px 0px; font-size: 1.25rem; }
|
||||
h6 { margin: 10px 0px; font-size: 1.0rem; }
|
||||
|
||||
.pre, pre {
|
||||
display: flex;
|
||||
white-space: pre;
|
||||
pre, .ascii {
|
||||
line-height: 0.8;
|
||||
font-size: min(2.1vw, 1.0rem);
|
||||
}
|
||||
.pre_small {
|
||||
font-size: min(1.5vw, 0.7rem);
|
||||
}
|
||||
|
||||
a {
|
||||
word-break: break-all;
|
||||
font-size: min(2.2vw, 1.0rem);
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
@@ -293,35 +293,6 @@
|
||||
|
||||
|
||||
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
|
||||
|
||||
•••• •••• ••••• ••••• ••••• ••••• ••••• •••••
|
||||
• • • • • • • • • • •
|
||||
•••• •••• • • • •••• • • •••••
|
||||
• • • • • • • • • •
|
||||
• • • ••••• •• ••••• ••••• • •••••
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||