From 61eae5c5f9881cab29712f6e696085baa977e1f9 Mon Sep 17 00:00:00 2001 From: Jeffrey Tse Date: Wed, 11 Sep 2019 12:19:34 +0800 Subject: release: v1.0.0 --- _sass/yat/_base.scss | 258 +++++++++++++++++++++++++ _sass/yat/_layout.scss | 371 ++++++++++++++++++++++++++++++++++++ _sass/yat/_syntax-highlighting.scss | 105 ++++++++++ 3 files changed, 734 insertions(+) create mode 100644 _sass/yat/_base.scss create mode 100644 _sass/yat/_layout.scss create mode 100644 _sass/yat/_syntax-highlighting.scss (limited to '_sass/yat') diff --git a/_sass/yat/_base.scss b/_sass/yat/_base.scss new file mode 100644 index 0000000..15eacde --- /dev/null +++ b/_sass/yat/_base.scss @@ -0,0 +1,258 @@ +/** + * Reset some basic elements + */ +body, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, hr, +dl, dd, ol, ul, figure { + margin: 0; + padding: 0; +} + + + +/** + * 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; + display: flex; + min-height: 100vh; + flex-direction: column; +} + + + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, +p, blockquote, pre, +ul, ol, dl, figure, +%vertical-rhythm { + margin-bottom: $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: $spacing-unit; +} + +li { + > ul, + > ol { + margin-bottom: 0; + } +} + + + +/** + * Headings + */ +h1, h2, h3, h4, h5, h6 { + font-weight: $base-font-weight * 1.5; +} + + + +/** + * Links + */ +a { + color: $brand-color; + text-decoration: none; + + &:visited { + color: darken($brand-color, 15%); + } + + &:hover { + color: $text-color; + 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: $spacing-unit / 2; + @include relative-font-size(1.125); + letter-spacing: -1px; + font-style: italic; + + > :last-child { + margin-bottom: 0; + } +} + + + +/** + * Code formatting + */ +pre, +code { + @include relative-font-size(0.9375); + border-radius: 3px; + background-color: #3d3d3d; +} + +code { + padding: 1px 5px; +} + +pre { + padding: 8px 12px; + overflow-x: auto; + + > code { + border: 0; + padding-right: 0; + padding-left: 0; + } +} + + + +/** + * Wrapper + */ +.wrapper { + max-width: $content-width; + margin: auto; + padding-right: $spacing-unit; + padding-left: $spacing-unit; + @extend %clearfix; + + @include media-query($on-laptop) { + padding-right: $spacing-unit / 2; + padding-left: $spacing-unit / 2; + } +} + + + +/** + * Clearfix + */ +%clearfix:after { + content: ""; + display: table; + clear: both; +} + + +/** + * Tables + */ +table { + margin-bottom: $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: ($spacing-unit / 3) ($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; + } +} + +/** + * Vertical center + */ +%vertical-center { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +/** + * Flex layout + */ +%flex-layout { + display: flex; +} + +%flex-1 { + flex: 1; + min-width: 0; /* <-- fix flexbox width with pre tags */ +} + +/** + * Flex sticky + */ +@mixin flex-sticky($top) { + position: sticky; + align-self: flex-start; /* <-- fix the sticky not work issue */ + transform: scale(0.9999); /* <-- fix the sticky x overflow issue */ + top: $top; +} diff --git a/_sass/yat/_layout.scss b/_sass/yat/_layout.scss new file mode 100644 index 0000000..4d4eeae --- /dev/null +++ b/_sass/yat/_layout.scss @@ -0,0 +1,371 @@ +/** + * Site header + */ +.site-header { + background: $header-background-color; + height: $header-height; + width: 100%; + + // Positioning context for the mobile navigation icon + @include flex-sticky(0); + z-index: 1000; + + a { + text-decoration: none; + } +} + +.site-brand { + float: left; + margin-right: 50px; + + .site-title { + @include relative-font-size(1.625); + font-weight: $base-font-weight; + line-height: $header-height; + letter-spacing: -1px; + + &, + &:visited { + color: $header-text-color; + } + } +} + +.site-nav { + @include relative-font-size(1.025); + float: right; + line-height: $header-height; + + .nav-trigger { + display: none; + } + + .menu-icon { + display: none; + } + + .page-link { + color: $header-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; + right: $spacing-unit / 2; + text-align: left; + + label[for="nav-trigger"] { + display: block; + float: right; + z-index: 2; + cursor: pointer; + } + + .menu-icon { + display: block; + float: right; + text-align: center; + + > svg { + fill: $white-color; + } + } + + input ~ .trigger { + clear: both; + display: none; + } + + input:checked ~ .trigger { + display: block; + background: $header-background-color; + } + + .page-link { + display: block; + padding: 5px 10px; + color: rgba($header-text-color, 80%); + margin: 0 25px; + } + } +} + +/** + * Site footer + */ +.site-footer { + @include relative-font-size(0.9); + color: $footer-text-color; + background: $footer-background-color; + padding: $spacing-unit * 0.8 0; + text-align: left; + + a { + $a-color: invert(mix(invert($theme-color), #0030ae)); + color: $a-color; + + &:hover { + color: lighten($a-color, 10%); + } + } +} + +/** + * Post header + */ +%post-header { + .post-header { + margin-bottom: $spacing-unit; + } + + .post-title { + @include relative-font-size(2.625); + letter-spacing: -1px; + line-height: 1; + + @include media-query($on-laptop) { + @include relative-font-size(2.25); + } + } +} + +/** + * Page content + */ +.page-content { + @extend %flex-1; /* <-- Keep footer on the bottom */ + padding: $spacing-unit 0; +} + +.page-heading { + @include relative-font-size(2); +} + +.post-list-heading { + @include relative-font-size(1.75); +} + +/** + * Pagination page + */ +.pagination { + .post-list { + margin-left: 0; + list-style: none; + + > li { + margin-bottom: $spacing-unit; + } + } + + .post-meta { + font-size: $small-font-size; + color: $grey-color; + } + + .post-link { + @include relative-font-size(1.5); + + display: block; + font-weight: 600; + } +} + + +/** + * Posts + */ +.post { + @extend %post-header; + + .post-content { + margin-bottom: $spacing-unit; + + 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); + } + } + } +} + + +/** + * Posts misc + */ +.post-nav { + display: flex; + justify-content: space-between; + + a { + display: flex; + } +} + + +/** + * Archives page + */ +.page-archives { + .page-archives-list { + margin-left: 0; + list-style: none; + } + + .archives-time { + @include relative-font-size(1.5); + + &:not(:first-child) { + margin-top: 18px; + } + margin-bottom: 8px; + } + + .post-meta { + font-size: $small-font-size; + color: $grey-color; + } +} + + +/** + * Page banner + */ +.page-banner { + display: block; + position: relative; + height: $banner-height; + background-color: $banner-background; + + .page-banner-img { + position: absolute; + height: 100%; + overflow: hidden; + + & > *:first-child { + position: relative; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + height: 100%; + max-width: 1000%; + background-size: cover; + background-position: center center; + overflow: hidden; + } + } + + .wrapper { + height: 100%; + } + + .page-banner-inner { + @extend %vertical-center; + + position: relative; + color: $banner-text-color; + padding: 10px 5px; + text-shadow: 1px 1px 2px #333; + + .page-banner-heading { + @include relative-font-size(2.825); + letter-spacing: -1px; + line-height: 1; + margin-bottom: 10px; + + @include media-query($on-palm) { + @include relative-font-size(2.425); + } + } + + @extend %post-header; + + .post-title { + @include relative-font-size(2.925); + } + } +} + + +/** + * Layout and sidebar + */ +.framework { + @extend %flex-layout; + + .main { + @extend %flex-1; + } + + .sidebar { + padding-left: 8px; + + @include flex-sticky($header-height + 20px); + + @include media-query($on-palm) { + display: none; + } + + } +} + + +/** + * Segments page + */ +.page-segments { + .page-segments-list { + margin-left: 0; + list-style: none; + } + + .segment-name { + font-weight: 600; + margin-bottom: 8px; + position: relative; + + @include relative-font-size(1.6); + + &:not(:first-child) { + margin-top: 28px; + } + + + &:hover:before { + content: '#'; + left: -1em; + position: absolute; + } + } + + .post-meta { + font-size: $small-font-size; + color: $grey-color; + } + +} + diff --git a/_sass/yat/_syntax-highlighting.scss b/_sass/yat/_syntax-highlighting.scss new file mode 100644 index 0000000..8e1224d --- /dev/null +++ b/_sass/yat/_syntax-highlighting.scss @@ -0,0 +1,105 @@ +/** + * Syntax highlighting styles + */ + +.highlight { + color: #c7c7c7; + @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 { color: #0fdcdc; font-weight: bold } // Keyword.Declaration + .kp { font-weight: bold } // Keyword.Pseudo + .kr { font-weight: bold } // Keyword.Reserved + .kt { color: #a7a7a7; font-weight: bold } // Keyword.Type + .m { color: #099 } // Literal.Number + .s { color: #d0c55c } // Literal.String + .na { color: #a6e22e } // Name.Attribute + .nb { color: #6cc117 } // Name.Builtin + .nc { color: #4682b4; font-weight: bold } // Name.Class + .no { color: #a6e22e } // Name.Constant + .ni { color: #800080 } // Name.Entity + .ne { color: #e04b9b; font-weight: bold } // Name.Exception + .nf { color: #e04b9b; font-weight: bold } // Name.Function + .nn { color: #a6e22e } // Name.Namespace + .nt { color: #4ec2e4 } // Name.Tag + .nv { color: #a6e22e } // 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: #d0c55c } // Literal.String.Backtick + .sc { color: #d0c55c } // Literal.String.Char + .sd { color: #d0c55c } // Literal.String.Doc + .s2 { color: #d0c55c } // Literal.String.Double + .se { color: #d0c55c } // Literal.String.Escape + .sh { color: #d0c55c } // Literal.String.Heredoc + .si { color: #d0c55c } // Literal.String.Interpol + .sx { color: #d0c55c } // Literal.String.Other + .sr { color: #009926 } // Literal.String.Regex + .s1 { color: #d0c55c } // Literal.String.Single + .ss { color: #990073 } // Literal.String.Symbol + .bp { color: #999 } // Name.Builtin.Pseudo + .vc { color: #a6e22e } // Name.Variable.Class + .vg { color: #a6e22e } // Name.Variable.Global + .vi { color: #a6e22e } // Name.Variable.Instance + .il { color: #099 } // Literal.Number.Integer.Long +} + +code .rouge-table { + @extend .highlight; +} + +code.highlighter-rouge { + color: white; + background: #676767; + border: none; + padding: 2px 4px; +} + +figure.highlight pre { + border-radius: 3px; + + code table.rouge-table { + margin: 0; + + td { + border: 1px solid #efefef86; + } + + pre { + margin: 0; + padding: 0; + } + + .gutter.gl { + padding: 0; + + .lineno { + padding: 2px; + text-align: center; + } + } + } +} -- cgit v1.2.3