1. HOME
  2. B'scre8
  3. 【解決】object-fitをIE対応させようとしたら動画が動かなくなった
B'scre8

【解決】object-fitをIE対応させようとしたら動画が動かなくなった

こんにちは!牧野です。

先日とある納品前のサイトをIEで動作確認していたところ、若干の表示崩れが…。
目立ったのが『object-fit』プロパティを使ってスタイリングした箇所でした。
使い方については師匠の記事で詳しくご紹介しています。
【便利CSSプロパティ|object-fit】background-sizeと同じ挙動をimgタグに適用できる「object-fit」

画像が縦や横に伸び、「はいはい object-fit 〜、あなたが悪いんじゃなくて IE が悪いのよ〜、ごめんね〜」と、object-fit を IE に対応させるスクリプト『fitie.js』をインポート。
詳しくはこちら。
IEでもobject-fitを使えるようにするスクリプト「fitie」 | TechMemo

object-fit さんたちはすごく素直で偉いので、画像たちは即座に元の縦横比に戻ってくれて、一件落着。
もう一度、一通り見ておこう、とサイトにアクセスしたところ…。

動画が再生されない!?
あれ…?さっきまでちゃ〜んと動いてましたよね…?

Chrome は通常通り再生可能。
やっぱIE無理!!と半狂乱気味になりながら、いろんなサイトを見ていろんな動画形式で保存して表示させたり、サイズダウンを繰り返したり…。
かなりの時間を要し、やっと解決することができました!

object-fitをIE対応させようとしたら動画が動かなくなった

今回の事象の原因はタイトルの通り。
object-fitをIE対応させようとして fitie.js を使ったら、動画の自動再生が効かなくなってしまったのです。

例えば、object-fit を使って動画を親要素でマスクしたい、と思った時に、こんな風に記述すると思います。

HTML

<div class="object-fit">
	<video src="example.mp4" muted autoplay loop></video>
</div>

CSS

div.object-fit {
	width: 800px;
	height: 480px;
	overflow: hidden;
}
div.object-fit video {
	object-fit: cover;
	width: 100%;
	height: 100%;
}

このように記述したものが、fitie.js を使うと、IE で表示されたときだけこんな風に変わります。

HTML

<div class="object-fit">
	<object>
		<video src="example.mp4" muted autoplay loop></video>
	</object>
</div>

<object></object> という要素が、動画を囲むような形になり、ソースが変わってしまいます。
どうやらこれが良くないみたいなんですよね…。

問題の箇所から object-fit プロパティを削除してみたところ、正常に自動再生されました。
そのあと IE のみ該当箇所の object-fit を削除し、追加の CSS を書いて完了。
その Tips がこちら。
object-fitをCSSのみでIEにも対応してみる

fitie.js を紹介するサイトも様々あり、動画のトリミングも問題なさそうだったのですが、どういう訳か私が対応した時は不具合が起きてしまいました…。
もし、object-fit でトリミングした動画が IE で再生されない、という事象が起こったら、object-fit プロパティを削除してみてください!

イレギュラーな事象だったかもしれませんが、誰かのお役に立てれば幸いです。

ホームページの挙動がおかしい!また、思い通りにいかない!といったお悩みも、お問い合わせください。