uniapp自用速查表 - 我的常用组件

news/2024/5/19 11:25:27/文章来源:https://blog.csdn.net/qq285744011/article/details/127021069

纯私人class,公开文章是方便置顶.... 

<!-- 自定义导航栏 占位空间 -->
<view class="navigationStyleCustomHeight alwaysOnTopBox0 bgColorForTheme"></view>


<!-- 自定义导航栏 -->
<view class="alwaysOnTopBox1 myNavBar">
        <uni-nav-bar shadow title="我的收货地址" leftIcon="back" rightIcon="search" @clickLeft="goBack" @clickRight="goSearch"></uni-nav-bar>
</view>


<style scoped>
    .myNavBar /deep/ .uni-nav-bar-text {
        font-size: 16px !important;
        font-weight: bold;
    }
</style>

<!-- 底部固定按钮 -->
<view class="alwaysAtBottomFullRow">
    <view class="box paddingCol20">
        <view class="buttonForTheme">
            确定
        </view>
    </view>
</view>

制作套壳APP

1. 新建uniapp项目(可以不使用uni-ui)
2. 修改 \pages\index\index.vue,在template的view中添加:
   <web-view src="https://xxx.com/xxx/"></web-view>
3. OK
4. 可以隐藏index.vue的顶部导航栏,或者全屏
   pages.json >> globalStyle >> 添加"navigationStyle": "custom"

自定义字体

1. 放置ttf文件到\static\xx.ttf
2. 参考 \static\customicons.css 修改ttf位置
3. 修改 \app.vue,引入上面的css文件
4. 在各自的pages的vue文件的style中使用 .xx { font-family: 'xx'; }
5. OK, 不行就重新编译app

全局通用css样式

修改 \app.vue,在style中引入,格式:
@import '@/static/xx.css';

全局函数、全局方法

\common\fn.js

function fn1 (param) { return 'result1'; }
function fn2 (param) { return 'result2'; }

export default {
    fn1,
    fn2
}

\main.js

import Vue from 'vue'
import App from './App'
import fn from './common/fn.js'

Vue.config.productionTip = false
Vue.prototype.$fn = fn

App.mpType = 'app'

const app = new Vue({
    fn,
    ...App
})
app.$mount()
 

\pages\xx\xx.vue

let xx = this.$fn.fn1( 'anything' )

全局变量定义、修改、读取

登录状态、退出登录

本地存储 (登录-记住我)

Tabbar底部标签栏实现

顶部导航栏修改、自定义、添加右边的按钮

页面下拉刷新

图片懒加载

页面触底刷新、下一页、分页

Ajax交互 - 文字

Ajax交互 - 文字 + 图片视频 (文件上传)

Ajax交互 - 文字 + PDF文件上传(或其他)

修改内置组件样式

自定义图标

App图标设置

App启动页

alert提示

confirm确认提示框

饼状图、柱状图、统计图表

获取短字符串 (后面星号代替)

// 获取短字符串 (后面星号代替)
get_short_string (str, max_length = 10, separator = '*') {
    // 字符串转数组
    let res = String(str)
    let arr = res.split('')
    
    // 星号长度
    let separator_length = 3
    
    // 正数
    max_length = Math.max(0, parseInt(max_length))
    
    // 星号除外的长度
    let cut_length = Math.max(0, max_length - separator_length)
    
    if (arr.length > max_length) {
        // 如果长度符合
        res = ''
        for (let i in arr) {
            if (i < cut_length) {
                // 切
                res += arr[i]
            }
        }
        // 拼接
        res += separator.repeat(separator_length)
    }
    return res
},

// 获取短字符串 (中间用星号代替)
get_short_string_two_sides (str, max_length = 10, side_length = 3, separator = '*') {
    // 规范
    max_length =  Math.max(0, parseInt(max_length))
    side_length = Math.max(0, parseInt(side_length))        // 两边明文长度
    
    // 字符串转数组
    let res = String(str)
    let arr = res.split('')
    
    // 直接返回短字符串
    if (arr.length <= max_length || arr.length < 4) {
        return res
    }
    
    // 调整两边明文长度
    let half_length = Math.ceil( max_length / 2 )             // 一半长度
    side_length = Math.min(side_length, half_length - 1)    // 两边明文长度 要小于一半长度
    
    // 星号开始下标
    let separator_start_index = side_length
    // 星号结束下标
    let separator_end_index = arr.length - side_length - 1
    // 星号长度
    let separator_length = max_length - side_length - side_length
    
    // 正数
    separator_length = Math.max(0, separator_length)
    
    // 开切
    res = ''
    let left = ''
    let right = ''
    for (let i in arr) {
        if (i < separator_start_index) {
            // 切
            left += arr[i]
        }
        
        if (i > separator_end_index) {
            // 切
            right += arr[i]
        }
    }
    // 拼接
    res = left + separator.repeat(separator_length) + right
    
    return res
},

多选 / 单选 - radio checkbox

常见页面 - 标签页切换 - 不同列表切换

<template><view><!-- Tab标签头部 --><view><view class="TopTabs" style="display: flex; flex-direction: row; justify-content: space-evenly;"><view class="oneTab" :class="{'active': showingTabIndex == 0}" @click="showingTabIndex = 0">All</view><view class="oneTab" :class="{'active': showingTabIndex == 1}" @click="showingTabIndex = 1">BB</view><view class="oneTab" :class="{'active': showingTabIndex == 2}" @click="showingTabIndex = 2">CC</view></view></view><hr><!-- Tab标签内容容器 --><swiper class="swiper" :indicator-dots="false" :autoplay="false" @change="swiperChanged":current="showingTabIndex" :style="{'height': height}"><swiper-item><!-- .oneDom容器 实际高度 会赋值给swiper作为高度 --><view class="oneDom"><view v-for="(item, key) in list" :key="'key'+key">{{ item }}<!-- 1到100 --></view></view></swiper-item><swiper-item>第二个列表</swiper-item><swiper-item>第三个列表</swiper-item></swiper></view>
</template><script>export default {data() {return {// 正在显示的标签页下标showingTabIndex: 0,// 测试数据 - onLoad以后填充1到100list: [],// 预设的swiper高度, 80%屏幕高度height: '80vh'}},// 页面OK以后onLoad() {// 测试数据填充 - 1到100for (var i = 1; i <= 100; i++) {this.list.push(i)}// 动态设置Swiper高度this.setH()},methods: {// 设置高度setH() {// 延时设置高度 -- 一定要延时,否则报错 - 300毫秒一般都够了setTimeout(() => {// uniapp自带方法 - 获取DOM的高度等信息// https://uniapp.dcloud.net.cn/api/ui/nodes-info.html#createselectorquery// 节点查询const query = uni.createSelectorQuery().in(this)// 开始query.select('.oneDom').boundingClientRect(data => {console.log("【DOM尺寸信息】" + JSON.stringify(data))// 获取DOM的高度, 单位是像素let h = data.height// 补上单位h += 'px'// 实际高度赋值给swiperthis.height = hconsole.log('【动态设置高度】', h)}).exec()}, 300)},// 左右滑动时swiperChanged(e) {this.showingTabIndex = e.detail.currentconsole.log('Switch to Tab #', this.showingTabIndex)}}}
</script><style>/* 默认Tab样式 */.oneTab {color: black;padding-top: 10px;padding-bottom: 10px;position: relative;}.oneTab:after {content: '';position: absolute;left: 0;bottom: 0;width: 100%;border-bottom: 1px solid transparent;}/* active激活状态的Tab样式 */.oneTab.active {color: #d3bb30;}.oneTab.active:after {border-bottom: 1px solid red;}swiper-item {padding-left: 10px;}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java正则表达式简单使用

String email = "13072558368"; email = email.replaceAll("(\\d{3})\\d{6}(\\d{2})", "$1****$2"); System.out.println("email=" + email); email=130****68从第三个开始,计算6个数字,其中计算的6个数字用*替换String mobile = &q…

java public、protected、default、private

java 的访问控制符为了控制类还有类对应方法的访问做限制。如上的图表总结了类方法的访问控制范围,其实类的访问控制范围也是类似的情况。声明为public则不管外部包还是内部都能够访问,如果为default则只能本包内能够访问 关于类方法的访问范围,我们比较熟悉的是private还有…

java基于ssm的自助旅游管理系统

传统的旅游方式存在着漫无目的的寻找住、吃等问题&#xff0c;这样游客很累&#xff0c;也十分浪费时间。因此一个专门用来给游客介绍一些地方的景点、吃、住、特产等信息的在线旅游网站将给游客的出行选择带来极大的方便快捷。人们迫切能有一个旅游网站&#xff0c;解决旅游过…

linux软件包管理 实验报告

实验任务 对软件包进行一些基础操作 实验环境 一台centos7实验步骤 1.下载一个软件包进行实验 将软件包拖进去 查看是否存在 因为只是下载了软件包,并没有安装所以用qa并不能查找到软件包 2.查看安装包的基本信息 3.查看软件包安装在哪个路径 4.安装软件包 确认是否安装…

短期逆风造成了小鹏汽车的股价持续暴跌和错误定价

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 小鹏汽车2022年第二季度财务业绩分析 小鹏汽车近期发布的2022年第二季度财报显示&#xff0c;营收超过预期&#xff0c;但收益未达到预期。第二季度营收为11.1亿美元&#xff0c;略高于预期&#xff0c;而每股收益亏损为0.…

node-sass安装报错及其解决方案

一、下载依赖报错 这里报错了也就没后面的剧情了,就像电视剧刚开局主角就嗝屁了,看看执行 npm i 的时候报错类容: 二、解决方案 1、下载源在国外,更换中国镜像源,删除package.json中的node-sass,分别下载node包和node-sass的依赖包1 //更换淘宝镜像源 2 npm config set re…

【牛客 - 剑指offer】JZ61 扑克牌顺子 两种方案 Java实现

文章目录剑指offer题解汇总 Java实现本题链接题目方案一 哈希表方案二 排序剑指offer题解汇总 Java实现 https://blog.csdn.net/guliguliguliguli/article/details/126089434 本题链接 知识分类篇 - 模拟 - JZ61 扑克牌顺子 题目 题目主要信息 两副扑克牌抽五张&#xff0…

图像处理之直方图均衡

直方图均衡是一种将图像中的灰度分布转换成均匀分布&#xff0c;从而增强图像的对比度的图像处理方法。直方图均衡可以将原本偏白或者偏黑的图像转换成对比度符合人眼视觉的图像。 1 原理 连续空间   连续空间内的图像灰度r∈[0,L−1]&#xff0c;L表示灰度级r\in[0,L-1]&a…

上线记 | 人大金仓助力东莞卫生健康领域核心系统改造升级

随着人工智能、云计算、大数据、机器学习等新兴技术在医疗信息化建设中不断深入&#xff0c;以患者为中心、构建智慧医院、提升医院信息智能化问题迫在眉睫。为进一步深化医改工作&#xff0c;加强妇幼卫生信息管理&#xff0c;东莞市卫生健康局对东莞妇幼卫生信息平台进行了国…

[leetcode top100] 0923 多数元素,反转链表,翻转二叉树,回文链表,移动零

目录 169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 283. 移动零 - 力扣&#xff08;Le…

2106. 摘水果(每日一难phase-day22)

2106. 摘水果 在一个无限的 x 坐标轴上&#xff0c;有许多水果分布在其中某些位置。给你一个二维整数数组 fruits &#xff0c;其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排列 &#xff0c;每个 positi…

3. 链表

链表是一种通过指针串联在一起的线性结构,每一个结点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个结点的指针域指向null(空指针的意思)。  1. 链表基础单链表:指针域只指向结点的下一个结点。双链表:每一结点有两个指针域,一个指向下…

记批处理修改计算机名一次蠢操作造成电脑指定的域不存在或无法联系

近日,公司电脑需要修改计算机名(无域控),随意在网上找了一篇修改代码,正常操作右击脚本管理员运行,输入计算机名可正常修改,但是如果运行后不输入计算机名直接点确认,则会造成计算机重启后无法登陆,提示指定的域不存在或无法联系,刚好公司也有这种坑货的存在。虽然不…

java基于ssm 的留学资讯申请网的设计与实现

随着计算机信息化的深入&#xff0c;越来越多的行业使用管理系统来进行管理。出国留学逐渐成为许多大学生的热门选择&#xff0c;但是国外学校多&#xff0c;选择性大&#xff0c;如果从这些信息中&#xff0c;挑选符合自己的学校是非常重要的事情。基于此&#xff0c;开发”萨…

C#基础--集合

文章目录集合集合接口和类型列表创建列表集合初始值设定项添加元素插入元素访问元素删除元素搜索元素排序队列栈链表有序列表字典字典初始化器键的类型Lookup 类有序字典集性能集合 集合接口和类型 大多数集合类都可在System.Collections和System.Collections.Generic名称空间…

河北稳控科技手持VH501TC混合传感器信号采集读数仪工程监测仪器介绍

河北稳控科技手持VH501TC混合传感器信号采集读数仪工程监测VH501TC手持采集读数仪,设备是专用的多类型传感器手持式读数仪,主测传感类型为单弦式振弦传感器,辅测传感类型为电压、电流传感。采用 32 位 ARM 处理器和大尺寸全彩屏、阵列按键设计,彩屏,不受阳光影响,清楚明了…

SpringCloud使用注解+AOP+MQ来实现日志管理模块

简介 无论在什么系统中,日志管理模块都属于十分重要的部分,接下来会通过注解+AOP+MQ的方式实现一个简易的日志管理系统 思路 注解: 标记需要记录日志的方法 AOP: 通过AOP增强代码,利用后置/异常通知的方式获取相关日志信息,最后使用MQ将日志信息发送到专门处理日志的系…

【Python初级人工智能精讲】用Paddlehub给一段没有标点符号的文字加上合适的标点符号

Python初级人工智能精讲 文章目录Python初级人工智能精讲一、写在前面二、七步精讲三、模型介绍四、进入实战1.源代码2.运行效果(1) cmd方面(2) txt文件运行前后对比五、休吃霸王餐六、每日一句一、写在前面 今天给分享的程序是&#xff1a;给一段文字自动加上合适的标点符号&…

【图像重建】基于极限学习机实现图像重建附matlab代码

1 内容介绍 本文采用 ELM 网络求解 ECT 非线性正问题&#xff0c;以提高求解精度&#xff0c;再将其与传统 Landweber 迭代算法相结合&#xff0c;进行图像重建&#xff0c;算法原理框图如图 3 所示&#xff0c;为叙述方便&#xff0c;将该方法记为 ELM-Landweber 算法。 2 部…

卡尔曼滤波(Kalman Filter)设计与应用

估计离散时间或连续时间线性系统的状态。 卡尔曼滤波&#xff08;Kalman filter&#xff09;是一种高效率的递归滤波器&#xff08;自回归滤波器&#xff09;&#xff0c;它能够从一系列的不完全及包含噪声的测量中&#xff0c;估计动态系统的状态。卡尔曼滤波会根据各测量量在…