mirror of
https://github.com/KevinMidboe/schleppe-lab.git
synced 2025-10-29 17:50:39 +00:00
Homepage setup for schleppe lab blog
This commit is contained in:
274
_sass/_base.scss
Normal file
274
_sass/_base.scss
Normal file
@@ -0,0 +1,274 @@
|
||||
/**
|
||||
* Reset some basic elements
|
||||
*/
|
||||
body,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
blockquote,
|
||||
pre,
|
||||
hr,
|
||||
dl,
|
||||
dd,
|
||||
ol,
|
||||
ul,
|
||||
figure {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/**
|
||||
* Basic styling
|
||||
*/
|
||||
body {
|
||||
font: $base-font-weight #{$base-font-size}/#{$base-line-height}
|
||||
$base-font-family;
|
||||
color: $text-color;
|
||||
background-color: $background-color;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-font-feature-settings: "kern" 1;
|
||||
-moz-font-feature-settings: "kern" 1;
|
||||
-o-font-feature-settings: "kern" 1;
|
||||
font-feature-settings: "kern" 1;
|
||||
font-kerning: normal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set `margin-bottom` to maintain vertical rhythm
|
||||
*/
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
blockquote,
|
||||
pre,
|
||||
ul,
|
||||
ol,
|
||||
dl,
|
||||
figure,
|
||||
%vertical-rhythm {
|
||||
margin-bottom: calc(var(--spacing-unit) / 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* `main` element
|
||||
*/
|
||||
main {
|
||||
display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */
|
||||
}
|
||||
|
||||
/**
|
||||
* Images
|
||||
*/
|
||||
img {
|
||||
max-width: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Figures
|
||||
*/
|
||||
figure > img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-size: $small-font-size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists
|
||||
*/
|
||||
ul,
|
||||
ol {
|
||||
margin-left: var(--spacing-unit);
|
||||
}
|
||||
|
||||
li {
|
||||
> ul,
|
||||
> ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Headings
|
||||
*/
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-weight: $base-font-weight;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Links
|
||||
*/
|
||||
a {
|
||||
color: $brand-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.social-media-list &:hover {
|
||||
text-decoration: none;
|
||||
|
||||
.username {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Blockquotes
|
||||
*/
|
||||
blockquote {
|
||||
color: $grey-color;
|
||||
border-left: 4px solid $grey-color-light;
|
||||
padding-left: calc(var(--spacing-unit) / 2);
|
||||
@include relative-font-size(1.125);
|
||||
letter-spacing: -1px;
|
||||
font-style: italic;
|
||||
|
||||
> :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Code formatting
|
||||
*/
|
||||
pre,
|
||||
code {
|
||||
font-size: 0.9375em;
|
||||
border: 1px solid hsla(0, 0%, 100%, 0.1);
|
||||
padding: 3em;
|
||||
// background-color: var(--background-color);
|
||||
}
|
||||
|
||||
code {
|
||||
padding: 1px 5px;
|
||||
background-color: rgba(255, 168, 106, 0.2);
|
||||
color: var(--brand-color);
|
||||
margin: 0 2px;
|
||||
padding: 1px 6px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 8px 12px;
|
||||
padding: 1.25em;
|
||||
overflow-x: auto;
|
||||
|
||||
> code {
|
||||
background-color: unset;
|
||||
border: 0;
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.highlight {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.highlight > button {
|
||||
all: unset;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
top: 1rem;
|
||||
right: 1rem;
|
||||
z-index: 100;
|
||||
cursor: pointer;
|
||||
|
||||
background: hsla(0, 0%, 87.8%, 0.2) !important;
|
||||
border-radius: 0 !important;
|
||||
box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2) !important;
|
||||
color: #bbb !important;
|
||||
font-size: 0.8em !important;
|
||||
margin: 6px !important;
|
||||
padding: 10px !important;
|
||||
transition: opacity 0.5s ease;
|
||||
}
|
||||
|
||||
.highlight:hover > button {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.highlight > button:active,
|
||||
.highlight > button:focus {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clearfix
|
||||
*/
|
||||
%clearfix:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/**
|
||||
* Icons
|
||||
*/
|
||||
|
||||
.svg-icon {
|
||||
width: 21px;
|
||||
height: 16px;
|
||||
display: inline-block;
|
||||
fill: #{$grey-color};
|
||||
padding-right: 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.social-media-list {
|
||||
li + li {
|
||||
padding-top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tables
|
||||
*/
|
||||
table {
|
||||
margin-bottom: var(--spacing-unit);
|
||||
width: 100%;
|
||||
text-align: $table-text-align;
|
||||
color: lighten($text-color, 18%);
|
||||
border-collapse: collapse;
|
||||
border: 1px solid $grey-color-light;
|
||||
tr {
|
||||
&:nth-child(even) {
|
||||
background-color: lighten($grey-color-light, 6%);
|
||||
}
|
||||
}
|
||||
th,
|
||||
td {
|
||||
padding: calc(var(--spacing-unit) / 3) calc(var(--spacing-unit) / 2);
|
||||
}
|
||||
th {
|
||||
background-color: lighten($grey-color-light, 3%);
|
||||
border: 1px solid darken($grey-color-light, 4%);
|
||||
border-bottom-color: darken($grey-color-light, 12%);
|
||||
}
|
||||
td {
|
||||
border: 1px solid $grey-color-light;
|
||||
}
|
||||
}
|
||||
98
_sass/_header.scss
Normal file
98
_sass/_header.scss
Normal file
@@ -0,0 +1,98 @@
|
||||
/**
|
||||
* Site header
|
||||
*/
|
||||
.site-header {
|
||||
border-bottom: 3px dashed $grey-color-light;
|
||||
border-bottom: 3px dashed rgba(254, 168, 106, 0.6);
|
||||
min-height: calc(var(--spacing-unit) * 1.865);
|
||||
|
||||
// Positioning context for the mobile navigation icon
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.site-title {
|
||||
@include relative-font-size(1.625);
|
||||
font-weight: 300;
|
||||
line-height: $base-line-height * $base-font-size * 2.25;
|
||||
letter-spacing: -1px;
|
||||
margin-bottom: 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.site-nav {
|
||||
float: right;
|
||||
line-height: $base-line-height * $base-font-size * 2.25;
|
||||
|
||||
.nav-trigger {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.menu-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.page-link {
|
||||
color: $text-color;
|
||||
line-height: $base-line-height;
|
||||
|
||||
// Gaps between nav items, but not on the last one
|
||||
&:not(:last-child) {
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-query($on-palm) {
|
||||
position: absolute;
|
||||
top: 9px;
|
||||
right: calc(var(--spacing-unit) / 2);
|
||||
background-color: $background-color;
|
||||
border: 1px solid $grey-color-light;
|
||||
border-radius: 5px;
|
||||
text-align: right;
|
||||
|
||||
label[for="nav-trigger"] {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
z-index: 2;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.menu-icon {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 36px;
|
||||
height: 26px;
|
||||
line-height: 0;
|
||||
padding-top: 10px;
|
||||
text-align: center;
|
||||
|
||||
> svg {
|
||||
fill: $grey-color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
input ~ .trigger {
|
||||
clear: both;
|
||||
display: none;
|
||||
}
|
||||
|
||||
input:checked ~ .trigger {
|
||||
display: block;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.page-link {
|
||||
display: block;
|
||||
padding: 5px 10px;
|
||||
|
||||
&:not(:last-child) {
|
||||
margin-right: 0;
|
||||
}
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
196
_sass/_layout.scss
Normal file
196
_sass/_layout.scss
Normal file
@@ -0,0 +1,196 @@
|
||||
/**
|
||||
* Site footer
|
||||
*/
|
||||
.site-footer {
|
||||
border-top: 1px solid $grey-color-light;
|
||||
padding: var(--spacing-unit) 0;
|
||||
}
|
||||
|
||||
.footer-heading {
|
||||
@include relative-font-size(1.125);
|
||||
margin-bottom: calc(var(--spacing-unit) / 2);
|
||||
}
|
||||
|
||||
.contact-list,
|
||||
.social-media-list {
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.footer-col-wrapper {
|
||||
@include relative-font-size(0.9375);
|
||||
color: $grey-color;
|
||||
@extend %clearfix;
|
||||
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
@include media-query($on-palm) {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
max-width: 864px;
|
||||
min-height: 100vh;
|
||||
margin: 0 auto;
|
||||
padding: var(--spacing-unit);
|
||||
|
||||
@include media-query($on-palm) {
|
||||
padding: 0.7rem;
|
||||
}
|
||||
}
|
||||
|
||||
.home .intro {
|
||||
margin-bottom: 5em;
|
||||
}
|
||||
|
||||
/**
|
||||
* Page content
|
||||
*/
|
||||
.page-heading {
|
||||
margin-top: 1.75em;
|
||||
@include relative-font-size(2);
|
||||
}
|
||||
|
||||
.post-list-heading {
|
||||
@include relative-font-size(1.75);
|
||||
}
|
||||
|
||||
.post-list {
|
||||
margin-left: 0;
|
||||
list-style: none;
|
||||
|
||||
> li {
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
margin-bottom: var(--spacing-unit);
|
||||
padding-bottom: var(--spacing-unit);
|
||||
}
|
||||
|
||||
h3,
|
||||
h3 > a {
|
||||
font-size: 1.4em;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.post-tags,
|
||||
.post-tags a {
|
||||
color: $grey-color;
|
||||
}
|
||||
|
||||
.post-meta {
|
||||
font-size: $small-font-size;
|
||||
opacity: 0.8;
|
||||
color: var(--brand-color);
|
||||
}
|
||||
|
||||
.post-link {
|
||||
display: block;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.excerpt {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.read-more {
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
display: inline-flex;
|
||||
margin: 0;
|
||||
max-width: 100%;
|
||||
padding: 0;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
figure.fullwidth {
|
||||
position: relative;
|
||||
width: 55vw;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
width: 95vw;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Posts
|
||||
*/
|
||||
.post-header {
|
||||
margin-bottom: var(--spacing-unit);
|
||||
}
|
||||
|
||||
.post-title {
|
||||
--border: 3px dotted var(--brand-color);
|
||||
font-size: 2em;
|
||||
color: var(--brand-color);
|
||||
border-bottom: var(--border);
|
||||
letter-spacing: -1px;
|
||||
margin: 4rem 0 1rem;
|
||||
padding-bottom: 1rem;
|
||||
position: relative;
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
@include relative-font-size(2.25);
|
||||
}
|
||||
|
||||
&::after {
|
||||
border-bottom: var(--border);
|
||||
bottom: 2px;
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.post-content {
|
||||
margin-bottom: var(--spacing-unit);
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
a {
|
||||
opacity: 0;
|
||||
transition: opacity 0.15s ease;
|
||||
}
|
||||
|
||||
&:hover > a {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
@include relative-font-size(2);
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
@include relative-font-size(1.75);
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
@include relative-font-size(1.625);
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
@include relative-font-size(1.375);
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
@include relative-font-size(1.25);
|
||||
|
||||
@include media-query($on-laptop) {
|
||||
@include relative-font-size(1.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
66
_sass/_syntax-highlighting.scss
Normal file
66
_sass/_syntax-highlighting.scss
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* Syntax highlighting styles
|
||||
*/
|
||||
.highlight {
|
||||
@extend %vertical-rhythm;
|
||||
|
||||
.c { color: #998; font-style: italic } // Comment
|
||||
.err { color: #a61717; background-color: #e3d2d2 } // Error
|
||||
.k { font-weight: bold } // Keyword
|
||||
.o { font-weight: bold } // Operator
|
||||
.cm { color: #998; font-style: italic } // Comment.Multiline
|
||||
.cp { color: #999; font-weight: bold } // Comment.Preproc
|
||||
.c1 { color: #998; font-style: italic } // Comment.Single
|
||||
.cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
|
||||
.gd { color: #000; background-color: #fdd } // Generic.Deleted
|
||||
.gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
|
||||
.ge { font-style: italic } // Generic.Emph
|
||||
.gr { color: #a00 } // Generic.Error
|
||||
.gh { color: #999 } // Generic.Heading
|
||||
.gi { color: #000; background-color: #dfd } // Generic.Inserted
|
||||
.gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
|
||||
.go { color: #888 } // Generic.Output
|
||||
.gp { color: #555 } // Generic.Prompt
|
||||
.gs { font-weight: bold } // Generic.Strong
|
||||
.gu { color: #aaa } // Generic.Subheading
|
||||
.gt { color: #a00 } // Generic.Traceback
|
||||
.kc { font-weight: bold } // Keyword.Constant
|
||||
.kd { font-weight: bold } // Keyword.Declaration
|
||||
.kp { font-weight: bold } // Keyword.Pseudo
|
||||
.kr { font-weight: bold } // Keyword.Reserved
|
||||
.kt { color: #458; font-weight: bold } // Keyword.Type
|
||||
.m { color: #099 } // Literal.Number
|
||||
.s { color: #d14 } // Literal.String
|
||||
.na { color: #008080 } // Name.Attribute
|
||||
.nb { color: #0086B3 } // Name.Builtin
|
||||
.nc { color: #458; font-weight: bold } // Name.Class
|
||||
.no { color: #008080 } // Name.Constant
|
||||
.ni { color: #800080 } // Name.Entity
|
||||
.ne { color: #900; font-weight: bold } // Name.Exception
|
||||
.nf { color: #900; font-weight: bold } // Name.Function
|
||||
.nn { color: #555 } // Name.Namespace
|
||||
.nt { color: #000080 } // Name.Tag
|
||||
.nv { color: #008080 } // Name.Variable
|
||||
.ow { font-weight: bold } // Operator.Word
|
||||
.w { color: #bbb } // Text.Whitespace
|
||||
.mf { color: #099 } // Literal.Number.Float
|
||||
.mh { color: #099 } // Literal.Number.Hex
|
||||
.mi { color: #099 } // Literal.Number.Integer
|
||||
.mo { color: #099 } // Literal.Number.Oct
|
||||
.sb { color: #d14 } // Literal.String.Backtick
|
||||
.sc { color: #d14 } // Literal.String.Char
|
||||
.sd { color: #d14 } // Literal.String.Doc
|
||||
.s2 { color: #d14 } // Literal.String.Double
|
||||
.se { color: #d14 } // Literal.String.Escape
|
||||
.sh { color: #d14 } // Literal.String.Heredoc
|
||||
.si { color: #d14 } // Literal.String.Interpol
|
||||
.sx { color: #d14 } // Literal.String.Other
|
||||
.sr { color: #009926 } // Literal.String.Regex
|
||||
.s1 { color: #d14 } // Literal.String.Single
|
||||
.ss { color: #990073 } // Literal.String.Symbol
|
||||
.bp { color: #999 } // Name.Builtin.Pseudo
|
||||
.vc { color: #008080 } // Name.Variable.Class
|
||||
.vg { color: #008080 } // Name.Variable.Global
|
||||
.vi { color: #008080 } // Name.Variable.Instance
|
||||
.il { color: #099 } // Literal.Number.Integer.Long
|
||||
}
|
||||
16
_sass/_tags.scss
Normal file
16
_sass/_tags.scss
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
.tags-page {
|
||||
h1 {
|
||||
color: var(--brand-color);
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-left: 1.25em;
|
||||
color: var(--brand-color);
|
||||
list-style-type: square;
|
||||
|
||||
li a {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
77
_sass/main.scss
Normal file
77
_sass/main.scss
Normal file
@@ -0,0 +1,77 @@
|
||||
@charset "utf-8";
|
||||
|
||||
// Define defaults for each variable.
|
||||
|
||||
@font-face {
|
||||
font-family: "Fira Code";
|
||||
src: url("/assets/fonts/FiraCode-Regular.ttf");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Fira Code";
|
||||
font-weight: bold;
|
||||
src: url("/assets/fonts/FiraCode-Bold.ttf");
|
||||
}
|
||||
|
||||
:root {
|
||||
--font-family: "Fira Code", Monaco, Consolas, "Ubuntu Mono", monospace;
|
||||
--font-size: 16px;
|
||||
--font-weight: 400;
|
||||
--font-size-small: 14px;
|
||||
--line-height: 1.5;
|
||||
|
||||
--spacing-unit: 2.5em;
|
||||
|
||||
--text-color: white;
|
||||
--background-color: #222129;
|
||||
--brand-color: #fea86a;
|
||||
--border-color: hsla(0, 0%, 100%, 0.1);
|
||||
}
|
||||
$base-font-family: "Fira Code", Monaco, Consolas, "Ubuntu Mono", monospace !default;
|
||||
$base-font-size: 16px !default;
|
||||
$base-font-weight: 400 !default;
|
||||
$small-font-size: $base-font-size * 0.875 !default;
|
||||
$base-line-height: 1.5 !default;
|
||||
|
||||
$spacing-unit: 2.5em !default;
|
||||
|
||||
$text-color: white !default;
|
||||
$background-color: #222129 !default;
|
||||
$brand-color: #fea86a !default;
|
||||
|
||||
$grey-color: #828282 !default;
|
||||
$grey-color-light: lighten($grey-color, 40%) !default;
|
||||
$grey-color-dark: darken($grey-color, 25%) !default;
|
||||
|
||||
$table-text-align: left !default;
|
||||
|
||||
// Width of the content area
|
||||
$content-width: 800px !default;
|
||||
|
||||
$on-palm: 600px !default;
|
||||
$on-laptop: 800px !default;
|
||||
|
||||
// Use media queries like this:
|
||||
// @include media-query($on-palm) {
|
||||
// .wrapper {
|
||||
// padding-right: $spacing-unit / 2;
|
||||
// padding-left: $spacing-unit / 2;
|
||||
// }
|
||||
// }
|
||||
@mixin media-query($device) {
|
||||
@media screen and (max-width: $device) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin relative-font-size($ratio) {
|
||||
font-size: $base-font-size * $ratio;
|
||||
}
|
||||
|
||||
// Import partials.
|
||||
// @import "base", "layout", "tags", "syntax-highlighting";
|
||||
@import "base";
|
||||
@import "layout";
|
||||
@import "tags";
|
||||
@import "syntax-highlighting.scss";
|
||||
@import "header.scss";
|
||||
|
||||
Reference in New Issue
Block a user