可以将正方形拟合并居中div
在视口中并始终保持它的根据宽度和高度的长宽比?
要求 :
- only CSS
- 无论视口的方向(横向或纵向)如何,正方形的大小都必须适应视口的最小尺寸(宽度或高度)。
- 正方形必须在视口中水平和垂直居中
Example:
![Maintain aspect ratio according to width and height of viewport](https://i.stack.imgur.com/nKS55.png)
纵横比属性 (2022)
保持纵横比div
根据宽度和高度,您可以使用aspect-ratio
财产 (MDN 参考).
这允许您根据视口大小保持任何纵横比or到父元素的大小。
根据视口大小(宽度和高度)保持纵横比:
.ar-1-1 {
aspect-ratio: 1 / 1;
background: orange;
}
.ar-1-19 {
aspect-ratio: 16 / 9;
background: pink;
}
div {
max-width: 100vw;
max-height: 100vh;
margin-bottom: 5vh;
}
/** For the demo **/
body {
margin: 0;
}
<div class="ar-1-1">Aspect ratio 1:1</div>
<div class="ar-1-19">Aspect ratio 1:19</div>
根据父元素大小(宽度和高度)保持纵横比:
section {
width: 50%;
margin: 0 auto 5vh;
height:250px;
}
.ar-1-1 {
aspect-ratio: 1 / 1;
background: orange;
}
.ar-1-19 {
aspect-ratio: 16 / 9;
background: pink;
}
div {
max-width: 100%;
max-height: 100%;
}
/** For the demo **/
body {
margin: 0;
}
<section>
<div class="ar-1-1">Aspect ratio 1:1</div>
</section>
<section>
<div class="ar-1-19">Aspect ratio 1:19</div>
</section>
先前的答案与 vmin 单位
这仍然可以正常工作,但它不允许根据父元素大小保持纵横比。
根据宽度和高度保持 div 的纵横比在视口中,您可以使用一个 HTML 标签:
-
vmin尺寸单位:
vmin 1/100th of the minimum value between the height and the width of the viewport.
(source : MDN)
-
position: absolute
and margin: auto;
用于居中
DEMO(调整窗口高度和宽度的大小以查看其实际效果)
特征 :
- 保持其纵横比宽度和高度
- 在视口中水平和垂直保持居中
- 永远不会溢出视口
浏览器支持:
vmin
IE10+ 支持的单位(canIuse)对于 IE9 支持,您需要使用后备vm
单位而不是vmin
像这样 :
width: 100vm; /* <-- for IE9 */
height: 100vm; /* <-- for IE9 */
width: 100vmin;
height: 100vmin;
完整代码:
body {
margin:0; /* To prevent scrollbars */
}
div{
/* Aspect ratio */
height:100vm; width:100vm; /* IE9 fallback */
width: 100vmin;
height: 100vmin;
/*Centering */
position: absolute;
top:0;bottom:0;
left:0;right:0;
margin: auto;
/* styling */
background: gold;
}
<div>whatever content you wish</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)