MediaLayer
メディア(画像・動画)を親要素サイズに合わせて配置するための、<Layer>
の拡張モジュール。
対応するHTML構造
<div class="l--layer l--layer--media">...</div>
Props
media
: メディア用のHTMLタグ、またはコンポーネントを指定できます。デフォルトは'img'
です。- 以下のメディア用Attrsは自動でメディア側へ振り分けられます。
src
,width
,height
,alt
,loading
,decoding
loop
,muted
,controls
,autoplay
,playsinline
,poster
hover
objectFit
objectPosition
mediaProps
:src
等の自動で振り分けされる属性以外もmediaに対して何か指定したい場合は、mediaProps
にオブジェクトで指定してください。
ただし、children
でメディアを渡す場合、これらは全て無視されます。
Import
import { MediaLayer } from '@loos/lism-core';
DEMO
MediaLayer
に直接メディアデータを渡す場合、自動でobject-fitにcover
が指定されます。
MediaLayer
に画像用のpropsを指定する
リサイズ可能エリアです ↑
<Frame h="200px">
<MediaLayer src="/img/demo-img.jpeg" alt="" width='960' height='640' />
</Frame>
children
でメディアを渡す
children
でメディアを渡す場合は、object-fitの自動付与はされません。
例
リサイズ可能エリアです ↑
<Frame aspect="cinema" bgc="#fff" shadow='2'>
<MediaLayer p={10}>
<Media src="/img/demo-img.jpeg" alt="" width={960} height={640} objectFit="cover" />
</MediaLayer>
</Frame>
next/image
を使う例
リサイズ可能エリアです ↑
<Frame aspect="cinema">
<MediaLayer media={Image} src="/img/demo-img.jpeg" alt="" width='960' height='640' />
</Frame>
画像の上にコンテンツを重ねる例
MediaLayerをz="-1"
でコンテンツの下へ
Lorem ipsum dolor sit amet.
リサイズ可能エリアです ↑
<Frame aspect="cinema">
<MediaLayer z="-1" src="/img/demo-img.jpeg" alt="" width='960' height='640' />
<FilterLayer z="-1" bgc="black:.4" />
<Center size="cover" c="white" gap="20" p="box">
<p>...</p>
</Center>
</Frame>
コンテンツもLayerで囲む
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.
リサイズ可能エリアです ↑
<Frame aspect="cinema">
<MediaLayer src="/img/demo-img.jpeg" alt="" width='960' height='640' />
<FilterLayer bgc="black:.4" />
<Layer inset="0">
<Center size="cover" c="white" gap="20" p="box">
<DammyText length="l" />
</Center>
</Layer>
</Frame>