壁纸小程序Vue3(自定义头部组件)

news2024/12/29 9:45:45

1.自定义头部

 coustom-nav

<view class="layout">
    <view class="navbar">
        <view class="statusBar"></view>
        <view class="titleBar">
          <view class="title">标题</view>
            <view class="search">
                <uni-icons class="icon" type="search" color="#888" size="18"></uni-icons>
                <text class="text">搜索</text>
            </view>
        </view>
    </view> 

.layout{
  .navbar{
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 999;
    background:
    // linear-gradient(to bottom,rgba(0,0,0,0) 50%,#fff 100%),
    linear-gradient(to bottom,rgba(0,0,0,0) , #fff  400rpx),
    linear-gradient(to right,#beecd8 20%,#F4E2D8);
    .statusBar {}
    .titleBar{
      display: flex;
      align-items: center;
      padding: 0 30rpx;
      // height: 100rpx;
      .title{
        font-size: 22px;
        font-weight: 700;
        color: $text-font-color-1;
      }
      .search{
         width: 220rpx;
         height: 50rpx;
         border-radius: 60rpx;
         background: rgba(255, 255, 255, 0.4);
         border: 1px solid #fff;
         margin-left: 30rpx;
         color: #999;
         font-size: 28rpx;
         display: flex;
         align-items: center;
         .text{
           padding-left: 10rpx;
         }
         .icon{
           margin-left: 5rpx;
         }
         
       }
     	  
    }
  }

 1)状态栏

 

  <view class="statusBar" :style="{height:statusBarHeight+'px'}"></view>

H5中为0

 

  <view class="titleBar" :style="{height:titleBarHeight+'px'}">

获取胶囊位置

  <view class="fill" :style="{height:statusBarHeight+titleBarHeight+'px'}">
    </view>

填充区域,让轮播图展示全


<script setup>
import { ref } from 'vue'

//状态栏
let SYSTEM_INFO = uni.getSystemInfoSync();
let statusBarHeight = ref(SYSTEM_INFO.statusBarHeight)
// 获取胶囊按钮信息
let {top,height} = uni.getMenuButtonBoundingClientRect();
let titleBarHeight = ref(height + (top - statusBarHeight.value)*2)
</script>
 

2.封装组件

上面的做法在H5中会报错,所以创建一个utils.js

const SYSTEM_INFO = uni.getSystemInfoSync();
export const getStatusBarHeight = () => SYSTEM_INFO.statusBarHeight || 0;

export const getTitleBarHeight = ()=>{
  if(uni.getMenuButtonBoundingClientRect){
      let {top,height} = uni.getMenuButtonBoundingClientRect();
      return  height + (top - getStatusBarHeight())*2
  }else{
    return 40;
  }
}

export const getNavBarHeight = ()=> getStatusBarHeight() + getTitleBarHeight();

<script setup>
import { ref } from 'vue'
import { getStatusBarHeight, getTitleBarHeight, getNavBarHeight } from '@/utils/system.js'
</script>
 

3.动态定义标题

<script setup>
import { ref } from 'vue'
import { getStatusBarHeight, getTitleBarHeight, getNavBarHeight } from '@/utils/system.js'
defineProps({
  title:{
    type:String,
    default:"壁纸"
  }
})
</script>

<custom-nav-bar title="分类"></custom-nav-bar>

 preview.vue

<view class="goBack" :style="{top:getStatusBarHeight()+'px'}" @click="goBack">


//返回上一页
const goBack = ()=>{
  uni.navigateBack()

}

4.点击公告进行跳转

notice.vue

<template>
  <view class="noticeLayout">
      <view class="title">
          <view class="tag">
            <uni-tag text="置顶" type="error" inverted></uni-tag>
          </view>
          <view class="font">这个区域填写标题</view>
      </view>
      <view class="info">
        <view class="item">君泺</view>
        <view class="item">
          <uni-dateformat :date="Date.now()" format="yyyy-MM-dd hh:mm:ss"></uni-dateformat>
        </view>
      
      </view>
      
      <view class="content">
        内容区域
      </view>
      
      <view class="count">
        阅读 5588
      </view>
      
    </view>
</template>

<script>
  export default {
    data() {
      return {
        
      }
    },
    methods: {
      
    }
  }
</script>

<style lang="scss">
.noticeLayout{
	padding:30rpx;
		.title{
			font-size: 40rpx;
			color:#111;
			line-height: 1.6em;
			padding-bottom:30rpx;
			display: flex;
			.tag{
				transform: scale(0.8);
				transform-origin: left center;
				flex-shrink: 0;	
			}
			.font{
				padding-left:6rpx;
			}
		}
		.info{
			display: flex;
			align-items: center;
			color:#999;
			font-size: 28rpx;
			.item{
				padding-right: 20rpx;
			}
		}
		.content{
			padding:50rpx 0;
		}
		.count{
			color:#999;
			font-size: 28rpx;
		}
}
</style>

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

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

相关文章

网络安全 | 什么是网络安全?

关注WX&#xff1a;CodingTechWork 网络安全 网络安全-介绍 网络安全是指用于防止网络攻击或减轻其影响的任何技术、措施或做法。网络安全旨在保护个人和组织的系统、应用程序、计算设备、敏感数据和金融资产&#xff0c;使其免受简单而不堪其绕的计算机病毒、复杂而代价高昂…

RabbitMQ安装及Springboot 集成RabbitMQ实现消息过期发送到死信队列

死信队列 RabbitMQ 的死信队列&#xff08;Dead-Letter-Exchanges&#xff0c;简称 DLX&#xff09;是一个强大的特性&#xff0c;它允许在消息在队列中无法被正常消费&#xff08;例如&#xff0c;消息被拒绝并且没有设置重新入队&#xff0c;或者消息过期&#xff09;时&…

在 Three.js 中,`USDZExporter` 类用于将场景导出为 USDZ 格式,这是一种用于在 iOS 平台上显示增强现实(AR)内容的格式。

demo 案例 在 Three.js 中&#xff0c;USDZExporter 类用于将场景导出为 USDZ 格式&#xff0c;这是一种用于在 iOS 平台上显示增强现实&#xff08;AR&#xff09;内容的格式。下面是关于 USDZExporter 的入参、出参、方法和属性的讲解&#xff1a; 入参 (Parameters): sc…

解决Quartus与modelsim联合仿真问题:# Error loading design解决,是tb文件中没加:`timescale 1ns/1ns

解决Quartus与modelsim联合仿真问题&#xff1a;# Error loading design解决&#xff0c;是tb文件中没加&#xff1a;timescale 1&#xff0c;一直走下来&#xff0c;在modelsim中出现了下面问题2&#xff0c;rtl文件、tb文件2.1&#xff0c;rtl代码2.2&#xff0c;tb测试2.3&a…

C# WPF编程-Application类(生命周期、程序集资源、本地化)

C# WPF编程-Application类 应用程序的生命周期创建Application对象应用程序的关闭方式应用程序事件 Application类的任务显示初始界面处理命令行参数访问当前Application对象在窗口之间进行交互 程序集资源添加资源检索资源pack URI内容文件 本地化构建能够本地化的用户界面 每…

Day5-

Hive 窗口函数 案例 需求&#xff1a;连续三天登陆的用户数据 步骤&#xff1a; -- 建表 create table logins (username string,log_date string ) row format delimited fields terminated by ; -- 加载数据 load data local inpath /opt/hive_data/login into table log…

封装表格组件,最后一列动态生成 vue3子组件通过slot传值向父组件

将表格二次封装&#xff0c;方便以后开发中的复用。每次只需调用表格组件后&#xff0c;在父组件中往子组件标签上写入dataSource&#xff08;表格数据&#xff09;和columns&#xff08;表格列标题&#xff09;即可。 此案例中最后一列是删除按钮&#xff0c;动态生成&#xf…

如何提高图片的分辨率?dpi修改工具推荐

在调整分辨率之前&#xff0c;我们需要了解什么是dpi分辨率&#xff0c;简单来说&#xff0c;分辨率是指图像中包含的像素数量&#xff0c;分辨率越高&#xff0c;图像就越清晰&#xff0c;常见的分辨率包括72dpi、96dpi和300dpi等&#xff0c;在打印照片或者一些考试平台对图片…

uniapp 开发之原生Android插件

开发须知 在您阅读此文档时&#xff0c;我们假定您已经具备了相应Android应用开发经验&#xff0c;使用Android Studio开发过Android原生。也应该对HTML,JavaScript,CSS等有一定的了解, 并且熟悉在JavaScript和JAVA环境下的JSON格式数据操作等。 为了插件开发者更方便快捷的开…

【论文阅读】DETR 论文逐段精读

【论文阅读】DETR 论文逐段精读 文章目录 【论文阅读】DETR 论文逐段精读&#x1f4d6;DETR 论文精读【论文精读】&#x1f310;前言&#x1f4cb;摘要&#x1f4da;引言&#x1f9ec;相关工作&#x1f50d;方法&#x1f4a1;目标函数&#x1f4dc;模型结构⚙️代码 &#x1f4…

Django源码之路由匹配(下)——图解逐步分析底层源码

目录 1. 前言 2. 路由匹配全过程分析 2.1 请求的入口 2.2 request的封装 2.3 response的源头 2.4 handler的获取 2.5 获取resolver对象 2.6 路由进行匹配 3. 小结 1. 前言 在上一篇文章中&#xff0c;我们谈到了路由的定义&#xff0c;通过URLPattern路由路径对象和Rou…

c/c++ | socket tcp client server

突然想着&#xff0c;花一个socket tcp 客户-服务通信 这应该是很经典的流程了吧 感觉还是要训练这种随手画图的能力&#xff0c;毕竟文字的描述还是不及图片强烈 参考01

基于深度学习的停车场车辆检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 上图测试结果如下图所示&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 image imread(image_test\test.jpg); image2 image;%图…

九河云携手华为云推出海外电商解决方案,一体化解决出海问题

随着国内竞争的日益激烈&#xff0c;国内企业的出海热情正在逐步提高。国外尤其是东南亚等地区&#xff0c;正在成为企业营收的新增长点。九河云携手华为云为客户带来了海外电商部署方案。华为云作为增长最快的云服务提供商&#xff0c;秉持着为客户提供最优质服务的原则&#…

Vue项目中引入html页面(vue.js中引入echarts数据大屏html [静态非数据传递!] )

在项目原有vue&#xff08;例如首页&#xff09;基础上引入html页面 1、存放位置 vue3原有public文件夹下 我这边是新建一个static文件夹 专门存放要用到的html文件 复制拖拽过来 index为html的首页 2、更改路径引入到vue中 这里用到的是 iframe 方法 不同于vue的 component…

C#实现Word文档转Markdown格式(Doc、Docx、RTF、XML、WPS等)

文档格式的多样性丰富了我们的信息交流手段&#xff0c;其中Word文档因其强大的功能性而广受欢迎。然而&#xff0c;在网络分享、版本控制、代码阅读及编写等方面&#xff0c;Markdown因其简洁、易于阅读和编辑的特性而展现出独特的优势。将Word文档转换为Markdown格式&#xf…

vue改名为威优易?

文章目录 vue改名为威优易&#xff1f; 祝大家愚人节快乐哇&#xff01; 哈哈&#xff0c;大家愚人节快乐&#xff01;看来我刚刚的“爆料”确实把大家吓了一跳&#xff0c;Vue.js要改名为“威优易”&#xff1f;这纯粹是官方在这个愚人节使者开的一个小小玩笑啦&#xff01; …

修改Gradio界面中按钮Submit、Clear,Flag为中文,修改additional_inputs标签。

展示如图 Submit、Clear、additional_inputs标签 Submit、Clear修改 修改gradio库中interface.py additional_inputs标签 同一文件下 flag修改 flag展示

vscode批量编辑行头行尾

ctrlf查找那儿将最后的星星选中即为正则表达式模式 ^ 表示行头$ 表示行尾 例如&#xff0c;在行首添加大括号{ &#xff1a; vsCode中可以使用正则表达式模式找到换行。指定字符替换成换行&#xff0c;在替换字符串里将换行用\n表示就可以了。 查找换行符也是在查找那儿使用\…

【C语言进阶】- 内存函数

内存函数 1.1 内存函数的使用1.2 memcpy函数的使用1.3 memcpy函数的模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现2.3 memcmp函数的使用2.4 memset函数的使用 1.1 内存函数的使用 内存函数就是对内存中的数据进行操作的函数 1.2 memcpy函数的使用 void* memcpy ( …