Sidebar
Every LayoutのSidebar
を参考にしたコンポーネントです。メインコンテンツとサイドコンテンツの2つのコンテンツを配置したいときに使います。メインコンテンツが指定した最小幅未満になると段落ちします。
処理中
ドラッグして幅を変更
ドラッグして高さを変更
import { StoryFn } from '@storybook/react'import React from 'react'import styled, { css } from 'styled-components'import { Heading, PageHeading } from '../../Heading'import { Aside, Section } from '../../SectioningContent'import { Sidebar } from './Sidebar'export default {title: 'Layouts(レイアウト)/Sidebar',component: Sidebar,parameters: {withTheming: true,},}export const All: StoryFn = () => (<div style={{ margin: '32px' }}><PageHeading>Sidebar</PageHeading><p>メインコンテンツとサイドコンテンツの2つのコンテンツをレイアウトするコンポーネントです。メインコンテンツは親要素の幅に対して可変となり、メインコンテンツが設定した最小幅以上の場合は2カラム、最小幅未満になると段落ちします。</p><Sidebar><StyledAside><Heading>サイドコンテンツ</Heading></StyledAside><StyledSection><Heading>メインコンテンツ</Heading><p>メインコンテンツの幅が可変で、メインコンテンツが<Code>contentsMinWidth</Code>未満になると段落ちします。<Code>contentsMinWidth</Code>の幅はデフォルトで50%です。</p></StyledSection></Sidebar><hr style={{ margin: '32px' }} /><Sidebar right contentsMinWidth="600px" gap={{ row: 1, column: 0 }}><StyledSection><Heading>メインコンテンツ</Heading><p>メインコンテンツの<Code>contentsMinWidth</Code>を600pxにしています。600px未満になると段落ちします。<Code>box-sizing</Code>の値に注意してください。</p><p>メインコンテンツとサイドコンテンツの間の余白は<Code>gap</Code>プロパティで設定できます。<Code>row</Code>と<Code>column</Code>で別々の値を設定できるので、横並びのときは余白なし、段落ちしたら余白をとる、ということが可能です。</p></StyledSection><StyledAside><Heading>サイドコンテンツ</Heading><p>サイドコンテンツを右に配置するには<Code>right</Code>プロパティを<Code>true</Code>にします。</p></StyledAside></Sidebar></div>)const StyledSection = styled(Section)(({ theme }) => {const { color, spacing } = themereturn css`box-sizing: border-box;padding: ${spacing.XXS} ${spacing.S};border: 3px solid ${color.MAIN};`})const StyledAside = styled(Aside)(({ theme }) => {const { color, spacing } = themereturn css`width: 300px;box-sizing: border-box;padding: ${spacing.XXS} ${spacing.S};border: 3px solid ${color.BORDER};background-color: ${color.BACKGROUND};`})const Code = styled.code(({ theme }) => {const { color, radius, spacing } = themereturn css`display: inline-block;padding: 0 ${spacing.X3S};border: 1px solid ${color.BORDER};border-radius: ${radius.s};background-color: ${color.BACKGROUND};`})
Props
right
false true
align
"center" "baseline" "end" "start" "flex-start" "flex-end" "stretch"
gap
0 0.25 0.5 0.75 1 1.25 1.5 2 2.5 3 3.5 4 8 -0.25 -0.5 -0.75 -1 -1.25 -1.5 -2 -2.5 -3 -3.5 -4 -8 "XXS" "XS" "S" "M" "L" "XL" "XXL" "X3S" "X3L" SeparateGap
各領域の間隔の指定(gap)
contentsMinWidth
string number string & {}
コンポーネントの min-width
値