【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.6-3.10)

本文档记录了使用Vue.js和Node.js全栈开发王者荣耀手机端官网及管理后台的过程,包括主页框架、顶部菜单、Swiper轮播图、精灵图应用、字体图标以及卡片组件的实现。项目源码托管在Gitee,并持续更新。
摘要由CSDN通过智能技术生成

【全栈之巅】Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台学习笔记(3.6-3.10)

本项目是 学习Bilibili 全栈之巅 视频教程相关源码和体会
https://gitee.com/blaunicorn/node-vue-wangzherongyao
持续更新中…

3.6 web页面主页框架和顶部菜单

vue add router //增加路由
// web\src\views\Main.vue
<template>
  <div>
    <div class="topbar bg-black py-2 text-white px-3 d-flex ai-center">
      <img src="../assets/logo.png" height="30" alt="" sizes="" srcset="" />
      <!-- 用flex-1去占据全部的剩余空间 -->
      <div class="px-2 flex-1">
        <div class="text-white">王者荣耀</div>
        <div class="text-dark-1">团队成就更多</div>
      </div>
      <button type="button" class="btn bg-primary jc-end">立即下载</button>
    </div>
    <div class="bg-primary pt-3 pb-2">
      <!-- 增加反色nav-inverse,去掉d-flex text-white -->
      <div class="nav nav-inverse jc-around pb-1">
        <div class="nav-item active">
          <router-link class="nav-link" to="/" tag="div">首页</router-link>
        </div>
        <div class="nav-item">
          <router-link class="nav-link" to="/about" tag="div"
            >攻略中心</router-link
          >
        </div>
        <div class="nav-item">
          <router-link class="nav-link" to="/" tag="div">赛事中心</router-link>
        </div>
      </div>
    </div>
    <!-- 所有子路由入口 -->
    <router-view></router-view>
  </div>
</template>

<script>
  export default {};
</script>

<style>
</style>

3.7 web页面swiper

npm install vue-awesome-swiper --save
// web\src\views\Home.vue
// template
    <swiper ref="mySwiper" :options="swiperOptions">
      <swiper-slide>
        <img
          class="w-100"
          src="../assets/images/201.jpeg"
          alt=""
          sizes=""
          srcset=""
        />
      </swiper-slide>
      <swiper-slide>
        <img
          class="w-100"
          src="../assets/images/202.jpeg"
          alt=""
          sizes=""
          srcset=""
        />
      </swiper-slide>
      <div
        class="swiper-pagination pagination-home text-right px-3 pb-2"
        slot="pagination"
      ></div>
    </swiper>
    ...
// js
// 自动播放 点击选择
        swiperOptions: {
          slidesPerView: 1,
          autoplay: {
            disableOnInteraction: false,
            delay: 1000,
          },
          pagination: {
            el: '.swiper-pagination',
            clickable: true,
          },

3.8 web页面使用精灵图

// sprite 
// web\src\style\index.scss
.sprite {
    background: url(../assets/images/index.png) no-repeat 0 0;
    // 一般双倍像素设计
    background-size: 28.846154rem;
    // 要设置宽高必须用 inline-block
    display: inline-block;
    // spritecow.com网站 可以自动定位雪碧图
    &.sprite-news {
    width: 1.769231rem;
	height: 1.538462rem;
    background-position: 63.546% 15.517%;
    }
    &.sprite-arrow {
    width: .769231rem;
	height: .769231rem;
    background-position: 38.577% 52.076%;
    }
    &.sprite-news {
    width: 1.769231rem;
	height: 1.538462rem;
    background-position: 63.546% 15.517%;
    }
    &.sprite-practice {
    width: 1.7692rem;
    height: 1.5385rem;
    background-position: 90.483% 15.614%;
  }
  &.sprite-affair {
    background-position: 36.746% 0.924%;
    width: 1.4615rem;
    height: 1.6923rem;
  }
  &.sprite-mall {
    background-position: 10.408% 15.517%;
    width: 1.5385rem;
    height: 1.5385rem;
    border: none;
  }
  &.sprite-start {
    background-position: 89.733% 1.266%;
    width: 1.5385rem;
    height: 1.6154rem;
  }
  &.sprite-honour {
    background-position: 36.467% 15.287%;
    width: 1.8462rem;
    height: 1.5385rem;
  }
  &.sprite-community {
    background-position: 9.728% 1.266%;
    width: 2rem;
    height: 1.6154rem;
  }
  &.sprite-base {
    margin-top: -3px;
    background-position: 63.3% 0.927%;
    width: 1.8462rem;
    height: 1.8462rem;
  }
  &.sprite-echart {
    background-position: 0 96.207%;
    width: 1.8462rem;
    height: 1.5385rem;
  }
  &.sprite-edition {
    background: url(../assets/images/version-icon.png) no-repeat -1px 0px;
    background-size: 100% 100%;
    width: 1.8462rem;
    height: 1.8462rem;
  }
}
// 精灵图的收起和展开
        <div
          class="bg-light py-2 fs-sm;"
          style="width: 100%"
          @click="switchActive"
        >
          <i
            class="sprite sprite-arrow mr-1"
            :style="{ transform: isCollapse ? 'rotate(180deg)' : '' }"
          ></i>
          <span class="retract">{{ isCollapse ? '收起' : '展开' }}</span>
        </div>

3.9 web页面字体图标

https://www.iconfont.cn/ 选择图标,下载代码压缩包,解压之

import './assets/iconfont/iconfont.css'
<i class="iconfont icon-news text-primary"></i>

3.10 web页面卡片容器并调整为组件字体图标

所有的新闻资讯、英雄列表都可以变成一个卡片包装

// web\src\main.js 全局引入,也可局部引入

import './assets/iconfont/iconfont.css'

<i class="iconfont icon-news text-primary"></i>
// components/Card.vue
<template>
  <div class="card mt-3 p-3 bg-white">
    <div class="card-header d-flex ai-center pb-3">
      <i class="iconfont" :class="`icon-${icon}`" style="color: deeppink"></i>
      <div class="fs-xl flex-1 px-2">{{ title }}</div>
      <i class="iconfont icon-menu"></i>
    </div>
    <div class="card-body pt-3">
      <!-- 使用插槽功能,展示父组件的内容 -->
      <slot></slot>
    </div>
  </div>
</template>

<script>
  export default {
    // 父子组件传值
    props: {
      title: {
        type: String,
        required: true,
        default: '',
      },
      icon: {
        type: String,
        required: true,
        default: '',
      },
    },
  };
</script>

<style lang="scss">
  @import '../style/_variables.scss';
  .card {
    border-bottom: 1px solid $border-color;
    .card-header {
      border-bottom: 1px solid $border-color;
    }
  }
</style>

card组件的引入,有两种方式,全局引入、局部引入

// 如果全局引用组件
// web\src\main.js
import Card from './components/Card.vue'
Vue.component('a-card', Card)
// 如果局部引入组件
// web\src\views\Home.vue
</template>
  <div>
    <a-card icon="caidananniudianji" title="新闻资讯-全局组件"></a-card>
    <m-card icon="caidananniudianji" title="图文攻略"></m-card>
  </div>
</template>
<script>
  // @ is an alias to /src
  import Card from '../components/Card';
  export default {
    name: 'Home',
    components: { 'm-card': Card },
    ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值