我想保持.center
div的宽度相对于其高度4:3
宽高比(每3个高度4个宽度)和100%
的高度;然后将div水平居中对齐。
您可以通过Flash应用程序查看here。
这就是我所拥有的:
HTML:
<div id="stuff" class="center" width="800" height="600">
<canvas id="someHTML5">You cant play HTML5</canvas>
</div>
CSS:
.center {
position: absolute;
left: 50%;
width: 800px; /* how do I make this relative; i want: pseudo code: width: height/3*4; */
height: 100%;
margin-left: -400px; /* -width/2 for horizontal alignment */
z-index: 100;
}
我还有一个JavaScript循环来集成JavaScript端更新。
答案 0 :(得分:5)
由于框的width
应相对于其height
进行更改,因此您可以使用vh
viewport relative length 作为width
财产。
来自Spec:
视口百分比长度是相对于的大小 初始包含块。初始时的
height
或width
包含块被更改,它们会相应缩放。vh单位
等于初始包含块的1%
的{{1}}。
你走了:
height
<强> WORKING DEMO 强>
值得注意的是.center {
position: absolute;
left: 50%;
width: 133.33vh; /* 100 * 4/3 ratio */
height: 100%;
margin-left: -66.66vh; /* width / 2 */
z-index: 100;
}
,vh
视口百分比are supported in IE9+。
答案 1 :(得分:0)
我制作了一个像视频一样调整大小的脚本。
window.onresize = function() {
resize();
};
function resize() {
var wrapper = document.querySelector(".wrapper");
var wrapperwidth = 1920;
var wrapperheight = 1080;
var vw = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
var vh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
var ratio = Math.min(vw / wrapperwidth, vh / wrapperheight);
wrapper.style.transform = `translate(-50%, -50%) scale(${ratio})`;
}
resize();
.wrapper {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 1919px;
height: 1079px;
overflow: hidden;
background-color: red;
}
/* demo text (smiley face) */
.wrapper::after {
content: ":)";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 200px;
font-family: "Roboto", 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
<div class="wrapper"></div>