vue移动端项目通用技巧

news2024/11/25 12:34:42

目录

一、配置文件

1.1、取消eslint校验

1.2、基础文件引入

1.3、iconfont引入+svg使用

1.4、css的简化应用

1.5、内容溢出用省略号替代

1.6、非组件库的底部导航跳转

1.7、基础版轮播图

一、配置文件

1.1、取消eslint校验

在vue.config.js文件里:

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,//取消eslint校验
})

1.2、基础文件引入

在main.js文件里:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './vantui'//按需引入vant
// css样式重置
import '@/assets/css/reset.css'
import '@/assets/css/index.scss'
import '@/assets/font/iconfont.css' //引入iconfont样式,图标们才会出现
import '@/assets/font/iconfont.js' //引入iconfont彩色图标(symbol)

Vue.config.productionTip = false
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

1.3、iconfont引入+svg使用

官网:iconfont-阿里巴巴矢量图标库

搜索项目要使用的图标们,添加到购物车后下载到一个项目里,得到一个压缩包,进行解压,放入项目静态资源文件夹里;

在网站上运行项目里的demo_index.html文件,就可以看到自己的图标。

(1)Font class格式的使用:<i class='iconfont icon-fangdajing'></i>

(2)Symbol格式的使用:第二个<use>是循环渲染的用法

        <svg class="icon-font">
          <use xlink:href='#icon-chazhaoyonghu'></use>
          <use :xlink:href="v.icon"></use>
        </svg>

第一种就是平常的黑白图标,第二种就是对彩色图标的应用。

1.4、css的简化应用

  如下图,上面的svg彩色图标明显比下面的图标大一点,而且这15个小盒子都是依靠v-for渲染得到的。借助  li:nth-child(-n+5) svg {.......}即可拿到指定数量的盒子。

.nav-menu ul {
    display: flex;
    flex-wrap: wrap;
    li {
        flex: 0 1 20%;
        text-align: center;
        margin: .625rem 0;
        span {
            display: block;
        }
    }
    // 前5个尺寸变大
    li:nth-child(-n+5) svg {
        width: 2.5rem;
        height: 2.5rem;
    }
    // 从第6个起尺寸变小
    li:nth-child(n+6) svg {
        width: 1.25rem;
        height: 1.25rem;
    }
}

1.5、内容溢出用省略号替代

移动端宽度有限,如果一行放不下,又不想换行,就用省略号代替!

 .main-module-1 h4 {
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
}

1.6、非组件库的底部导航跳转

 

点击指定导航,颜色发生改变,借助linkActiveClass属性

 以下为样式以及对应视图:样式在main.js里引入了index.scss

      <div class="footer-list">
        <ul>
          <li v-for="(v, i) in footerList" :key="i">
            <router-link :to="v.path">
              <i class="iconfont" :class="v.icon"></i>
              <span>{{ v.title }}</span>
            </router-link>
          </li>
        </ul>
      </div>
<script>
export default {
  data() {
    return {
      footerList: [
        { title: "首页", icon: "icon-shouye", path: "/index" },
        { title: "会员", icon: "icon-huiyuan", path: "/memeber" },
        { title: "订单", icon: "icon-dingdan", path: "/ordre" },
        { title: "我的", icon: "icon-wode", path: "/my" },
      ],
    };
  },
};
</script>
<style lang="scss" >
//最外层的设置,防止页面横向滚动
html,
body {
    max-width: 720px;
    overflow-x: hidden;
    margin: 0 auto;
}
// 底部导航栏
.footer {
    height: 3.75rem;
    .footer-seat {
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 3.75rem;
        background-color: beige;
        border-top: 1px solid #e5e5e5;
        .footer-list {
            max-width: 720px;
            height: 3.75rem;
            margin: 0 auto;
            ul {
                display: flex;
                text-align: center;
                align-items: center;
                height: 100%;
                li {
                    flex: 1;
                    i {
                        font-size: 1.5rem;
                    }
                    span {
                        display: block;
                    }
                }
            }
        }
    }
}
</style>

1.7、基础版轮播图

自动播放:目前显示的图片对应总图片数组的指定下标,到最后一张后继续从第一张开始。

<template>
  <div class="banner">
    <img v-for="(v, i) in menuList" :key="i" :src="v" v-show="n == i" />
  </div>
</template>
<script>
export default {
  data() {
    return {
      n: 0, //初始化
      menuList: [
        require("@/assets/img/b-1.jpg"),
        require("@/assets/img/b-2.jpg"),
        require("@/assets/img/b-3.jpg"),
      ],
    };
  },
  mounted() {
    this.play();
  },
  methods: {
    autoplay() {
      this.n++;
      if (this.n == this.menuList.length) {
        this.n = 0;
      }
    },
    play() {
      setInterval(this.autoplay, 2000);
    },
  },
};
</script>

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

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

相关文章

【论文阅读】Robustness in Reinforcement Learning

原文为 Trustworthy Reinforcement Learning Against Intrinsic Vulnerabilities: Robustness, Safety, and Generalizability&#xff0c;是 2022 年 CMU 发表的综述文章。 本文主要关注文章的第二部分即鲁棒性 1. 概述 鲁棒性主要解决的问题是提高策略在面对不确定性或者对抗…

Linux:文件查看:《cat》《more》《less》《head》《tail》《wc》《grep》使用方法

同样是查看为什么要有这么多查看方法&#xff1f;&#xff1f;&#xff1f; 因为他们的用法和扩功能肯定不一样&#xff0c;选择与你需要匹配的一条命令可以节省时间的同时更快速 cat 文件 可以直接查看文件内的内容 直接可以查看文件内的内容 要直接看更多的文件以空格隔开的…

AI大模型+低代码,在项目管理中的应用实践

随着ChatGPT大火之后&#xff0c;新的AI技术和模型被证明已经具备的很高的使用价值。 诸如Copilot、Midjourney、notion等产品通过AI的加持&#xff0c;已经让用户能够充分地在应用层面感受到了便利性。 原本几天的工作通过AI模型&#xff0c;可能只需要1分钟就能完成。可以大…

面试腾讯T7,被按在地上摩擦,鬼知道我经历了什么?

时间总是过得飞快&#xff0c;金三银四已经过去了&#xff0c;人们已经开始备战互联网大厂2023年的秋招计划了。刚好最近我有个小徒弟去腾讯面试的时候挂掉了&#xff0c;感觉被技术吊打。根据他的描述我复盘了一下&#xff0c;希望能给备战秋招的朋友一些帮助。 腾讯面试的内…

Leetcode——485. 最大连续 1 的个数

&#x1f4af;&#x1f4af;欢迎来到的热爱编程的小K的Leetcode的刷题专栏 文章目录 1、题目2、滑动窗口3、一次遍历(官方题解) 1、题目 题目&#xff1a;给定一个二进制数组 nums &#xff0c; 计算其中最大连续 1 的个数。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,0…

生成对抗网络pix2pixGAN

1.介绍 论文&#xff1a;Image-to-Image Translation with Conditional Adversarial Networks 论文地址&#xff1a;https://arxiv.org/abs/1611.07004 图像处理的很多问题都是将一张输入的图片转变为一张对应的 输出图片&#xff0c;比如灰度图、彩色图之间的转换、图像自动…

【JavaEE】SpringMVC_day02

今日内容 完成SSM的整合开发能够理解并实现统一结果封装与统一异常处理能够完成前后台功能整合开发掌握拦截器的编写 1&#xff0c;SSM整合 前面我们已经把Mybatis、Spring和SpringMVC三个框架进行了学习&#xff0c;今天主要的内容就是把这三个框架整合在一起完成我们的业务功…

网络基础-IP和端口号以及认识传输层协议

概念回顾 MAC地址仅需要在同一个局域网下唯一&#xff0c;就可以保证不会出现通讯问题。 通信的目的是两台机器上的应用软件要通信。即客户端进程和服务端进程要获取这个数据&#xff0c;借助主机来完成通信。故将数据在主机间转发仅仅是手段&#xff0c;机器收到后&#xff…

为什么别的测试工程师年薪30W,而你做不到?

最近收到一位同学的私信&#xff1a; “看到了这个岗位想去应聘&#xff0c;但任职要求熟悉Shell、Python、Java其中的一种语言。软件测试工程师不是对编程代码要求不高吗&#xff1f;我如果学习应该选择Java还是Python&#xff1f;” 对于刚入行的测试新人来说&#xff0c;在求…

深入理解Linux内核(第三版)- 进程切换

为了控制进程的执行&#xff0c;内核必须有能力挂起正在CPU上运行的进程&#xff0c;并恢复以前挂起的某个进程的执行。这种行为被称为进程切换&#xff08;process switch&#xff09;、任务切换&#xff08;task switch&#xff09;或上下文切换&#xff08;context switch&a…

手把手教你Java实现栈和队列

目录 一、栈(Stack) 1、概念 2、栈的使用 3、栈的模拟实现 4、栈的应用场景 2. 队列(Queue) 1、概念 2、队列的使用 3、队列模拟实现 4、循环队列 三、双端队列 (Deque) 五、栈和队列的互相实现 用队列实现栈&#xff1a; 用栈实现队列&#xff1a; 一、栈(St…

【剑指offer】(2)

系列文章目录 剑指offer系列是一本非常著名的面试题目集&#xff0c;旨在帮助求职者提升编程能力和应对面试的能力。 文章目录 系列文章目录[TOC](文章目录) 前言一、 用两个栈实现队列&#x1f525; 思路&#x1f308;代码 二、青蛙跳台阶问题&#x1f525; 思路&#x1f308…

git从入门到卸载

git是什么&#xff1f; 从git的官网Git可以找到&#xff1a; Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footpr…

SANGFOR防火墙如何查看现网运行参数

环境&#xff1a; 防火墙 8.0.48 AF-1000BB1510 问题描述&#xff1a; 公司防火墙设备使用2年多了 AF-2000-FH2130B-SC;性能参数&#xff1a;网络层吞吐量&#xff1a;20G&#xff0c;应用层吞吐量&#xff1a;9G&#xff0c;防病毒吞吐量&#xff1a;1.5G&#xff0c;IPS吞…

python基础实战4-python基础语法

1、注释&#xff08;Comments&#xff09; 注释用来向用户提示或解释某些代码的作用和功能&#xff0c;它可以出现在代码中的任何位置。 Python解释器在执行代码时会忽略注释&#xff0c;不做任何处理&#xff0c;就好像它不存在一样。 1.1 代码注释介绍 注释就是对代码的解…

计算机组成原理 指令系统(1)

本文是HIT计算机组成原理上课笔记&#xff0c;由于唐书有些内容讲的比较抽象&#xff0c;添加了一些王道的图片加以补充。 回忆计算机的工作过程 代码被编译器翻译成与之对等的机器指令&#xff0c;除了指令之外还会有一些数据同时被放到主存里 机器指令 指令格式 一条指令是…

第十四章 代理模式

文章目录 前言一、静态代理完整代码接口 ITeacherDao &#xff08;代理类和被代理类都需要实现这个接口&#xff09;被代理类 TeacherDao代理类 TeacherDaoProxy测试类 Client 二、JDK动态代理完整代码接口 ITeacher实现类TeacherDao代理工厂 ProxyFacyoryclient 测试 三、Cgli…

Java阶段二Day09

Java阶段二Day09 文章目录 Java阶段二Day09DQLSELECT基础查询全部查询WHERE子句连接多个条件ORDER BY子句分页查询在SELECT子句中使用函数在WHERE中使用表达式别名聚合函数 教师总结DQL语言-数据查询语言语法基础查询语法例 WHERE子句例连接多个条件例AND的优先级高于OR IN(列表…

vue使用原生bootstrap-fileinput无效(未解决)

这篇只记录一下踩到的坑&#xff0c;由于时间关系&#xff0c;此问题未解决 起因&#xff1a;要求替换项目框架&#xff0c;原先jq要替换成vue。之前bootstrap中自带的文件上传插件自带很多功能&#xff0c;上传进度条、上传内容预览等非常方便&#xff08;如图&#xff09;&a…

Netty核心源码分析(四)心跳检测源码分析

文章目录 系列文章目录一、心跳检测案例二、源码分析1、Netty心跳的三个Handler2、IdleStateHandler源码&#xff08;1&#xff09;四个关键属性&#xff08;2&#xff09;handlerAdded方法&#xff08;3&#xff09;四个内部类 3、读事件的run方法——ReaderIdleTimeoutTask4、…