Hero
ヒーローコンテンツの作成例を紹介します。
Usage
DEMO 01
ロレムイプサムの座り雨、トマ好き学習だったエリット、しかし時と活力はそのような木々と楽しみ。ブラインド行うにはいくつかの重要な事柄が流れます。長年にわたり、私は学区と長寿であれば、そのような Liberroy, Foo の取り組み、我らのうち、Mulla Sunt の利点を提案したのなら。
<Stack isFullwide minH='50vh' bgc='base-2'> <Container size='m' hasGutter isFlow my='auto'> <Text fw='bold' fz='xl'>DEMO 01</Text> <Dummy length='l' lang='ja'/> </Container></Stack>

DEMO 02
Lorem ipsum dolor sit, amet consectetur adipisicing elit, sed do eiusmod tempor. Non facere laudantium ex eos doloribus aut dolore nisi provident libero, eum nulla sunt, porro sed dicta. Impedit ullam eveniet obcaecati minima.
<Stack isFullwide minH='70vh' g='30' c='white' pos='r'> <Frame isLayer> <Media isLayer src='/img/img-1.jpg' alt='' width='960' height='640'/> <Layer blur='4px' bgc='black:50%' /> </Frame> <Flex jc='sb' p='30' z='0' g='30'> <Box>Header</Box> <Flex g='30'> <div>XXX</div> <div>XXX</div> </Flex> </Flex> <Container size='m' hasGutter isFlow my='auto'> <Text fw='bold' fz='xl'>DEMO 02</Text> <Dummy length='l' /> </Container> <Center p='20' z='0'>Footer</Center></Stack>
is--layer
, ShapeDivider
との組み合わせ
以下の例では、 オプトインコンポーネントの<ShapeDivider>
も使用しています。

ShapDivider & Layers
Lorem ipsum dolor sit, amet consectetur adipisicing elit, sed do eiusmod tempor. Non facere laudantium ex eos doloribus aut dolore nisi provident libero, eum nulla sunt, porro sed dicta. Impedit ullam eveniet obcaecati minima.
<Stack isFullwide hasGutter pos='r' minH='50vh' c='white' g='20'> <ShapeDivider viewBox='0 0 10 10' c='base' level='6' scale='-Y' offsetY='-0.5px' z='1'> <path d="M10,10V0L0,9.5V10L10,10z"/> </ShapeDivider> <Frame isLayer> <Media isLayer src='/img/img-2.jpg' alt='' width='960' height='640'/> <Layer blur='4px' bgc='black:50%' /> </Frame> <Container size='m' isFlow py='40' my='auto' z='0'> <Text fw='bold' fz='xl'>ShapDivider & Layers</Text> <Dummy length='l' /> </Container> <Box z='0' ta='c'>Footer</Box> <ShapeDivider viewBox='0 0 10 10' c='base' level='6' offsetY='0.5px' z='1'> <path d="M10,10V0L0,9.5V10L10,10z"/> </ShapeDivider></Stack>

ShapDivider & Layers
Lorem ipsum dolor sit, amet consectetur adipisicing elit, sed do eiusmod tempor. Non facere laudantium ex eos doloribus aut dolore nisi provident libero, eum nulla sunt, porro sed dicta. Impedit ullam eveniet obcaecati minima.

ShapDivider & Layers
Lorem ipsum dolor sit, amet consectetur adipisicing elit, sed do eiusmod tempor. Non facere laudantium ex eos doloribus aut dolore nisi provident libero, eum nulla sunt, porro sed dicta. Impedit ullam eveniet obcaecati minima.
<Box isFullwide style={{ '--slopeH': 'clamp(2.5rem, 1.25rem + 5vw, 5rem)' }}> <Stack isFullwide hasGutter pos='r' minH='50vh' c='white' g='20'> <ShapeDivider viewBox='0 0 10 10' h='var(--slopeH)' c='base' scale='-Y' offsetY='-0.5px' z='1'> <path d='M10,10V0L0,9.5V10L10,10z'></path> </ShapeDivider> <Frame isLayer bgc='black'> <Media isLayer src='/img/img-2.jpg' alt='' width='960' height='640' op='0.5' blur='6px'/> </Frame> <Container size='m' isFlow py='40' pr={['0', '25%', '33%']} my='auto' z='0'> <Text fw='bold' fz='xl'>ShapDivider & Layers</Text> <Dummy length='l' /> </Container> <Spacer h='var(--slopeH)' /> </Stack> <Stack isFullwide hasGutter pos='r' minH='50vh' c='white' mbs='calc(0px - var(--slopeH))'> <Frame isLayer bgc='black' style={{ clipPath: 'polygon(0 var(--slopeH), 0 100%, 100% 100%, 100% 0)', }} > <Media isLayer src='/img/img-3.jpg' alt='' width='960' height='640' op='0.5' blur='6px'/> </Frame> <Spacer h='var(--slopeH)' /> <Container size='m' isFlow py='40' pl={['0', '25%', '33%']} my='auto' z='0'> <Text fw='bold' fz='xl'>ShapDivider & Layers</Text> <Dummy length='l' /> </Container> <ShapeDivider viewBox='0 0 10 10' h='var(--slopeH)' c='base' scale='-X' offsetY='0.5px' z='1'> <path d='M10,10V0L0,9.5V10L10,10z'></path> </ShapeDivider> </Stack></Box>
子要素のminH
に%
を使う方法
最低限の高さを確保しつつ、ウインドウが狭い時にコンテンツに合わせて高さを伸ばしたいケースについて。
Heroコンテンツの高さを min-height
や aspect-ratio
で指定する場合、子要素の height
や min-height
に%を指定しても無効になってしまいます。
minH:50%が効かない
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.
<Stack isFullwide minH='400px' bgc='base-2'> <Box minH='50%' my='auto' bgc='base' p='20' px='40' ac='c'> <Text fw='bold'>minH:50%が効かない</Text> <Dummy length='s' /> </Box></Stack>
このため、少し工夫が必要です。
OK
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.
<Stack isFullwide minH='400px' bgc='base-2'> <FlexItem d='grid' fxg='1' ai='c' px='40'> <Center minH='50%' bgc='base' p='30' bxsh='1'> <Text fw='bold'>OK</Text> <Dummy length='s' /> </Center> </FlexItem></Stack>
- 親要素が
Stack
で構成されているので、子要素であるコンテンツのflex-grow
を1
にして高さを親に合わせて伸ばします。 - 子要素を
grid
にすることで、さらにその子要素でheight
やmin-height
に%
を使えるようにします。
(この時、その子要素を中央寄せ等にしないとstretch
が適用されて高さが伸びることに注意してください。)

min-height 50%
Lorem ipsum dolor sit, amet consectetur adipisicing elit, sed do eiusmod tempor. Non facere laudantium ex eos doloribus aut dolore nisi provident libero, eum nulla sunt, porro sed dicta. Impedit ullam eveniet obcaecati minima.
<Stack isFullwide pos='r' minH='50vh'> <Frame isLayer> <Media src='/img/img-3.jpg' alt='' width='960' height='640'/> </Frame> <Layer bgc='black' op='0.2' /> <FlexItem layout={Grid} fxg='1' ai='c' hasGutter> <Center minH='50%' p='30' c='white' bgc='black:70%' bdrs='2' g='20'> <Text fw='bold' fz='xl'>min-height 50%</Text> <Dummy length='l' /> </Center> </FlexItem></Stack>