Eu tenho um vídeo do YouTube incorporado em nosso site e, quando reduzo a tela para tamanhos de tablet ou telefone, ele pára de diminuir em torno de 560 px de largura. Esse padrão é para vídeos do YouTube ou posso adicionar algo ao código para torná-lo menor?
youtube
responsive-design
embed
MattM
fonte
fonte
Respostas:
Você pode tornar os vídeos do YouTube responsivos com CSS. Coloque o iframe em uma div com a classe "videowrapper" e aplique os seguintes estilos:
A div .videowrapper deve estar dentro de um elemento responsivo. O preenchimento no .videowrapper é necessário para impedir o colapso do vídeo. Você pode precisar ajustar os números, dependendo do seu layout.
fonte
56.25%
e25px
pode ser lida em alistapart.com/article/creating-intrinsic-ratios-for-videopadding-bottom: 56.25%
: Para criar uma proporção 16: 9, precisamos dividir 9 por 16 (0,5625 ou 56,25%).padding-top: 25px
: Para evitar problemas com o modelo de caixa quebrada (IE5 ou IE6 no modo quirks), usamos a parte superior do preenchimento em vez da altura para criar espaço para o cromo.Se você estiver usando o Bootstrap, também poderá usar uma incorporação responsiva. Isso automatizará totalmente a resposta do (s) vídeo (s).
http://getbootstrap.com/components/#responsive-embed
Há algum código de exemplo abaixo.
fonte
col-sm-8 col-sm-offset-2
Usei o CSS na resposta aceita aqui para meus vídeos responsivos do YouTube - funcionou muito bem até o YouTube atualizar seu sistema no início de agosto de 2015. Os vídeos no YouTube têm as mesmas dimensões, mas por qualquer motivo o CSS na resposta aceita agora letterboxes todos os nossos vídeos. Faixas pretas na parte superior e inferior.
Andei com os tamanhos e resolvi me livrar do preenchimento superior e alterar o preenchimento inferior para
56.45%
. Parece ter uma boa aparência.fonte
Solução refinada de Javascript apenas para YouTube e Vimeo usando jQuery.
Simples de usar apenas com incorporação:
Ou com estrutura de estilo responsivo como o Bootstrap.
width="16" height="9"
)*=
seletor de substring jQuery em vez do início da string^=
Obrigado a @Dampas pelo ponto de partida. https://stackoverflow.com/a/33354009/1011746
fonte
Este é um tópico antigo, mas encontrei uma nova resposta em https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php
O problema com a solução anterior é que você precisa ter uma div especial em torno do código de vídeo, o que não é adequado para a maioria dos usos. Então, aqui está a solução JavaScript sem div especial.
fonte
A solução do @ magi182 é sólida, mas falta a capacidade de definir uma largura máxima. Eu acho que uma largura máxima de 640px é necessária porque, de outro modo, a miniatura do youtube parece pixelizada.
Minha solução com dois invólucros funciona como um encanto para mim:
Também ajustei o fundo do preenchimento no invólucro interno para 50%, porque nos 56% de @ magi182, uma barra preta na parte superior e inferior apareceu.
fonte
Com créditos para resposta anterior https://stackoverflow.com/a/36549068/7149454
Compatível com o Boostrap, ajuste a largura do seu contêiner (300px neste exemplo) e pronto:
fonte
Veja a lista completa aqui e o exemplo ao vivo aqui .
O resizeHeroVideo é chamado somente depois que o player do YouTube está totalmente carregado (o carregamento da página não funciona) e sempre que a janela do navegador é redimensionada. Quando executado, calcula a altura e a largura do iframe e atribui os valores apropriados mantendo a proporção correta. Isso funciona se a janela é redimensionada horizontalmente ou verticalmente.
fonte
Ok, parece com grandes soluções.
Por que não adicionar
width: 100%;
diretamente no seu iframe. ;)Portanto, seu código seria algo como
<iframe style="width: 100%;" ...></iframe>
Tente isso, vai funcionar como funcionou no meu caso.
Aproveitar! :)
fonte
Eu faço isso com css simples da seguinte maneira
CÓDIGO HTML
CÓDIGO CSS
fonte