【揭秘uni-app专题组件】从设计到实现的全面解析

====================
快速跳转:
我的个人博客主页👉:Reuuse博客
新开专栏👉:Vue3专栏
参考文献👉:uniapp官网
免费图标👉:阿里巴巴矢量图标库
❀ 感谢支持!☀
==================

前情提要

🔺从现在开始呢,我们就要开始真正的实现一个完整的项目了!❀❀❀
⭐在实现项目的过程中,会将一些比较重要的点进行讲解,确保基础薄弱的宝子们都能够理解!本次博客的开始也算是为了一边学一边做项目❗
那么话不多说我们开始吧在这里插入图片描述


引言

在前端开发中,专题组件是一个常见的功能模块,用于展示特定主题的内容。本文将通过一个uni-app专题组件的源代码,详细解析其设计和实现过程,帮助初学者快速掌握相关技能。


一、模板结构

  1. view标签:用于定义页面的结构和布局。
  2. navigator组件:用于页面间的导航。
  3. image组件:用于显示图片。
  4. class属性:用于指定CSS类,关联样式。

在这里插入图片描述

示例代码:
<view class="themeItem">
  <navigator url="" class="box">
    <image class="pic" src="../../common/image/5.jpg" mode="aspectFill"></image>
    <view class="mask">初音</view>
    <view class="tab">3天前更新</view>
  </navigator>
</view>

二、样式设计

  1. height和width:定义元素的高度和宽度。
  2. border-radius:设置元素的圆角。
  3. overflow:控制内容溢出时的显示。
  4. position:定位属性,用于定位元素。
  5. absolute定位:相对于最近的已定位祖先元素进行定位。
  6. flex布局:用于在容器内灵活排列子元素。
  7. align-items和justify-content:控制flex布局中子元素的对齐方式。
  8. backdrop-filter:用于创建毛玻璃效果。
  9. font-weight和font-size:设置字体的粗细和大小。
  10. padding:设置内边距。
  11. border-radius:设置元素的圆角。
  12. transform:用于对元素进行旋转、缩放等变换。
  13. transform-origin:定义变换的基点。
示例代码:
.themeItem {
  .box {
    height: 340rpx;
    border-radius: 10rpx;
    overflow: hidden;
    position: relative;
    .pic {
      width: 100%;
      height: 100%;
    }
    .mask {
      width: 100%;
      height: 70rpx;
      position: absolute;
      bottom: 0;
      left: 0;
      background: rgba(0,0,0,0.2);
      color: #fff;
      display: flex;
      align-items: center;
      justify-content: center;
      backdrop-filter: blur(5rpx);
      font-weight: 600;
      font-size: 30rpx;
    }
    .tab {
      position: absolute;
      left: 0;
      top: 0;
      background: rgba(250, 129, 90, 0.7);
      backdrop-filter: blur(20rpx);
      color: #fff;
      font-size: 22rpx;
      padding: 6rpx 14rpx;
      border-radius: 0 0 20rpx 0;
      transform: scale(0.8);
      transform-origin: left top;
    }
  }
}

三、交互设计

  1. navigator组件:用于实现页面跳转。
  2. url属性:定义跳转的目标地址。

四、响应式设计

  1. rpx单位:用于实现响应式布局,适应不同屏幕尺寸。

五、性能优化

  1. backdrop-filter:在不影响性能的前提下,为元素添加视觉效果。

总结

通过本文的详细解析,我们深入了解了uni-app专题组件的构建过程,包括模板结构、样式设计、交互设计、响应式设计和性能优化等多个方面。每个知识点都通过生动的例子进行了解释,帮助初学者快速掌握uni-app开发的关键技能。希望本文能为你的前端开发之旅提供有价值的参考。


附录:代码注释

<template>
  <!-- 根元素,定义了一个名为themeItem的视图 -->
  <view class="themeItem">
    <!-- navigator组件,用于定义页面内的导航链接,class为box,方便后续样式定义 -->
    <navigator url="" class="box">
      <!-- image组件,用于显示图片,class为pic,src属性定义图片路径,mode定义图片填充模式 -->
      <image class="pic" src="../../common/image/5.jpg" mode="aspectFill"></image>
      <!-- 遮罩层视图,用于在图片上覆盖文本,class为mask -->
      <view class="mask">初音</view>
      <!-- 标签视图,用于显示更新时间,class为tab -->
      <view class="tab">3天前更新</view>
    </navigator>
  </view>
</template>

<script setup>
  // JavaScript逻辑,这里为空,因为使用了setup语法糖
  // setup是Vue 3的一个编译时语法糖,用于在组件中使用Composition API
</script>

<style lang="scss" scoped>
  // 定义了名为themeItem的样式作用域,scoped属性确保样式只作用于当前组件
  .themeItem {
    // 定义了.box类,用于给navigator组件添加样式
    .box {
      // 设置高度为340rpx,rpx是响应式像素单位,可以根据屏幕宽度变化
      height: 340rpx;
      // 设置圆角为10rpx
      border-radius: 10rpx;
      // 设置溢出内容为隐藏
      overflow: hidden;
      // 设置定位为相对定位,作为绝对定位子元素的参考点
      position: relative;
      // 定义了.pic类,用于给image组件添加样式
      .pic {
        // 图片宽度设置为100%,占据父容器的全部宽度
        width: 100%;
        // 图片高度设置为100%,占据父容器的全部高度
        height: 100%;
      }
      // 定义了.mask类,用于给遮罩层添加样式
      .mask {
        // 设置宽度为100%,占据父容器的全部宽度
        width: 100%;
        // 设置高度为70rpx
        height: 70rpx;
        // 设置定位为绝对定位,相对于最近的相对定位或绝对定位的祖先元素定位
        position: absolute;
        // 设置底部边距为0,紧贴父容器底部
        bottom: 0;
        // 设置左侧边距为0,紧贴父容器左侧
        left: 0;
        // 设置背景颜色为半透明黑色
        background: rgba(0,0,0,0.2);
        // 设置文本颜色为白色
        color: #fff;
        // 使用flex布局,使得子元素可以灵活排列
        display: flex;
        // 设置垂直居中对齐
        align-items: center;
        // 设置水平居中对齐
        justify-content: center;
        // 设置背景模糊效果
        backdrop-filter: blur(5rpx);
        // 设置字体加粗
        font-weight: 600;
        // 设置字体大小
        font-size: 30rpx;
      }
      // 定义了.tab类,用于给更新时间标签添加样式
      .tab {
        // 设置定位为绝对定位
        position: absolute;
        // 设置左侧边距为0,紧贴父容器左侧
        left: 0;
        // 设置顶部边距为0,紧贴父容器顶部
        top: 0;
        // 设置背景颜色为半透明橙色
        background: rgba(250, 129, 90, 0.7);
        // 设置背景模糊效果
        backdrop-filter: blur(20rpx);
        // 设置文本颜色为白色
        color: #fff;
        // 设置字体大小
        font-size: 22rpx;
        // 设置内边距
        padding: 6rpx 14rpx;
        // 设置左下角圆角为20rpx
        border-radius: 0 0 20rpx 0;
        // 设置缩放效果,scale(0.8)表示缩小到原来的80%
        transform: scale(0.8);
        // 设置变换的基点为左上角
        transform-origin: left top;
      }
    }
  }
</style>

🌼那么今天就到这里吧!
▲后续会陆续跟新vue系列。再后来会逐渐成熟,向大家展现更简洁明了的知识汇总!

一个小小的赞是对我最大的鼓励!
感谢你们看到这里,下次见~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Reuuse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值