I am having an issue with the resizing of a full screen video, within a bootstrap template.
Here is the live example? http://velnikolic.com/toad/index.php# below 1400px and in safari browsers the video ratio gets very distorted.
<div class="fullscreen-bg">
<video loop muted autoplay poster="thumbnail.png" class="fullscreen-bg__video">
<source src="video.mp4" type="video/mp4">
</video>
</div>
/*Video*/
.fullscreen-bg {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
z-index: -100;
height: 600px;
}
.fullscreen-bg__video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 600px;
}
#media (min-aspect-ratio: 16/9) {
.fullscreen-bg__video {
width: 100%;
height: auto;
}
}
I think you should consider few Website optimization techniques. compress your thumbnails and other media content in order to load faster. it took me more than a minute for me to load your website.
One more thing i noticed, that is while resizing my browser window, when i switched to mobile view. the video block dissappears. which you can correct by using changing the following code
In your style.css line 450 -
#media (max-width: 767px)
.fullscreen-bg__video {
display: inline-block;
vertical-align:baseline;
}
/*your this css settings are fine*/
#media (min-aspect-ratio: 16/9) {
.fullscreen-bg__video {
width: 100%;
height: auto;
}
}
And I think you just updated the website and the video quality has degraded and when re-sized video is being paused. your last configuration was fine just u had kept width:600% somewhere in css.
Related
I'm having trouble making the header video (on the homepage) and the header image on the other pages responsive to mobile phone when held in portrait. What I'm aiming for is similar to when you watch a YouTube video in portrait on your mobile phone. When holding your phone in portrait, the video takes up the top third of the screen. And when you hold the phone in landscape, the video takes up the whole screen. I would like to have the same effect for the header video (on the homepage) and the header image on the other pages of the site.
What I have attempted to do is use Media Queries so that when the screen reaches a max-width: 480px, the screen adjusts. But I keep running into different road-blocks. All of these road-blocks revolve around the pages not syncing up the way I want them to.
Here is where I am at with the code:
/* portrait mobile phone display */
#media only screen and (max-width: 480px), (orientation: portrait) {
/* header */
.header {
height: auto;
margin-top: auto;
}
/* header video */
.header-video {
position: absolute;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
bottom: 0;
right: 0;
min-width: 100%;
min-height: 100%;
width: 100%;
height: auto;
z-index: -1;
}
#media(min-aspect-ratio: 16/9) {
.header-video {
width: 100%;
height: auto;
}
}
#media(max-aspect-ratio: 16/9) {
.header-video {
width: auto;
height: 100%;
}
}
/* header image */
.header-image {
position: absolute;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
bottom: 0;
right: 0;
min-width: 100%;
min-height: 100%;
width: 100%;
height: auto;
z-index: -1;
}
#media(min-aspect-ratio: 16/9) {
.header-image {
width: 100%;
height: auto;
}
}
#media(max-aspect-ratio: 16/9) {
.header-image {
width: auto;
height: 100%;
}
}
}
Also, I am happy with how the site is displayed on my laptop and when viewed in landscape on my mobile, and I don't want to lose this.
I feel that I am on the right track, but I just don't have the syntax quite right at this stage. Just seeking a bit of guidance on this.
Thanks in advance.
<div class="mission-statement">
<video style="min-height:100%" playsinline autoplay muted loop poster="{{ url_for('static',filename='images/cclc-background-image.png') }}" id="bgvid">
<source src="{{ url_for('static',filename='videos/cclc-clip2.mov') }}" type="video/webm">
</video>
</div>
#mission-statement {
margin-top: 0px;
margin-bottom: auto;
height: 100vh;
width: 100vw;
}
video#bgvid
{width: 100%; height: 100%; position: relative;}
Currently I have a video in the background of this div. However currently, when the screen is really wide, there is space on the left and right and when it is really narrow, there is space on the top and bottom.
Instead, I would like the video to zoom such that it is always touching all 4 sides. If the browser is narrow, it will be zoomed such that the left and right parts of the video are cut off. If the browser is really wide, it will be zoomed such that the top and bottom are cut off.
How can I accomplish this?
If you are only concerned with real modern browsers that conform to W3C standards (i.e. Not IE), use object-fit:cover. If IE is a must, there's a polyfill, but other than that, it would take too much effort and time to force a "browser" like IE to conform when it's obvious design is to conflict with everything that's sane and logical.
View in Full page mode
Demo
* {
margin: 0;
padding: 0;
border: 0;
box-sizing: border-box;
}
html,
body {
height: 100%;
width: 100%;
}
#mission-statement {
overflow: hidden;
position: fixed;
height: 100%;
width: 100%;
top: 0;
left: 0;
}
video#bgvid {
height: 100vh;
width: 100vw;
object-fit: cover;
overflow: hidden;
position: absolute;
bottom: 0;
right: 0;
}
<div class="mission-statement">
<video style="min-height:100%" playsinline autoplay muted loop poster="https://i.pinimg.com/originals/28/6c/00/286c004a0cc4a49a5e6985b0e0812923.gif" id="bgvid">
<source src="http://media6000.dropshots.com/photos/1381926/20170326/005609.mp4" type="video/mp4">
</video>
</div>
Try this:
video#bgvid {
/* Make video to at least 100% wide and tall */
min-width: 100%;
min-height: 100%;
/* Setting width & height to auto prevents the browser from stretching or squishing the video */
width: auto;
height: auto;
/* Center the video */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
I am trying to hide the overflow of an HTML5 video that is wrapped in a container. However there are still scroll bars in firefox and chrome. When I try to recreate the issue in Jsfiddle, it works fine (no scrollbars), but the same code in firefox or chrome creates a scroll and does not hide any overflow.
Any idea how I can get the overflow of an HTML5 video to hide, and why it's not working? PS. I have tried changing the position of the container to various things and have tried breaking overflow: hidden down to overflow-x and overflow-y
<div class="video_container">
<video autoplay loop controls muted="true"class="video_window">
<source src="http://www.html5videoplayer.net/videos/toystory.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
CSS
.video_container{
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -100;
overflow:hidden
}
video{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#media (min-aspect-ratio: 16/9) {
video {
height: 300%;
top: -100%;
}
}
#media (max-aspect-ratio: 16/9) {
video{
width: 300%;
left: -100%;
}
}
This one should do the trick if you meant those annoying bars with scroll element on your DIVs. Set this to your wrapper element (e.g. .video_container)
&::-webkit-scrollbar {
display: none;
}
I am trying my hardest to create a webpage that when viewed on a mobile device automatically fixes to landscape orientation as opposed to portrait. It is a very simple page which at the moment just contains a video via iframe.
I have used code that I have found that was developed by somebody else. But I can not get it working at all. The code I am trying to implement is in this JSFiddle.
Here is a livelink of my attempt at getting this code to work. Could somebody please tell me why this code is not working?
Below is my code.
CSS
<style type="text/css">
body, html
{
margin: 0; padding: 0; height: 100%; overflow: hidden;
}
#content
{
position:absolute; left: 0; right: 0; bottom: 0; top: 0px; top: -15px;
min-height: 100%;
min-width: 100%
}
html, body {
height: 100%;
min-height: 100%;
}
#media screen and (min-aspect-ratio: 2/1) {
body {
transform: rotate(90deg);
transform-origin: 50% 50%;
}
}
HTML
<div id="content">
<iframe src="//fast.wistia.net/embed/iframe/qnca9gdlv5?videoFoam=true" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" allowfullscreen mozallowfullscreen webkitallowfullscreen oallowfullscreen msallowfullscreen width="640" height="388"></iframe><script src="//fast.wistia.net/assets/external/E-v1.js"> </script>
</div>
code updated
I am looking to make my video background like this:
http://www.teektak.com/
The issue I'm having is that my video is responsive, but it is fixed to the left. I can't figure out for the life of me how to make it so that it centers horizontally to the window when adjusted.
Here is a link to the test site to see what I am talking about: https://robotplaytime.paperplane.io/
HTML
<body>
<video poster="images/robotPlaytimeVideo.png" id="bgvid" autoplay loop muted>
<source src="images/robotPlaytimeVideo.mp4" type="video/mp4">
</video>
</body>
CSS
html,
body {
height: 100%;
width: 100%;
overflow: hidden;
}
video {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
min-width: 100%;
min-height: 100%;
z-index: -100;
background: url(../images/robotPlaytimeVideo.png) no-repeat;
background-size: cover;
}
Add these CSS rules to your body (the video's parent container):
text-align: center; /* ensures the image is always in the h-middle */
overflow: hidden; /* hide the cropped portion */
Add these CSS rules to your video:
display: inline-block;
position: relative; /* allows repositioning */
left: 100%; /* move the whole width of the image to the right */
margin-left: -200%; /* magic! */
Most of this was pulled directly from Bryce Hanscomb's answer to another similar question: How to center crop an image (<img>) in fluid width container
Here's a jsfiddle just in case:
http://jsfiddle.net/pLj0gcpu/
(Note that the markup and styles in this fiddle were pulled from your given URL)
To get the video to take the full size of the screen:
video {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100%;
width: 100%;
}
If you wanna center something horizontally responsively, then do
left: 50%;
transform: translateX(-50%);
Note, you will need to set a "position" as well