See the result in JSFiddle , using pure Javascript to manipulate the CSS properties of the slide element .
Note that the padding-bottom: 75%;
property of the slide class has been removed , since the dimensions of the slide are controlled by script.
Below is the script that performs the task:
var slide = document.querySelector('.slide');
var aspectRatio = 720/540; // ou (4:3) proporção de aspecto do div .slide
function resize() {
// dimensões da janela disponíveis
var newHeight = document.documentElement.offsetHeight - 39; // 39 é o espaço ocupado pelo footer
var newWidth = 0.8 * (document.documentElement.offsetWidth); // largura disponível: 80% do documento
var newWidthToHeight = newWidth / newHeight;
// ajusta o div mantendo as proporções de aspecto definidas por aspectRatio
if (newWidthToHeight > aspectRatio) {
newWidth = newHeight * aspectRatio;
} else {
newHeight = newWidth / aspectRatio;
}
slide.style.width = newWidth + 'px';
slide.style.height = newHeight + 'px';
}
// efetua um redimensionamento inicial
resize();
// redimensiona o slide sempre que a janela for redimensionada
window.addEventListener('resize', resize, false);
// (!) utilize a função resize sempre que o div .slide sofrer alterações
Whenever an element needs to be scaled according to an aspect ratio, a similar strategy can be used.
I do not know if it is possible to achieve the same results through CSS Media Queries
or another strategy that uses pure CSS, but if you can, always use CSS.