私はvimeoビデオの上部と下部にある黒い帯を隠す方法を見つけようとしています。それらをCSSでカバーする方法があるのではないかと思いました。
私は基本的に、この人が下のリンクの画像で達成したいことを達成したかったのですが、それを応答性を保ちながら埋め込みビデオで達成したいのです。
どうもありがとう。
HTML
<section class="d5-d13 c5-c13 b5-b13 a5-a13 video">
<div class='embed-container'>
<iframe src='http://player.vimeo.com/video/69252713' frameborder='0'
webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
</div>
</section>
CSS
.embed-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
max-width: 100%;
height: auto;
}
.embed-container iframe, .embed-container object, .embed-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
あなたのユースケースでは、cssだけを使用できるとは思いません。
通常、ビデオiframeの周囲にレターボックスまたはピラーボックスを追加して、プレゼンテーション用に高さと幅を特定の比率に保ちます。ただし、その場合、黒い境界線はcssの背景と同じくらい単純になります。
応答性を維持するには、高さをゼロのようなものに設定し(あなたが持っているように)、パディングハックを使用してビデオのアスペクト比を維持します(この場合は16:9ビデオ; 9/16 * 100 = 56.25% )。その数値は、padding-topまたはpaddingbottomのいずれかの値になります。パディングはパーセントで測定されるため、これにより、ビデオのサイズに関係なく正しい比率を維持しながら、幅に応じてパディングがスケーリングされます。
あなたの場合、このビデオには実際のビデオにレターボックスがあり、iframe内のビデオタグのソースから見ることができます。なぜあなたがpadding-top:30
を持っているのかわかりませんが、それは黒い境界線をさらに大きくします。レターボックスが組み込まれているため、状況をさらにハックする必要があります。私は ここにjsfiddleデモ をまとめました。これにはいくつかのコメントが含まれていますが、JSを使用してあなたが探しているものを実現します。
コードの概念は次のとおりです。
個人的には、サイズ変更で高価なDOM操作を行うのは好きではありません。これが、cssだけを要求した理由かもしれませんが、FWIWにはデモがあります。
理想的には、レターボックスなしでビデオを再録画するのが最善のオプションであるため、必要なのはパディングハックだけです。
CSSですべてのエッジから1pxを切り取ります。
.embed-container {
position: relative;
padding-bottom: 43%; /* Aspect ratio of the video */
height: 0;
overflow: hidden;
max-width: 100%;
}
.embed-container iframe,
.embed-container object,
.embed-container embed {
position: absolute;
top: -1px;
left: -1px;
width: calc(100% + 2px);
height: calc(100% + 2px);
}
HTML:
<div class="js-video [vimeo, widescreen]">
[video html goes here]
</div>
CSS:
.js-video {
height: 0;
padding-top: 25px;
padding-bottom: 67.5%;
margin-bottom: 10px;
position: relative;
overflow: hidden;
}
.js-video.widescreen {
padding-bottom: 57.25%;
}
.js-video.vimeo {
padding-top: 0;
}
.js-video embed, .js-video iframe, .js-video object, .js-video video {
top: 0;
left: 0;
width: 100%;
height: 100%;
position: absolute;
}
あなたはより多くの詳細を見つけるでしょう ここ
このgithub投稿の一部を使用して、この正確な問題の解決策を作成しました。黒いバーの削除。 vimeoの背景色は変更されませんが、ビューポートから非表示にするだけです。
https://github.com/davatron5000/FitVids.js/issues/1
#myid {
height: 112.6%;
}
ただし、CSS "vw"(ビューポート幅)を使用して幅を追加すると、黒い背景を表示せずに、どのモニター/デバイスでも一貫したサイズになります。幅が短くなったときにiframeがdivの中央に留まるように、マージンを追加しました。
#myvimeoiframeID {
height: 112%;
width: 80vw;
margin: 0 15% auto;
}
ビデオを保持する親コンテナに、次を追加しました。
.embed-container {
padding-bottom: 40.25%;
}
これにより、ビデオがdivに表示されるようになります。このセクションを削除すると、ビデオは消えますが、ここで再生できます。したがって、パディングボトムにはかなり素晴らしいものがあります:40.25%;
Vimeoに埋め込まれたiframeコードをheight = "100%"に変更しました。
したがって、iframeに高さを追加することも、cssで追加することもできます。 cssで高さを制御するために、iframeのベースの高さを100%に保ち、そのベースの高さの調整はcssを介して行います。
私はこれと同じ問題を抱えていましたが、問題は簡単に解決できました。私の動画は、oEmbedを使用してWordpressページと投稿に埋め込まれました。Wordpressは、埋め込まれた動画を<p>
タグ、<p>
でラップしていました。タグにマージンがあり、動画の上下に黒い境界線が表示されていました。次のjQueryを使用して、埋め込み動画から<p>
タグを削除しました。
$('.embed-container iframe').unwrap();
。embed-containerのpadding-topを削除することでこの問題を解決しました
パディングボトム:56.25%;画面の比率を16:9に設定し、上部と下部の黒いバーを削除します。ここに上部をパディングすると、後ろに黒いバー領域が追加されます。
簡単に言えば frameborder="0"
属性の1つとして。