From ca08744f4d9075199da8ea97578341a992107267 Mon Sep 17 00:00:00 2001 From: Phuoc Nguyen Date: Mon, 19 Sep 2022 19:29:19 +0700 Subject: [PATCH] feat: Fixed at side --- .eleventy.js | 7 +- contents/_includes/patterns/fixed-at-side.njk | 4 + contents/fixed-at-side.md | 40 +++ contents/index.njk | 6 + pages/fixed-at-side/index.tsx | 264 ------------------ patterns/fixed-at-side/Cover.tsx | 31 -- styles/index.scss | 1 + styles/patterns/_fixed-at-side.scss | 21 ++ styles/placeholders/_rectangle.scss | 64 ++++- 9 files changed, 127 insertions(+), 311 deletions(-) create mode 100644 contents/_includes/patterns/fixed-at-side.njk create mode 100644 contents/fixed-at-side.md delete mode 100644 pages/fixed-at-side/index.tsx delete mode 100644 patterns/fixed-at-side/Cover.tsx create mode 100644 styles/patterns/_fixed-at-side.scss diff --git a/.eleventy.js b/.eleventy.js index 82450fa..c1859e3 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -46,9 +46,12 @@ module.exports = function(eleventyConfig) { return `
${content}
`; }); - eleventyConfig.addShortcode('rectangle', function(width) { + // `direction` can be `hor` or `ver` + eleventyConfig.addShortcode('rectangle', function(dir, size, width) { + const direction = dir || 'hor'; + const s = size || 'sm'; const w = width || randomInteger(1, 4) * 20; - return `
`; + return `
`; }); eleventyConfig.addShortcode('square', function() { return `
`; diff --git a/contents/_includes/patterns/fixed-at-side.njk b/contents/_includes/patterns/fixed-at-side.njk new file mode 100644 index 0000000..a3963bf --- /dev/null +++ b/contents/_includes/patterns/fixed-at-side.njk @@ -0,0 +1,4 @@ +
+
{% rectangle "ver", "md", 100 %}
+
{% rectangle "ver", "md", 100 %}
+
\ No newline at end of file diff --git a/contents/fixed-at-side.md b/contents/fixed-at-side.md new file mode 100644 index 0000000..8ddead2 --- /dev/null +++ b/contents/fixed-at-side.md @@ -0,0 +1,40 @@ +--- +layout: layouts/post.njk +title: Fixed at side +description: Fix an element at the middle of side with CSS +keywords: css fixed +--- + +## HTML + +```html + +
+ ... +
+ + +
+ ... +
+``` + +## CSS + +```css +.fixed-at-side { + position: fixed; + top: 50%; + transform: translate(0px, -50%); +} +.fixed-at-side--l { + left: 0; +} +.fixed-at-side--r { + right: 0; +} +``` + +{% demo %} +{% include "patterns/fixed-at-side.njk" %} +{% enddemo %} diff --git a/contents/index.njk b/contents/index.njk index 1ee4219..d331999 100644 --- a/contents/index.njk +++ b/contents/index.njk @@ -145,6 +145,12 @@ eleventyExcludeFromCollections: true
Fixed at corner
+
+ +
{% include "patterns/fixed-at-side.njk" %}
+
Fixed at side
+
+
diff --git a/pages/fixed-at-side/index.tsx b/pages/fixed-at-side/index.tsx deleted file mode 100644 index 4498ad8..0000000 --- a/pages/fixed-at-side/index.tsx +++ /dev/null @@ -1,264 +0,0 @@ -import * as React from 'react'; -import Head from 'next/head'; -import { Heading, Spacer } from '@1milligram/design'; - -import { RelatedPatterns } from '../../components/RelatedPatterns'; -import { Pattern } from '../../constants/Pattern'; -import { PatternLayout } from '../../layouts/PatternLayout'; -import BrowserFrame from '../../placeholders/BrowserFrame'; - -const Details: React.FC<{}> = () => { - return ( - - - - - - - - -
- ... -
-`} - css={` - .container { - right: 0; - position: fixed; - top: 50%; - transform: translate(0px, -50%); - } - `} - > -
-
-
- - - -
- Use cases - -
-
-

A Feedback button

-
- Feedback -
-
- -
-

Navgiate between full page sections

-
-
-
-
-
-
-
- -
-

Social sharing toolbar

-
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
- - - - - ); -}; - -export default Details; diff --git a/patterns/fixed-at-side/Cover.tsx b/patterns/fixed-at-side/Cover.tsx deleted file mode 100644 index 6480892..0000000 --- a/patterns/fixed-at-side/Cover.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import * as React from 'react'; - -import Frame from '../../placeholders/Frame'; - -const Cover: React.FC<{}> = () => { - return ( - -
-
-
- - ); -}; - -export default Cover; diff --git a/styles/index.scss b/styles/index.scss index 28be893..3bb78f7 100644 --- a/styles/index.scss +++ b/styles/index.scss @@ -33,6 +33,7 @@ @import './patterns/feature-comparison'; @import './patterns/feature-list'; @import './patterns/fixed-at-corner'; +@import './patterns/fixed-at-side'; // Placeholders @import './placeholders/circle'; diff --git a/styles/patterns/_fixed-at-side.scss b/styles/patterns/_fixed-at-side.scss new file mode 100644 index 0000000..df96171 --- /dev/null +++ b/styles/patterns/_fixed-at-side.scss @@ -0,0 +1,21 @@ +.fixed-at-side { + width: 100%; + height: 100%; + border: 1px solid rgba(0, 0, 0, .3); + border-radius: 0.25rem; + + position: relative; +} + +.fixed-at-side__side { + height: 40%; + position: absolute; + top: 50%; + transform: translate(0px, -50%); +} +.fixed-at-side__side--l { + left: 0; +} +.fixed-at-side__side--r { + right: 0; +} \ No newline at end of file diff --git a/styles/placeholders/_rectangle.scss b/styles/placeholders/_rectangle.scss index 2d0988f..8118a35 100644 --- a/styles/placeholders/_rectangle.scss +++ b/styles/placeholders/_rectangle.scss @@ -1,20 +1,56 @@ .rectangle { background: rgba(0, 0, 0, .3); border-radius: 0.25rem; - height: 0.5rem; } -.rectangle--20 { - width: 20%; +.rectangle--hor { + &.rectangle--20 { + width: 20%; + } + &.rectangle--40 { + width: 40%; + } + &.rectangle--60 { + width: 60%; + } + &.rectangle--80 { + width: 80%; + } + &.rectangle--100 { + width: 100%; + } + &.rectangle--sm { + height: 0.5rem; + } + &.rectangle--md { + height: 2rem; + } + &.rectangle--lg { + height: 4rem; + } } -.rectangle--40 { - width: 40%; -} -.rectangle--60 { - width: 60%; -} -.rectangle--80 { - width: 80%; -} -.rectangle--100 { - width: 100%; +.rectangle--ver { + &.rectangle--20 { + height: 20%; + } + &.rectangle--40 { + height: 40%; + } + &.rectangle--60 { + height: 60%; + } + &.rectangle--80 { + height: 80%; + } + &.rectangle--100 { + height: 100%; + } + &.rectangle--sm { + width: 0.5rem; + } + &.rectangle--md { + width: 2rem; + } + &.rectangle--lg { + width: 4rem; + } } \ No newline at end of file