我正在做一个响应式设计,无论屏幕尺寸是多少,它都必须保持其元素的比例(高度与宽度),所以我不知道任何元素的像素大小,我只能以 % 工作.
我可以将宽度或高度设置为浏览器大小的百分比,但我不知道如何设置其他属性值。
仅使用 CSS,让 JS 计算值不是一种选择。
我正在做一个响应式设计,无论屏幕尺寸是多少,它都必须保持其元素的比例(高度与宽度),所以我不知道任何元素的像素大小,我只能以 % 工作.
我可以将宽度或高度设置为浏览器大小的百分比,但我不知道如何设置其他属性值。
仅使用 CSS,让 JS 计算值不是一种选择。
去年我遇到了这个问题,经过一些繁琐的研究后找到了一个模糊的解决方案。不幸的是,它涉及包装器 DIV。结构很简单——你有一个包含内容容器的父 DIV 和另一个设置比例的 DIV。您将margin-top
“比例”DIV 设置为父级宽度的百分比......示例:
#parent {
position: relative;
}
.proportions {
margin-top: 75%; /* makes parent height to 75% of it's width (4:3) */
}
.container { /* contents container with 100% width and height of #parent */
position: absolute;
top: 0px;
left: 0px;
bottom: 0px;
right: 0px;
}
首先,我知道 OP 已经明确提到他不是在寻找任何 Javascript 方法,但是我认为这对于仍然愿意使用 Javascript 的几个人来说可能很有用。
这是答案;要以相同的百分比设置两者的大小,您可以width
通过CSS将父元素的大小设置为,然后使用 Javascript 将父元素的大小设置为. 然后你会有一个方形元素作为父元素。height
width
width: 100%;
height
width
现在您可以将两者都应用于width: 10%; height: 10%;
子元素。然后,为了保持响应,您需要做的只是监听resizewindow
事件,然后将其height
再次应用于父级,所有子级都将更新。
像这样的东西会让它响应浏览器的大小:
$(window)
.resize(function() {
var w = $(document).width();
$('.parent').height(w);
})
.trigger( 'resize' );
使用 CSS calc() https://developer.mozilla.org/en-US/docs/Web/CSS/calc 它在现代浏览器中得到了很好的采用http://caniuse.com/calc作为后备使用 CSS 媒体查询并有最小宽度和高度可以依赖。
显然,您总是可以提前计算这两个百分比。
Div1 需要 60% 的高度,宽度需要是高度的 1/4。60% * .25 = 宽度:15%
div {
position: absolute;
border: 2px solid black
}
#div1 {
width: 40%;
height: calc(40% * 1.2);
}
#div2 {
width: calc(90% / 4);
height: 90%;
}