o2team.github.io icon indicating copy to clipboard operation
o2team.github.io copied to clipboard

利用视口单位实现适配布局

Open Tingglelaoo opened this issue 7 years ago • 31 comments

https://aotu.io/notes/2017/04/28/2017-4-28-CSS-viewport-units/index.html

视口单位的出现又为移动端Web开发提供了一种新的适配页面的布局方式

Tingglelaoo avatar Aug 11 '17 01:08 Tingglelaoo

mark

vczhan avatar Aug 15 '17 02:08 vczhan

m

JoeyKo avatar Aug 31 '17 10:08 JoeyKo

很赞的思路!

ifyour avatar Sep 05 '17 15:09 ifyour

👍,只是字体好虚,看得眼睛不舒服。

lkangd avatar Sep 23 '17 15:09 lkangd

px/baseSize x 100vw

qq757622960 avatar Oct 12 '17 08:10 qq757622960

  1. $vm_fontsize: 75; // iPhone 6尺寸的根元素大小基准值 @function rem($px) { @return ($px / $vm_fontsize ) * 1rem; }

这里有个问题,假如设计稿是基于 750px 设计的。 @return ($px / $vm_fontsize / 2 ) * 1rem; 应该在 '/ 2' 吧。

  1. $vm_base: 375; @function vw($px) { @return ($px / 375) * 100vw; }

方法定义是 vw, 为什么下面的都是 'vw()' ?

qq757622960 avatar Oct 16 '17 02:10 qq757622960

2 .$vm_base: 375; @function vw($px) { @return ($px / 375) * 100vw; } 方法定义是 vw, 为什么下面的都是 'vm()' ?

qq757622960 avatar Oct 16 '17 02:10 qq757622960

@qq757622960 2 .$vm_base: 375; @function vw($px) { @return ($px / 375) * 100vw; } 方法定义是 vw, 为什么下面的都是 'vm()' ?

手误,写错字母了

Tingglelaoo avatar Nov 03 '17 07:11 Tingglelaoo

但如果想实现桌面端每行10列,移动端每行5列,还不是要用媒体查询?

ishowman avatar Nov 13 '17 09:11 ishowman

@ishowman 但如果想实现桌面端每行10列,移动端每行5列,还不是要用媒体查询?

是的哈,这是另外一个独立的问题——用媒体查询解决响应式,跟vw单位做适配页面不是一回事哈

Tingglelaoo avatar Dec 05 '17 04:12 Tingglelaoo

最大尺寸的限制, 320 - 540 320是 iphone5 的尺寸,540是什么呢?

qq757622960 avatar Dec 13 '17 15:12 qq757622960

@qq757622960 最大尺寸的限制, 320 - 540 320是 iphone5 的尺寸,540是什么呢?

是Sony Xperia Z Ultra这个机型

Tingglelaoo avatar Dec 21 '17 09:12 Tingglelaoo

font-size: ($vw_fontsize / ($vw_design / 2)) * 100vw; 请问楼主这句是什么意思,为什么设置 根节点为20VM

supermars01 avatar Jan 18 '18 03:01 supermars01

感觉对不上比例,font-size: ($vw_fontsize / ($vw_design / 2)) * 100vw; 这里应该不用再 /2 ,否则再375模拟器里,如果px完全按照750设计图的PX数值转化,会放大一倍,不知道有没有人跟我一样的情况

sydneytan avatar Aug 24 '18 03:08 sydneytan

感觉对不上比例, $vm_fontsize: 75; // iPhone 6尺寸的根元素大小基准值 @function rem($px) { @return ($px / $vm_fontsize ) * 1rem; } 在375模拟器里,如果px完全按照750设计图的PX数值转化,会放大一倍,不知道有没有人跟我一样的情况,所以所有750我们要先自己除以2才能作为css里面的px数值

sydneytan avatar Aug 24 '18 03:08 sydneytan

作者您好,关于这句话我不懂(这样的页面虽然看起来适配得很好,但是你会发现由于它是利用视口单位实现的布局,依赖于视口大小而自动缩放,无论视口过大还是过小,它也随着视口过大或者过小,失去了最大最小宽度的限制。)这指什么呢???vw已经是适口的宽度了,过大过小指什么???可以详细介绍下码????并不能理解

ghost avatar Sep 03 '18 07:09 ghost

@sydneytan font-size: ($vw_fontsize / ($vw_design)) * 100vw; 你这种情况$vw_design就不需要除以2

makenum avatar Sep 06 '18 06:09 makenum

//iPhone 6尺寸作为设计稿基准 $vm_base: 375; @function vw($px) { @return ($px / 375) * 100vw; } 这种传参实现一个运算的函数形式,在less中怎么实现呢?只能把所有可能用到px的属性全写一遍吗?

beileixinqing avatar Nov 13 '18 10:11 beileixinqing

@beileixinqing less要传入属性 .vw('width', 100),还是用PostCSS插件处理吧,最方便

vczhan avatar Nov 14 '18 01:11 vczhan

html {
    font-size: ($vw_fontsize / ($vw_design / 2)) * 100vw; 
    // 同时,通过Media Queries 限制根元素最大最小值
    @media screen and (max-width: 320px) {
        font-size: 64px;
    }
    @media screen and (min-width: 540px) {
        font-size: 108px;
    }
}

这样写会导致1rem === 20vw的,应该改成

html {
  font-size: ($vw_fontsize / $vw_design) * 100vw;
  // 同时,通过Media Queries 限制根元素最大最小值
  @media screen and (max-width: 320px) {
    font-size: 32px;
  }

  @media screen and (min-width: 540px) {
    font-size: 54px;
  }
}

lf7817 avatar Jan 15 '19 06:01 lf7817

非常漂亮,感谢

xiaoliutop avatar Apr 02 '19 08:04 xiaoliutop

1rem=20vw,字体大小会放大一倍,为什么示例代码却没有出现这样的情况,可以发源码研究下么???

Caveolaes avatar Apr 15 '19 11:04 Caveolaes

@qq757622960

  1. $vm_fontsize: 75; // iPhone 6尺寸的根元素大小基准值 @function rem($px) { @return ($px / $vm_fontsize ) * 1rem; }

这里有个问题,假如设计稿是基于 750px 设计的。 @return ($px / $vm_fontsize / 2 ) * 1rem; 应该在 '/ 2' 吧。 我也是除以2才实现的,感觉写的有问题 2. $vm_base: 375; @function vw($px) { @return ($px / 375) * 100vw; }

方法定义是 vw, 为什么下面的都是 'vw()' ?

wangyingjie123 avatar Apr 29 '19 04:04 wangyingjie123

这个限制大小是根据什么来限制最大最小值的?

// 同时,通过Media Queries 限制根元素最大最小值 @media screen and (max-width: 320px) { font-size: 64px; } @media screen and (min-width: 540px) { font-size: 108px; }

git-xyz avatar May 14 '19 05:05 git-xyz

感谢分享~

Joyful23 avatar May 31 '19 05:05 Joyful23

有demo的代码吗?

coolpail avatar Nov 27 '19 03:11 coolpail

@coolpail

有demo的代码吗?

DEMO

lf7817 avatar Nov 27 '19 03:11 lf7817

【4.对于需要保持高宽比的图,应改用 padding-top 实现】针对这一点,为什么不直接使用vw或rem设定高度呢?

目前我能想到的就是使用百分数设置宽度时,高度利用padding特性可以实现等比效果,其他设置vw固定值时高度便完全可以同样使用vw了

charisna avatar Feb 06 '20 08:02 charisna

哇哦,多谢作者分享!

Q-kil avatar Mar 11 '20 15:03 Q-kil

有两个问题 1.使用的的rem方法如何注入全局 2.针对第三方UI框架如何处理

Hideer avatar Mar 19 '20 16:03 Hideer