1
0
mirror of https://github.com/phuoc-ng/csslayout.git synced 2025-08-05 05:37:29 +02:00

Add 3D card pattern

This commit is contained in:
Phuoc Nguyen
2021-04-04 12:07:33 +07:00
parent c821834390
commit 3be0f73232
8 changed files with 212 additions and 3 deletions

View File

@@ -3,7 +3,7 @@
* (c) 2019 - 2021 Nguyen Huu Phuoc <https://twitter.com/nghuuphuoc> * (c) 2019 - 2021 Nguyen Huu Phuoc <https://twitter.com/nghuuphuoc>
*/ */
enum Pattern { enum Pattern {
Accordion = 'Accordion', Accordion = 'Accordion',
ArrowButtons = 'Arrow buttons', ArrowButtons = 'Arrow buttons',
Avatar = 'Avatar', Avatar = 'Avatar',
@@ -88,6 +88,7 @@ enum Pattern {
Switch = 'Switch', Switch = 'Switch',
Tab = 'Tab', Tab = 'Tab',
Teardrop = 'Teardrop', Teardrop = 'Teardrop',
ThreeDimensionsCard = 'Three dimensions card',
Timeline = 'Timeline', Timeline = 'Timeline',
TogglePasswordVisibility = 'Toggle password visibility', TogglePasswordVisibility = 'Toggle password visibility',
Tooltip = 'Tooltip', Tooltip = 'Tooltip',

View File

@@ -141,6 +141,7 @@ const ExplorePage = () => {
<CoverCard pattern={Pattern.StickyTableColumn} /> <CoverCard pattern={Pattern.StickyTableColumn} />
<CoverCard pattern={Pattern.StickyTableHeaders} /> <CoverCard pattern={Pattern.StickyTableHeaders} />
<CoverCard pattern={Pattern.Teardrop} /> <CoverCard pattern={Pattern.Teardrop} />
<CoverCard pattern={Pattern.ThreeDimensionsCard} />
<CoverCard pattern={Pattern.Timeline} /> <CoverCard pattern={Pattern.Timeline} />
<CoverCard pattern={Pattern.TreeDiagram} /> <CoverCard pattern={Pattern.TreeDiagram} />
<CoverCard pattern={Pattern.TriangleButtons} /> <CoverCard pattern={Pattern.TriangleButtons} />

View File

@@ -84,7 +84,7 @@ css={`
</BrowserFrame> </BrowserFrame>
</div> </div>
<RelatedPatterns patterns={[Pattern.CardLayout, Pattern.StackedCards]} /> <RelatedPatterns patterns={[Pattern.CardLayout, Pattern.StackedCards, Pattern.ThreeDimensionsCard]} />
</DetailsLayout> </DetailsLayout>
); );
}; };

View File

@@ -103,7 +103,7 @@ css={`
</BrowserFrame> </BrowserFrame>
</div> </div>
<RelatedPatterns patterns={[Pattern.Card]} /> <RelatedPatterns patterns={[Pattern.Card, Pattern.ThreeDimensionsCard]} />
</DetailsLayout> </DetailsLayout>
); );
}; };

View File

@@ -0,0 +1,60 @@
/**
* A collection of popular layouts and patterns made with CSS (https://csslayout.io)
* (c) 2019 - 2021 Nguyen Huu Phuoc <https://twitter.com/nghuuphuoc>
*/
import * as React from 'react';
import Frame from '../../placeholders/Frame';
const Cover: React.FC<{}> = () => {
return (
<Frame>
<div
style={{
alignItems: 'center',
display: 'flex',
height: '100%',
justifyContent: 'center',
padding: '1.5rem',
}}
>
<div
style={{
border: '1px solid rgba(0, 0, 0, 0.3)',
height: '2rem',
position: 'relative',
width: '100%',
}
}>
<div
style={{
background: 'rgba(0, 0, 0, 0.3)',
height: '100%',
top: '0.5rem',
left: 0,
position: 'absolute',
transform: 'translate(-100%, 0) skewY(-45deg)',
transformOrigin: 'top left',
width: '0.5rem',
}}
/>
<div
style={{
background: 'rgba(0, 0, 0, 0.3)',
bottom: 0,
height: '0.5rem',
left: 0,
position: 'absolute',
transform: 'translate(0, 100%) skewX(-45deg)',
transformOrigin: 'top left',
width: '100%',
}}
/>
</div>
</div>
</Frame>
);
};
export default Cover;

View File

@@ -0,0 +1,100 @@
/**
* A collection of popular layouts and patterns made with CSS (https://csslayout.io)
* (c) 2019 - 2021 Nguyen Huu Phuoc <https://twitter.com/nghuuphuoc>
*/
import * as React from 'react';
import { Helmet } from 'react-helmet';
import RelatedPatterns from '../../components/RelatedPatterns';
import Pattern from '../../constants/Pattern';
import DetailsLayout from '../../layouts/DetailsLayout';
import BrowserFrame from '../../placeholders/BrowserFrame';
import './styles.css';
const Details: React.FC<{}> = () => {
return (
<DetailsLayout pattern={Pattern.ThreeDimensionsCard}>
<Helmet>
<meta name="description" content="Create a 3D card with CSS" />
<meta name="keywords" content="css 3D card" />
</Helmet>
<div className='p-8 pb-20'>
<BrowserFrame
html={`
<div class="three-dimensions-card">
...
</div>
`}
css={`
:root {
--three-dimensions-card-left-side-width: 1rem;
}
.three-dimensions-card {
position: relative;
}
/* The left side */
.three-dimensions-card::before {
background: rgba(0, 0, 0, 0.3);
content: '';
/* Position */
top: var(--three-dimensions-card-left-side-width);
left: 0px;
position: absolute;
transform: translate(-100%, 0) skewY(-45deg);
transform-origin: left top;
/* Size */
height: 100%;
width: var(--three-dimensions-card-left-side-width);
}
/* The bottom side */
.three-dimensions-card::after {
background: rgba(0, 0, 0, 0.3);
content: '';
/* Position */
bottom: 0px;
left: 0px;
position: absolute;
transform: translate(0, 100%) skewX(-45deg);
transform-origin: left top;
/* Size */
height: var(--three-dimensions-card-left-side-width);
width: 100%;
}
`}
>
<div
style={{
alignItems: 'center',
display: 'flex',
height: '100%',
justifyContent: 'center',
padding: '8px',
}}
>
<div className="three-dimensions-card">
<div
style={{
border: '1px solid rgba(0, 0, 0, 0.3)',
height: '8rem',
width: '16rem',
}}
/>
</div>
</div>
</BrowserFrame>
</div>
<RelatedPatterns patterns={[Pattern.Card, Pattern.StackedCards]} />
</DetailsLayout>
);
};
export default Details;

View File

@@ -0,0 +1,46 @@
/**
* A collection of popular layouts and patterns made with CSS (https://csslayout.io)
* (c) 2019 - 2021 Nguyen Huu Phuoc <https://twitter.com/nghuuphuoc>
*/
:root {
--three-dimensions-card-left-side-width: 1rem;
}
.three-dimensions-card {
position: relative;
}
/* The left side */
.three-dimensions-card::before {
background: rgba(0, 0, 0, 0.3);
content: '';
/* Position */
top: var(--three-dimensions-card-left-side-width);
left: 0px;
position: absolute;
transform: translate(-100%, 0) skewY(-45deg);
transform-origin: left top;
/* Size */
height: 100%;
width: var(--three-dimensions-card-left-side-width);
}
/* The bottom side */
.three-dimensions-card::after {
background: rgba(0, 0, 0, 0.3);
content: '';
/* Position */
bottom: 0px;
left: 0px;
position: absolute;
transform: translate(0, 100%) skewX(-45deg);
transform-origin: left top;
/* Size */
height: var(--three-dimensions-card-left-side-width);
width: 100%;
}

View File

@@ -84,6 +84,7 @@
<url><loc>https://csslayout.io/patterns/switch</loc></url> <url><loc>https://csslayout.io/patterns/switch</loc></url>
<url><loc>https://csslayout.io/patterns/tab</loc></url> <url><loc>https://csslayout.io/patterns/tab</loc></url>
<url><loc>https://csslayout.io/patterns/teardrop</loc></url> <url><loc>https://csslayout.io/patterns/teardrop</loc></url>
<url><loc>https://csslayout.io/patterns/three-dimensions-card</loc></url>
<url><loc>https://csslayout.io/patterns/timeline</loc></url> <url><loc>https://csslayout.io/patterns/timeline</loc></url>
<url><loc>https://csslayout.io/patterns/toggle-password-visibility</loc></url> <url><loc>https://csslayout.io/patterns/toggle-password-visibility</loc></url>
<url><loc>https://csslayout.io/patterns/tooltip</loc></url> <url><loc>https://csslayout.io/patterns/tooltip</loc></url>