如上图所示,屏幕正中间有个元素A,随着屏幕宽度的增长,始终须要知足如下条件:css
用html和css实现。html
这道题主要考察css的居中和宽高等比例。其中,居中是css的经典知识点,有不少种实现,我喜欢用transform
属性来控制。咱们重点来看考察的第二个知识点:css3
在宽度不定的状况下,保持宽高的比例,这个使用场景比较少。不用js,纯CSS应该怎么实现呢?spa
直觉是想到用css3的calc来解决,行不通。code
若是A元素的高度和宽度都以某一个值做为参照系,那么理论上A元素的height = n 乘以 width(n可自定义)。根据css规范,padding的值为百分比时,是相对于父元素的宽度而言。可见,父元素的宽度就是一个完美的参照系!给A元素包一个父元素,A元素的width为100%,height为0,padding-top为50%。这就实现了A元素的宽高等比例啦~orm
Talk is cheap. Show me the code. 效果预览htm
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <div class="father"> <div class="son"><span>A</span></div> </div> </body> </html>
.father{ overflow:hidden; position: absolute; left:20px; right:20px; top:50%; transform: translateY(-50%); } .son{ height:0; width:100%; padding-top:50%; background:pink; } span{ position:absolute; top:50%; left:50%; transform: translate(-50%,-50%); font-size:10px; }