CSS VW和VH - 保持比率

时间:2016-10-10 20:16:52

标签: javascript jquery html css

我有一个包含DIV的页面,它保持纵横比。我在div中有一些文本在字体大小上使用VW,当页面宽度改变时,它保持文本大小 - 这很棒。

但是当用户改变窗口高度时 - 我无法以相同的方式响应它 - 因为VW和VH不能一起播放。

是否有一些CSS或Javascript技巧可以让它发挥作用?如果用户在网站上更改浏览器大小,理想情况下即可实时运行?

这是问题所在:

https://jsfiddle.net/Lp8jynfr/1/

<style>
.page-wrapper{
    width: 100vw; 
    height: 68.60vw; /* height:width ratio = 9/16 = .5625  */
    max-height: 100vh;
    max-width: 145.7vh; /* 16/9 = 1.778 */
    margin: auto;
    position: absolute;
    top:0;bottom:0; /* vertical center */
    left:0;right:0; /* horizontal center */
    border: 5px solid #000;
}

.text{
    position: absolute;
    width:100%;
    top:36%;
    left:0;
    right:0;
    font-size: 5.6vw;
    color:#2d90db;
    text-align:center;
}
</style>

<div class="page-wrapper">
  <div class="text">
  This is some text I want resized
  </div>
</div>

2 个答案:

答案 0 :(得分:2)

看看这个新的小提琴:https://jsfiddle.net/davey182673/Lp8jynfr/4/它使用以下媒体查询来检测视口宽高比。

...
.text {
    font-size: 5.625vw;
}

/* at the point when the media query is applied */
/* 5.625vw = 10vh */
@media (min-aspect-ratio: 16/9) {
  .text {
    font-size: 10vh ;
  }
}

答案 1 :(得分:0)

我最终做了一些Jquery让它工作,它工作得很顺利

我向DIV添加了一个属性来告诉Jquery一个字体大小,然后根据DIV的高度对父容器的高度进行一些计算以使其按比例缩放

$(window).on("resize", function () {

    $('.resize').height(function(){
        $height = $(this).parent().parent().height();
        $datasize = $(this).attr("data-size");
        $fontsize = $height/100  * $datasize+"px"
        $(this).css("font-size",$fontsize);
    });

}).resize();

<div class='resize' data-size="9">Some text I want to resize</div>