vue中怎么适配移动端屏幕,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
效果预览
# 项目clonegit clone git@github.com:NicolasGui/flexible.git
# 进入项目目录cd flexible
# 安装依赖npm install
# 启动服务 localhost:8080npm run dev
原理概述
插件安装
# 插件一:amfe-flexiblenpm install amfe-flexible --save
# 插件二: node-sassnpm install amfe-flexible --save # 同时,在main.js文件内引入
npm install sass-loader --save
编写js处理方法
在utils目录下创建flex.js文件,内容如下:
import Vue from 'vue'
Vue.prototype.$setTitle = function (text) {
document.title = text
}
Vue.prototype.$getPX = function (design, designWidth = 750) { // 750为设计稿宽度
// 获取窗口尺寸
let width = document.documentElement.getBoundingClientRect().width
// 计算缩放比例
let scale = width / designWidth
// 获取实时尺寸
return design * scale
}
同时,在main.js文件内引入该js文件
import Vue from 'vue'
import App from './App'
import router from './router'
import 'amfe-flexible'
import './utils/flex'
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
编写css处理方法
在src目录创建styles目录,同时在该目录新增common.scss文件,内容如下:
body,div,ul,ol,dl,li,dt,dd,h2,h3,h4,h5,p,form,iframe,input,textarea,a,span,em,strong,img,html,nav,header,article,button,footer,var {
padding:0;
margin:0;
}
body { font:12px/1.2rem "Microsoft YaHei",tahoma,arial,sans-serif;min-width:320px;position:relative; }
form,input {background:none;border:none;}
ul,dl,ol {list-style-type:none;}
h2, h3, h4, h5, h6 { font:12px/1.2rem "Microsoft YaHei",arial,tahoma; }
a { text-decoration:none; }
a:hover,a:focus { outline:none; }
table { border-collapse:collapse;border-spacing:0; }
img { border:none; }
strong,b { font-weight:normal; }
em,i,var { font-style:normal; }
p { text-indent:0; }
.clear { clear:both;height:0;line-height:0;overflow:hidden;width:0; }
.clearfix:after { clear:both;content:".";display:block;font-size:0;height:0;visibility:hidden; }
// 尺寸转换
@function px2rem($px, $base-font-size: 75px) { /*设计稿宽度为750,因此此处为75*/
@if (unitless($px)) {
@return px2rem($px + 0px);
} @else if (unit($px) == rem) {
@return $px;
}
@return ($px / $base-font-size) * 1rem;
}
// 字体转换
@mixin font-dpr($font-size) {
font-size: $font-size;
[data-dpr="2"] & {
font-size: $font-size * 2;
}
[data-dpr="3"] & {
font-size: $font-size * 3;
}
}
css内使用
<style scoped lang='scss'>
@import '../styles/common.scss';
.content{
width:px2rem(750); /*750为设计稿实际尺寸*/
font-size:px2rem(20) /*20为设计稿实际尺寸*/
</style>
js内使用
export default {
name:'test',
data() {
return {
w:0;
}
},
watch:{
getWidth() {
this.w=this.$getPX(500);
}
}
},
computed: {
fun() {
return (this.w/this.$getPX(500)*100).toFixed(2) + '';
}
}
}
关于vue中怎么适配移动端屏幕问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。