我想知道是否可以使用flexbox项目的高度设置font-size。我有一个使用视口单元设置的flexbox容器,项目的高度由flex-grow属性决定。我正在寻找的是将font-size设置为这些项的高度,并在视口更改时保留这些关系。
我有一个基本的想法,但有点工作,但我不确定如何只隔离字母(基线到上限)并将其缩放到项目容器。
https://codepen.io/NewbCake/pen/JvwNJq (垂直调整窗口大小以设置字体大小)
我愿意接受有关如何处理此问题或任何可能遇到的陷阱的建议。
HTML
<section class="center">
<div class="container">
<div class="item1">H</div>
<div class="item2">H</div>
</div>
</section>
CSS
section {
display:flex;
flex-direction:row;
height:95vh;
width:100%;
border:1px solid red;
}
.container {
display:flex;
flex-direction:column;
height:80vh;
width:80vh;
border:1px solid blue;
}
.container_wide {
display:flex;
flex-direction:column;
height:80vh;
width:80vh;
border:1px solid blue;
}
.center {
justify-content:center;
align-items:center;
}
.item1 {
flex-grow:1;
flex-shrink:0;
flex-basis:auto;
border:1px solid green;
line-height:.75;
}
.item2 {
flex-grow:3;
flex-shrink:0;
flex-basis:auto;
border:1px solid green;
line-height:.75;
}
JS
var resizeTimer;
$(window).on('resize', function(e) {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(function() {
// Run code here, resizing has "stopped"
$(".item1").css("font-size", $(".item1").css("height"));
$(".item2").css("font-size", $(".item2").css("height"));
}, 250);
});
任何帮助表示赞赏!
答案 0 :(得分:1)
如果您拥有const responseJson = await Promise.all( _
.chain( response.json() )
.sortBy( 'number' )
.map( json => addEnabledProperty( json ) )
.value()
)
的控制权,则可以根据容器的高度进行一些计算以获得flex-grow
。因此,如果您有font-size
作为flex-grow,则意味着第二个将是第一个的两倍,因此我们可以将1 + 2
高度定义为H
,以便H+2*H = height of container = 80vh
因此,第一项将有H = calc(80vh / 3)
,第二项将有font-size:H
。
你也可以考虑使用CSS变量来更好地处理这个问题。
font-size:2*H
body {
margin:0;
padding:0;
font-family: sans-serif;
}
header {
display:flex;
height:5vh;
}
section {
display:flex;
flex-direction:row;
height:95vh;
width:100%;
border:1px solid red;
}
.container {
display:flex;
flex-direction:column;
--h:80vh;
height:var(--h);
width:var(--h);
border:1px solid blue;
}
.gauge {
display:flex;
flex-direction:column;
height:80vh;
width:10vh;
border:1px solid blue;
}
.center {
justify-content:center;
align-items:center;
}
.item1 {
flex-grow:1;
font-size:calc((var(--h) / 3));
flex-shrink:0;
flex-basis:auto;
border:1px solid green;
line-height:1;
}
.item2 {
font-size:calc((var(--h) / 3) * 2);
flex-grow:2;
flex-shrink:0;
flex-basis:auto;
border:1px solid green;
line-height:1;
}