1
0
mirror of https://github.com/phuoc-ng/csslayout.git synced 2025-08-06 06:07:33 +02:00

Add same height columns

This commit is contained in:
Phuoc Nguyen
2019-11-17 12:10:40 +07:00
parent 3b615d2aef
commit 6df15baf86
6 changed files with 140 additions and 2 deletions

View File

@@ -8,6 +8,7 @@ import Centering from './layouts/centering/Details';
import HolyGrail from './layouts/holy-grail/Details';
import InputAddon from './layouts/input-add-on/Details';
import MediaObject from './layouts/media-object/Details';
import SameHeightColumns from './layouts/same-height-columns/Details';
import Sidebar from './layouts/sidebar/Details';
import StepperInput from './layouts/stepper-input/Details';
import StickyFooter from './layouts/sticky-footer/Details';
@@ -24,6 +25,7 @@ const App = () => {
<Route exact={true} path='/holy-grail'><HolyGrail /></Route>
<Route exact={true} path='/input-add-on'><InputAddon /></Route>
<Route exact={true} path='/media-object'><MediaObject /></Route>
<Route exact={true} path='/same-height-columns'><SameHeightColumns /></Route>
<Route exact={true} path='/sidebar'><Sidebar /></Route>
<Route exact={true} path='/stepper-input'><StepperInput /></Route>
<Route exact={true} path='/sticky-footer'><StickyFooter /></Route>

View File

@@ -7,6 +7,7 @@ import CenterCover from './layouts/centering/Cover';
import HolyGrailCover from './layouts/holy-grail/Cover';
import InputAddonCover from './layouts/input-add-on/Cover';
import MediaObjectCover from './layouts/media-object/Cover';
import SameHeightColumnsCover from './layouts/same-height-columns/Cover';
import SidebarCover from './layouts/sidebar/Cover';
import StepperInputCover from './layouts/stepper-input/Cover';
import StickyFooterCover from './layouts/sticky-footer/Cover';
@@ -96,6 +97,12 @@ const Home = () => {
<h4 className="f4 mv0 pt3">Media object</h4>
</Link>
</div>
<div className="pa1 w-20">
<Link to="/same-height-columns" className="link flex flex-column items-center justify-center tc hover-bg-black-10 br2 pa3">
<SameHeightColumnsCover />
<h4 className="f4 mv0 pt3">Same height columns</h4>
</Link>
</div>
<div className="pa1 w-20">
<Link to="/stepper-input" className="link flex flex-column items-center justify-center tc hover-bg-black-10 br2 pa3">
<StepperInputCover />

View File

@@ -0,0 +1,36 @@
import React from 'react';
import Frame from '../../placeholders/Frame';
import Line from '../../placeholders/Line';
import Square from '../../placeholders/Square';
const Cover = () => {
return (
<Frame>
<div className="flex h-100 pa2">
<div className="mh1" style={{ flex: 1 }}>
<div className="w2 h2 mb1">
<Square />
</div>
<div className="w-100 mb1"><Line /></div>
<div className="w-100 mb1"><Line /></div>
<div className="w-80 mb1"><Line /></div>
<div className="w-60"><Line /></div>
</div>
<div className="mh1" style={{ flex: 1 }}>
<div className="w2 h2 mb1">
<Square />
</div>
<div className="w-100 mb1"><Line /></div>
<div className="w-80 mb1"><Line /></div>
<div className="w-60 mb2"><Line /></div>
<div className="w-100 mb1"><Line /></div>
<div className="w-60"><Line /></div>
</div>
</div>
</Frame>
);
};
export default Cover;

View File

@@ -0,0 +1,93 @@
import React from 'react';
import DetailsLayout from '../../DetailsLayout';
import Block from '../../placeholders/Block';
import BrowserFrame from '../../placeholders/BrowserFrame';
import Rectangle from '../../placeholders/Rectangle';
import SampleCode from '../../SampleCode';
import useDocumentTitle from '../../useDocumentTitle';
const Details = () => {
useDocumentTitle('CSS Layout ∙ Same height columns');
return (
<DetailsLayout>
<h1 className="f1 tc">Same height columns</h1>
<BrowserFrame
content={
<div className="h-100 flex flex-column items-center justify-center pa3">
<div className="flex h-100 w-100">
<div className="b--black-20 ba br2 mh2 flex flex-column" style={{ flex: 1 }}>
<Rectangle height={200} />
<div className="pa3" style={{ flex: 1 }}>
<Block numberOfBlocks={10} />
</div>
<div className="pa3 w4">
<Rectangle height={32} />
</div>
</div>
<div className="b--black-20 ba br2 mh2 flex flex-column" style={{ flex: 1 }}>
<Rectangle height={200} />
<div className="pa3" style={{ flex: 1 }}>
<div className="mb3"><Block numberOfBlocks={15} /></div>
<Block numberOfBlocks={5} />
</div>
<div className="pa3 w4">
<Rectangle height={32} />
</div>
</div>
<div className="b--black-20 ba br2 mh2 flex flex-column" style={{ flex: 1 }}>
<Rectangle height={200} />
<div className="pa3" style={{ flex: 1 }}>
<div className="mb3"><Block numberOfBlocks={5} /></div>
<Block numberOfBlocks={10} />
</div>
<div className="pa3 w4">
<Rectangle height={32} />
</div>
</div>
</div>
</div>
}
source={
<SampleCode
lang="html"
code={`
<div style="display: flex;">
<!-- Column -->
<div style="
flex: 1;
/* Space between columns */
margin: 0 8px;
/* Layout each column */
display: flex;
flex-direction: column;
">
<!-- Cover -->
...
<!-- Content -->
<div style="
/* Take available height */
flex: 1;
">
...
</div>
<!-- Button sticks to the bottom -->
...
</div>
<!-- Repeat with other columns -->
...
</div>
`}
/>
}
/>
</DetailsLayout>
);
};
export default Details;

View File

@@ -11,7 +11,7 @@ const Block = ({ numberOfBlocks }) => {
const s = random(1, 5);
return (
<div key={i} className={`mr2 mb2 w-${s * 10}`}>
<Rectangle height={8} />
<div className="w-100 bg-black-30 br-pill" style={{ height: '8px' }} />
</div>
);
})

View File

@@ -3,7 +3,7 @@ import React from 'react';
const Rectangle = ({ height = 8 }) => {
return (
<div
className="w-100 bg-black-30 br-pill"
className="w-100 bg-black-30"
style={{ height: `${height}px` }}
/>
);