Full width HTML5 video without preserving the aspect ratio

By · August 10, 2016 · 0 comments

I recently needed to show a video on a web page that needed to take the full width of the container (in this case, the full screen width) but keep a consistent height.

After some research I found a Stack Overflow post that lead me to a blog post, and a comment was left with what seems to be a good solution. This blog post has since been removed so I can't reference it or credit the author.

This works by changing a CSS transform property value when the video is loaded or the browser window resized.

Here's the JavaScript function (jQuery required), but see the source of the working example below for how to use.

function sizeVideo(video) {
var rawWidth = $(video).prop("videoWidth");
var rawHeight = $(video).prop("videoHeight");
var origAspect = rawWidth / rawHeight;
var containerWidth = $(video).width();
var containerHeight = $(video).height();
var targetAspect = containerWidth / containerHeight;
var multi = (targetAspect / origAspect);
$(video).css({
"transform": "scaleX(" + multi + ")",
"-ms-transform": "scaleX(" + multi + ")",
"-moz-transform": "scaleX(" + multi + ")",
"-webkit-transform": "scaleX(" + multi + ")",
"-o-transform": "scaleX(" + multi + ")"
});
}


The following working example uses the basic Bootstrap 3.x template and includes necessary CSS and an example of what events to call this function in.

Working example
Read more...
HTML/CSS

Get the latest posts delivered to your inbox.

Comments

There are no comments yet. Be the first to leave a comment!

Leave a Comment

All comments are moderated and rel="nofollow" is in use. Avatars are sourced from gravatar.com – a globally recognised avatar.

Type the numbers from the picture above

About me
John Avis ...mostly about web development and programming, with a little bit of anything else related to the Internet, computers and technology.

profile for John at Stack Overflow, Q&A for professional and enthusiast programmers
Subscribe

Get the latest posts delivered to your inbox. *