如何在vue中使用vw移动端适配
转载修改自大漠的 vw适配方案。vue 项目中使用vw 做移动端适配
1 | npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano -S |
接下来对 .postcssrc.js
做出配置:
1 | // https://github.com/michael-ciniawsky/postcss-load-config |
在不想要把px
转换为vw
的时候,首先在对应的元素(html
)中添加配置中指定的类名.ignore
或.hairlines
(.hairlines
一般用于设置border-width:0.5px
的元素中)
在哪些地方可以使用vw
来适配我们的页面。根据相关的测试:
- 容器适配,可以使用
vw
- 文本的适配,可以使用
vw
- 大于
1px
的边框、圆角、阴影都可以使用vw
- 内距和外距,可以使用`vw
如果我们想要做一个188:246
(188
是容器宽度,246
是容器高度)这样的比例容器,只需要这样使用:
1 | [w-188-246] { |
有一点需要特别注意:aspect-ratio属性不能和其他属性写在一起,否则编译出来的属性只会留下aspect-ratio的值
border-image 方式 处理底框1px:
1 | @svg 1px-border { |
background-iamge方式来处理1px:
1 | @svg square { |
CDN
viewport-units-buggyfill
主要有两个JavaScript文件:viewport-units-buggyfill.js
和viewport-units-buggyfill.hacks.js
。你只需要在你的HTML文件中引入这两个文件。比如在Vue项目中的index.html
引入它们
1 | <script src="//g.alicdn.com/fdilab/lib3rd/viewport-units-buggyfill/0.6.2/??viewport-units-buggyfill.hacks.min.js,viewport-units-buggyfill.min.js"></script> |
第二步,在HTML文件中调用viewport-units-buggyfill
,比如:
1 | <script> |
只要使用到了viewport
的单位(vw
、vh
、vmin
或vmax
)地方,需要在样式中添加content
但是content
也会引起一定的副作用。比如img
和伪元素::before
(:before
)或::after
(:after
)。在img
中content
会引起部分浏览器下,图片不会显示。这个时候需要全局添加:
1 | img { |