大商创(移动端) -- day01

news2025/2/23 12:31:21

插件:npm i axios less less-loader vue-router@3 amfe-flexible postcss postcss-pxtorem vant@2

移动端的适配

使用 postcss postcss-pxtorem 这个插件是用来把px转换成rem

使用amfe-flexible 插件兼容不同设备

使用步骤

1.下载这两个插件

2.在mian.js中引入 amfe-flexible,import 'amfe-flexible'

3.在文件根目录下新建postcss.config.js

解决第三方组件库兼容问题

vant组件库的设计稿是按照375px来开发的。因此在viewportWidth为750px时会出现转换问题。

module.exports = {

plugins: {

'postcss-pxtorem': {

rootValue: 37.5,

propList: ['*'],

}}}

App.vue

<template>
  <div id="app">
    <!-- 移动端的适配 开发的 手机上打开的页面就是H5 -->
    <!-- Vant 是一个轻量、可靠的移动端组件库,于 2017 年开源 -->
     <!-- $route当前页面路由信息 -->
     <div class="tabbar flex-sp" v-if="!$route.meta.flag">
      <div class="tabbar-item flex-column" @click="changeTab(1)">
        <img class="img-box" v-if="$route.path=='/index'" src="../src/assets/images/home-selected.png" alt="">
        <img class="img-box" v-else src="../src/assets/images/home-unselected.png" alt="">
        <div class="title">首页</div>
      </div>
      <div class="tabbar-item flex-column" @click="changeTab(2)">
        <img class="img-box" v-if="$route.path=='/category'" src="../src/assets/images/category-selected.png" alt="">
        <img class="img-box" v-else src="../src/assets/images/category-unselected.png" alt="">
        <div class="title">分类</div>
      </div>
      <div class="tabbar-item flex-column" @click="changeTab(3)">
        <img class="img-box" v-if="$route.path=='/mine'" src="../src/assets/images/mine-selected.png" alt="">
        <img class="img-box" v-else src="../src/assets/images/mine-unselected.png" alt="">
        <div class="title">我</div>
      </div>
     </div>
     <!-- <van-button type="primary">主要按钮</van-button> -->
     <div id="default_drag_return" @click="topreturn()">
      <van-icon name="back-top" />
	   </div>
     <router-view></router-view>
  </div>
</template>

<script>


export default {
  name: 'App',
  components: {
    
  },
  methods:{
    changeTab(type){
      let that = this;
      if(type==1){
        that.$router.push({
          path:'/index'
        })
      }else if(type==2){
        that.$router.push({
          path:'/category'
        })
      }else{
          let token = localStorage.getItem('token')
          if(token){
              that.$router.push({
              path:'/mine'
            })
          }else{
            that.$router.push({
              path:'/login'
            })
          }
        }
    },

  },
  created(){
    console.log('this.$route',this.$route);
    
  },
  mounted(){

  }
  
}
</script>

<style lang="less" scoped>
#app{
  background-color: #f4f4f4;
  .tabbar{
    position: fixed;
    bottom: 0;
    left: 0;
    z-index: 9;
    width: 100%;
    height: 50px;
    background-color: white;
    .tabbar-item{
      .img-box{
        width: 25px;
        height: 25px;
      }
    }
  }
  
  #default_drag_return{
	width: 50px;
	height: 50px;
	border-radius: 50%;
	font-size: 25px;
	background:rgba(255, 255, 255); 
	position: fixed;
	z-index: 999;
	bottom: 70px;
	right: 20px;
	text-align: center;
	display: flex;
	justify-content: center;
	align-items: center;
	visibility: hidden;
	color:#000000;
}

}
</style>

main.js

// App.vue是根组件
// main.js是入口js文件
// components 存放公共组件(就是以前写官网的头部和底部)
// 所有可执行的命令都在package.json中的scripts中
import Vue from 'vue'
import App from './App.vue'
import { Popup, Toast, Checkbox, CheckboxGroup, Icon, Button, Tab, Tabs, Swipe, SwipeItem ,List, Cell, TreeSelect } from 'vant';

Vue.use(Popup);
Vue.use(Toast);
Vue.use(Checkbox);
Vue.use(CheckboxGroup);
Vue.use(Icon);
Vue.use(TreeSelect);
Vue.use(Cell);
Vue.use(Button);
Vue.use(Tab);
Vue.use(Tabs);
Vue.use(Swipe);
Vue.use(SwipeItem);
Vue.use(List);
Vue.config.productionTip = false
import 'amfe-flexible'
import router from './router'
import './styles/base.css'
import store from './store';
new Vue({
  router,
  store,
  render: h => h(App),
}).$mount('#app')

vue.config.js

// vue-cli的全局配置文件 --需要遵从commonjs规范
// vue-cli里面给你集成了webpack打包工具
// 热重载 只对src以外的东西都需要重新启动项目
// spa(单页面应用)
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave:false,
  devServer:{
    proxy:{
      '/api':{ // /api代理
        // 代理的目标
        target:"https://x.dscmall.cn/api",
        ws:false,
        changeOrigin:true,
        pathRewrite:{
          '^/api':""
        }
      }
    }
  }
})

babel.config.js

// babel配置文件--babel是一个JS编译器,
// 兼容低版本浏览器,引入babel,将es6转为es5
module.exports = {
  plugins: [
    ['import', {
      libraryName: 'vant',
      libraryDirectory: 'es',
      style: true
    }, 'vant']
  ],
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}

postcss.config.js

// 解决第三方组件库兼容问题
// vant组件库的设计稿是按照375px来开发的。
// 因此在viewportWidth为750px时会出现转换问题
module.exports = {
    plugins: { 
     'postcss-pxtorem': { // 插件
      rootValue: 37.5,  // 1rem=37.5px
      propList: ['*'], // 所有的文件都进行转换
     }
    }
   }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust 语言持续崛起,即将冲击 TIOBE 指数前十,能否成为编程语言新王者?

Rust 语言持续崛起&#xff0c;即将冲击 TIOBE 指数前十&#xff0c;能否成为编程语言新王者&#xff1f; 2024 年 10 月&#xff0c;全球编程语言 TIOBE 排行榜再次更新&#xff0c;各大编程语言在各自领域中继续发挥着独特的优势。官方的标题是&#xff1a; Rust排名稳步攀升…

自监督行为识别-时空线索解耦(论文复现)

自监督行为识别-时空线索解耦&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 自监督行为识别-时空线索解耦&#xff08;论文复现&#xff09;引言论文概述核心创新点双向解耦编码器跨域对比损失的构建结构化数据增强项目部署准备工作数据…

GDB基本使用指南

什么是 GDB&#xff1f; GDB&#xff08;GNU Debugger&#xff09;是一个强大的调试工具&#xff0c;主要用于调试 C、C 和其他语言编写的程序。 它让我们可以监控、控制程序的执行&#xff0c;从而查找并修复错误。 安装 GDB ubuntu上一条命令可以搞定&#xff1a; sudo …

STM32-ADC模数转换

一、概述 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁12位逐次逼近型ADC&#xff0c;1us转换时间输入电压范围&#xff1a;0~3.3V&#xff…

使用Mockaroo生成测试数据

使用Mockaroo生成测试数据 最近在学习【Spring Boot & React】Spring Boot和React教程视频的P51.Generating 1000 students一课中&#xff0c;看到了https://www.mockaroo.com/网站可以用来模拟生成测试数据&#xff0c;觉得还不错&#xff0c;特此记录一下。感觉每次看老…

基于SSM+微信小程序的宠物管理系统1

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的宠物管理系统实现了管理员、店主、用户。 管理员实现了店主管理、附件宠物店、管理员、用户管理、猫狗查询、猫狗宠物社区、商品信息等、店主实现了商品信息管理。用户…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十一)ESKF中融合速度观测量;发散的原因;如何解决发散;以及对slam的理解

带着问题去学习: 1、slam发散的原因? 2、如何解决/限制发散? 3、如何在已经有观察值和预测值的ESKF中,再引入一个其他其他观察量? 一、多传感器融合的思考——轮速计 反思为何需要融合多个传感器? 我认为根本上的原因,是因为有些传感器在某些场景下会失灵、效果不佳…

[AWS云]kafka调用和创建

背景:因为因为公司的项目需要使用AWS的kafka&#xff0c;但是在创建和使用过程中都遇到了一些报错和麻烦&#xff0c;毕竟老外的东西&#xff0c;和阿里云、华为使用起来还是不一样。 一、创建&#xff08;创建的配置过程就略了&#xff0c;就是配置一下可用区、型号&#xff0…

1. 到底什么是架构

1. 什么是架构 定义&#xff1a;架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统各个方面的设计优秀架构的特点&#xff1a;优秀的性能、超强的TPS/QPS的承载能力、高可用决定了你能够支撑多少PV的流量 2. 什么…

AUTOSAR_EXP_ARAComAPI的5章笔记(12)

☞返回总目录 5.4.6 方法 骨架侧的服务方法是抽象方法&#xff0c;必须由继承骨架的服务实现子类进行重写。让我们来看一下我们服务示例中的 Adjust 方法&#xff1a; /*** 对于所有输出和非空返回参数* 生成一个包含非空返回值和/或输出参数的封装结构。*/ struct AdjustOu…

智能之眼:如何用监督学习教机器看懂世界

智能之眼&#xff1a;如何用监督学习教机器看懂世界 智能之眼&#xff1a;如何用监督学习教机器看懂世界前言什么是监督学习&#xff1f;监督学习的工作流程监督学习的类型 监督学习的常用算法1. 线性回归&#xff08;Linear Regression&#xff09;线性回归的优缺点 2. 逻辑回…

ui入门

一、QWidget类 QWidget是Qt中所有用户界面对象的基类&#xff0c;即可视化组件和窗口的基类都是此类&#xff0c;因此QWidget类内部包含了大量的与UI相关的基础特性。 最最基础的属性&#xff1a; width : const int 宽度&#xff0c;单位像素&#xff0c;不计算边框。属性在文…

房屋租赁系统(论文+源码)-kaic

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符…

下载Edge/Chrome浏览器主题的背景图片

当我们为Edge安装了心仪的主题后&#xff0c;希望把对应的背景图片下载保存要怎么做呢&#xff0c;以下图的“湖心小屋”主题为例。如下图&#xff0c;我们已经在应用商店中按照了该主题。 当打开新标签页后&#xff0c;可以欣赏这个主题内置的背景图片。 如果想要下载这个背景…

安装macOS Sequoia注意事项

随着macOS Sequoia的发布&#xff0c;许多Mac用户开始计划升级到这一最新版本。然而&#xff0c;升级系统并非简单点击“升级”按钮即可。在安装新系统之前&#xff0c;有一些关键的注意事项可以帮助你避免潜在的问题&#xff0c;确保顺利过渡到macOS Sequoia。本文将详细介绍在…

《深度学习》【项目】自然语言处理——情感分析 <上>

目录 一、项目介绍 1、项目任务 2、评论信息内容 3、待思考问题 1&#xff09;目标 2&#xff09;输入字词格式 3&#xff09;每一次传入的词/字的个数是否就是评论的长度 4&#xff09;一条评论如果超过32个词/字怎么处理&#xff1f; 5&#xff09;一条评论如果…

源码编译 FunASR for windows on arm

源码编译 FunASR for windows on arm 这里有编译好的&#xff0c;直接下载使用 https://github.com/turingevo/FunASR-build/releases 编译 1 下载 onnxruntime-win-arm64&#xff1a; https://github.com/microsoft/onnxruntime/releases/download/v1.16.1/onnxruntime-win…

最优化方法-Goldstein准则学习记录(matlab代码实现)

目录 一、前言 二、定义 三、代码实现 四、改良后 五、总结 一、前言 作为非精确线性搜索方法的一种&#xff0c;旨在降低计算量&#xff0c;提高算法效率。在迭代过程中没有必要把线性搜索搞得十分精确&#xff0c;因此我们可以放松对的精度要求&#xff0c;只要求每一步…

葵花卫星影像数据NC转tif

数据介绍 葵花8号卫星(Himawari-8)是日本发射的静止轨道气象卫星,由日本气象厅(JMA)运营。该卫星自2015年7月7日开始正式启用,主要用于观测东亚和西太平洋区域的天气情况。葵花8号卫星搭载了先进的光学仪器,能够提供高分辨率的气象数据。 卫星分辨率 葵花8号卫星的主要…

Python学习-注释,输入,运算符

python中的注释 单行注释以#开头多行注释 这是一段多行注释。 你可以在这里写很多行注释&#xff0c; 这些内容都不会被Python解释器执行。 中文编码注释#coding:utf-8按住ctrl\ 多行注释 输入函数 input() 输入值的类型为str 基本使用 presentinput(输入的提示) print(pre…