2013-05-22 16 views
5

Próbuję utworzyć stronę internetową, na której tło jest filmem. Od jakiegoś czasu szukam sposobu odtworzenia tła strony głównej w domenie Spotify's, ale wydaje się, że nie działa.Wideo w tle, które zmienia rozmiar, aby zawsze pasowało do przeglądarki

Mój problem polega na tym, że mogę albo uzyskać wysokość do skali za pomocą przeglądarki, albo szerokość, ale nie obie. W przeciwieństwie do wideo na stronie internetowej Spotify, nie skaluje się tak, aby pasował do przeglądarki przez cały czas. Próbowałem wielu rzeczy, a większość z nich nie pamiętam. Nie mam nic przeciwko używaniu JQuery do osiągnięcia tego efektu.

Mój obecny kod jest:

<!DOCTYPE html> 
<html> 
<head> 
<title>VideoBG</title> 
<style type="text/css"> 


#videohome { 
    position:absolute; 
    height: 100%; 
    width: 100%; 

    top:0; 
    left:0; 
    right:0; 
    bottom:0; 
} 

</style> 
</head> 
<body> 


     <video id="videohome" preload="auto" autoplay="true" loop="loop" muted="" volume="0"> 
      <source src="./homepage.mp4" type="video/mp4" /> 
     </video> 


</body> 
</html> 
+3

Spójrz na wtyczkę BigVideo.js dla jQuery: http://dfcb.github.io/BigVideo.js/ – reinder

+0

Nie widzę żadnych filmów na stronie głównej Spotify, tylko niektóre rodzaje przewijania paralaksy. – LeBen

+0

@LeBen: dzieje się tak tylko wtedy, gdy odwiedzasz ich witrynę po raz pierwszy. Odnosi się do tej konkretnej strony: https://www.spotify.com/en/video-splash – reinder

Odpowiedz

7

Musisz mieć div kontenera, który pasuje do ekranu, a następnie dodać klasę do filmu, który będzie zmienić jego rozmiar do szerokości lub wysokości.

CSS:

.container { 
width: 100%; 
height: 100%; 
position: absolute; 
padding:0; 
margin:0; 
left: 0px; 
top: 0px; 
z-index: -1000; 
overflow:hidden; 
} 

.videoPlayer { 
    min-height: 100%; 
    //min-width:100%; - if fit to width 
position:absolute; 
bottom:0; 
left:0; 
} 

HTML:

<div class="container"><video class="videoPlayer">Code goes here</video></div> 
1

Oldie ale Goldie. Sam się z tym zmagałem, ale przekonałem się, że zapytania o media o proporcjach działają przyjemnie.

Jeśli zapytania o media nie są obsługiwane, wideo nadal będzie obejmowało stronę, ale nie będzie prawidłowo skalowane.

Jeśli translateX, translateY lub @supports nie jest obsługiwane, wideo nie zostanie wyśrodkowane.

HTML:

<div class="cover"> 

    <video autoplay loop mute poster="path/to/image.jpg"> 
     <source src="path/to/video.mp4" type="video/mp4" /> 
     <source src="path/to/video.webm" type="video/webm" /> 
     <source src="path/to/video.ogv" type="video/ogg" /> 
     <img src="path/to/image.jpg" alt="" /> 
    </video> 

</div> 

CSS:

.cover { 
    bottom: 0; 
    left: 0; 
    overflow: hidden; 
    position: absolute; 
    right: 0; 
    top: 0; 
    z-index: 1; 
} 

.cover img, .cover video { 
    display: block; 
    height: auto; 
    left: auto; 
    max-width: none; 
    min-height: 100%; 
    min-width: 100%; 
    right: auto; 
    position: absolute; 
    top: 0; 
    width: auto; 
    z-index: 1; 
} 

@supports (transform: translateX(-50%)) { 

    .cover img, .cover video { 
     left: 50%; 
     top: 50%; 
     transform: translateX(-50%) translateY(-50%); 
    } 

} 

@media screen and (min-aspect-ratio: 16/9){/* Make this the same aspect ratio as your video */ 

    .cover img, .cover video { 
     max-width: 100vw; 
     min-width: 100vw; 
     width: 100vw; 
    } 

} 

@media screen and (max-aspect-ratio: 16/9){/* Make this the same aspect ratio as your video */ 

    .cover img, .cover video { 
     height: 100vh; 
     max-height: 100vh; 
     min-height: 100vh; 
    } 

} 
0

Znalazłem to:

http://wesbos.com/css-object-fit/

Używaj obiektowe-dopasowanie: obudowę; na twoim tagu wideo

To zadziałało dla mnie.

+0

Należy zauważyć, że od czasu pisania tego tekstu Edge nadal nie obsługuje w pełni dopasowania obiektu. Obsługuje tylko używanie go na tagach . https://caniuse.com/#search=objectfit –

+0

Zgodnie z powyższym komentarzem object-fit działa we wszystkich przeglądarkach wideo, z wyjątkiem IE i Edge.Możesz głosować w górę na forum programistów Microsoft tutaj: https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/32011258-object-fits-and-object-position-for- all-media-elem? category_id = 86947 Użyj w międzyczasie polifill JS, ale jeśli uzyska więcej głosów, zostanie zaimplementowane. –