根据viewport的size自动调整fontsize大小

现在的网站必须要考虑mobile上访问的友好性,bootstrap作为mobile first的前端框架得到很多应用,它通过默认就使用.col-xs-xx定义的width,同时加上@media(min-width: 768px)等定义的.col-sm-xx来实现当viewport size大于等于sm,md,lg,xl的值时,应该怎样来layout. 如果你不希望在mobile和pc上展示的Layout不一样的话,在使用bootstrap的前提下,你可以使用的一个方法就是全部使用.col-xs-xx来定义layout,这样无论是大屏幕的pc,还是小屏幕的ipad,iphone,同样的网站至少layout都一样了。

但是这时你可能发现还不是你想要的,因为由于字体大小在mobile下太大,所以导致布局非常难看,能不能在相同比例layout的情况下,对应字体,lign-height等也随着font-size按比例下调呢?

<div class="col-xs-1">.col-xs-1</div>

使用css3中定义的vw,vh,vmin的概念可以帮到你。

1vw = 1% of viewport width
1vh = 1% of viewport height
1vmin = 1vw or 1vh, whichever is smaller
1vmax = 1vw or 1vh, whichever is larger

h1 {
  font-size: 5.9vw;
}
h2 {
  font-size: 3.0vh;
}
p {
  font-size: 2vmin;
}

 https://css-tricks.com/viewport-sized-typography/

可以通过CSS的calc()函数和vw单位实现文字大小根据容器宽度自适应的效果,具体实现如下: 1. 给容器设置一个固定的高度和宽度,并设置overflow:hidden,保证文字不会溢出容器。 ```css .container { height: 300px; width: 100%; overflow: hidden; } ``` 2. 在容器内部,使用一个文本框来显示要自适应字体大小的文字,并设置字体大小为一个较大的值,如80px。 ```html <div class="container"> <textarea class="text" v-model="message"></textarea> </div> ``` ```css .text { font-size: 80px; border: none; background-color: transparent; resize: none; width: 100%; height: 100%; } ``` 3. 使用calc()函数和vw单位来计算字体大小,其中calc()函数可以进行数学运算,vw单位是相对于视口宽度的单位。 ```css .text { font-size: calc(80px + (100vw - 600px) * 0.1); } ``` 上面的代码表示,当视口宽度为600px时,字体大小为80px,当视口宽度增加到1000px时,字体大小自动增加10%。 4. 在Vue中,可以使用计算属性来动态计算文本框的样式。 ```html <div class="container"> <textarea class="text" v-model="message" :style="textStyle"></textarea> </div> ``` ```javascript export default { data() { return { message: '' } }, computed: { textStyle() { const baseFontSize = 80; const viewportWidth = window.innerWidth; const fontSize = baseFontSize + (viewportWidth - 600) * 0.1; return { fontSize: `${fontSize}px` } } } } ``` 上面的代码中,textStyle是一个计算属性,根据视口宽度动态计算字体大小,然后返回一个包含fontSize属性的对象,作为文本框的样式。 这样,就可以实现根据文字数量自动计算字体大小的效果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值