【前端】Vue实现网站导航 以卡片形式显示(附Demo)

news2024/11/26 2:53:59

目录

  • 前言
  • 1. html版本
  • 2. Vue
    • 2.1 Demo1
    • 2.2 Demo2

前言

单独做一个跳转页面推荐阅读:【前端】实现Vue组件页面跳转的多种方式

但是如果网站多了,推荐卡片式导航,具体可看下文:(以图片显示显示各个网站,图片需要内嵌)
在这里插入图片描述

1. html版本

其实html版本和Vue相差不了多少,只是排版问题而已

这一版主要是卡片形式,但是没有嵌入图片,嵌入图片加个位置即可:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue Website Navigation</title>
  <!-- 引入Vue.js -->
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
  <style>
    /* 样式可以根据您的需求进行自定义 */
    .websites {
      display: flex;
      flex-wrap: wrap;
      justify-content: flex-start;
      align-items: flex-start;
    }
    .website-card {
      width: calc(33.33% - 20px); /* 计算每个卡片宽度 */
      padding: 20px;
      margin: 10px;
      border: 1px solid #ccc;
      cursor: pointer;
    }
  </style>
</head>
<body>

<div id="app">
  <!-- 常用网站导航 -->
  <div class="websites">
    <div
      class="website-card"
      v-for="(site, index) in websites"
      :key="index"
      @click="openWebsite(site.url)"
    >
      {{ site.name }}
    </div>
  </div>
</div>

<script>
  // 创建Vue实例
  new Vue({
    el: '#app', // 指定挂载点
    data: { // 数据
      websites: [
        { name: 'Google', url: 'https://www.google.com' },
        { name: 'GitHub', url: 'https://github.com' },
        { name: 'Stack Overflow', url: 'https://stackoverflow.com' }
      ]
    },
    methods: { // 方法
      openWebsite(url) {
        window.open(url);
      }
    }
  });
</script>

</body>
</html>

2. Vue

以下版本会由浅入深,相应修改

2.1 Demo1

卡片形式存在,但没有嵌入图片形式:

<template>
  <div class="websites">
    <div
      class="website-card"
      v-for="(site, index) in websites"
      :key="index"
      @click="openWebsite(site.url)"
    >
      {{ site.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      websites: [
        { name: 'Google', url: 'https://www.google.com' },
        { name: 'GitHub', url: 'https://github.com' },
        { name: 'Stack Overflow', url: 'https://stackoverflow.com' }
        // 在这里添加更多的网站
      ]
    };
  },
  methods: {
    openWebsite(url) {
      window.open(url);
    }
  }
};
</script>

<style scoped>
/* 样式可以根据您的需求进行自定义 */
.websites {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: flex-start;
}
.website-card {
  width: calc(33.33% - 20px); /* 计算每个卡片宽度 */
  padding: 20px;
  margin: 10px;
  border: 1px solid #ccc;
  cursor: pointer;
}
</style>

如果嵌入图片,完整版如下(对应的网站可以修改为本项目路径等,通过request进行请求):

<template>
  <div class="websites">
    <div
      class="website-card"
      v-for="(site, index) in websites"
      :key="index"
      @click="openWebsite(site.url)"
    >
      <img :src="site.image" alt="Website Logo" class="website-image">
      <span>{{ site.name }}</span>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      websites: [
        { name: 'Google', url: 'https://www.google.com', image: 'https://via.placeholder.com/150', },
        { name: 'GitHub', url: 'https://github.com', image: 'https://via.placeholder.com/150', },
        { name: 'Stack Overflow', url: 'https://stackoverflow.com', image: 'https://via.placeholder.com/150', }
        // 在这里添加更多的网站
      ]
    };
  },
  methods: {
    openWebsite(url) {
      window.open(url);
    }
  }
};
</script>

<style scoped>
/* 样式可以根据您的需求进行自定义 */
.websites {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: flex-start;
}
.website-card {
  width: calc(33.33% - 20px); /* 计算每个卡片宽度 */
  padding: 20px;
  margin: 10px;
  border: 1px solid #ccc;
  cursor: pointer;
  text-align: center;
}
.website-image {
  width: 100px; /* 图片宽度 */
  height: auto; /* 自动调整高度 */
  margin-bottom: 10px;
}
</style>

2.2 Demo2

以上代码图片可能居中,或者样式不够优美

可以适当让图片填充式的方式拉满整个卡片

<template>
  <div class="websites">
    <div
      class="website-card"
      v-for="(site, index) in websites"
      :key="index"
      @click="openWebsite(site.url)"
    >
      <div class="website-image">
        <img :src="site.image" alt="Website Logo">
      </div>
      <div class="website-details">
        <span class="website-name">{{ site.name }}</span>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      websites: [
        { name: 'Google', url: 'https://www.google.com', image: 'https://via.placeholder.com/150', },
        { name: 'GitHub', url: 'https://github.com', image: 'https://via.placeholder.com/150', },
        { name: 'Stack Overflow', url: 'https://stackoverflow.com', image: 'https://via.placeholder.com/150', }
        // 在这里添加更多的网站
      ]
    };
  },
  methods: {
    openWebsite(url) {
      window.open(url);
    }
  }
};
</script>

<style scoped>
/* 样式可以根据您的需求进行自定义 */
.websites {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  align-items: flex-start;
}
.website-card {
  width: calc(33.33% - 20px); /* 设置每个卡片的宽度 */
  margin: 10px; /* 设置外边距 */
  border: 1px solid #ccc; /* 设置边框 */
  cursor: pointer;
  overflow: hidden;
  text-align: center;
  display: flex;
  flex-direction: column;
}
.website-image {
  flex: 1;
  overflow: hidden;
}
.website-image img {
  width: 100%; /* 图片宽度充满整个卡片 */
  height: auto;
}
.website-details {
  padding: 10px;
}
.website-name {
  font-weight: bold;
}
</style>

使用了Flexbox布局

  • .website-card设置为display: flex;,以确保图片和文字在垂直方向上布局良好

  • .website-image部分设置为flex: 1;,以充满剩余的空间,并通过设置overflow: hidden;来确保图片不会超出卡片

  • .website-details部分包含了文字内容,并添加了一些样式来调整字体加粗等

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

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

相关文章

【安装记录】安装 netperf 和 perf

这是一篇发疯随笔X.X 我的环境是虚拟机debian12&#xff0c;出于种种原因&#xff0c;之前直接使用apt-get install netperf apt-get install perf指令直接安装&#xff0c;报错找不到包 然后上网搜了一堆教程&#xff0c;有说下载netperf源码编译的&#xff0c;那些教程里面有…

sheng的学习笔记-docker部署数据库oracle,mysql

部署目录&#xff1a;sheng的学习笔记-部署-目录-CSDN博客 docker基础知识可参考 sheng的学习笔记-docker部署&#xff0c;原理图&#xff0c;命令&#xff0c;用idea设置docker docker安装数据库 mac版本 安装oracle 下载oracle镜像 打开终端&#xff0c;输入 docker s…

社区团购系统-UMLChina建模知识竞赛第5赛季第6轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题&#xff0c;即可获得本轮优胜。 如果有第4题&#xff0c;第4题为附加题&am…

【JMX】JAVA监控的基石

目录 1.概述 2.MBean 2.1.Standard MBean 2.2.Dynamic MBean 2.3.Model Bean 2.4.Dynamic MBean和Model Bean的区别 2.5.MXBean 2.6.Open Bean 3.控制台 1.概述 什么是JMX&#xff0c;首先来看一段对话&#xff1a; Java Management Extensions&#xff08;JMX&#…

猫头虎分享已解决Bug || 日志文件过大(Log File Oversize):LogFileOverflow, ExcessiveLoggingError

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

C++构造和折构函数详解,超详细!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家龙年好呀&#xff0c;今天我们来学习一下C构造函数和折构函数。 文章目录 1.构造函数 1.1构造函数的概念 1.2构造函数的思想 1.3构造函数的特点 1.4构造函数的作用 1.5构造函数的操作 1.6构造函数…

电子电器架构 —— 对车载软件开发新阶段的愿景

电子电器架构 —— 对车载软件开发新阶段的愿景 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝…

使用C++从零开始,自己写一个MiniWeb

第一步&#xff1a;新建项目 1、打开VS点击创建新项目 2、选择空项目并点下一步&#xff08;切记不能选错项目类型&#xff09; 3、填写项目名称和路径&#xff0c;点击创建即可 新建好后项目是这样的比较干净 4、右击源文件&#xff0c;点击添加&#xff0c;新建http.cpp文件…

【华为云】容灾方案两地三中心实践理论

应用上云之后&#xff0c;如何进行数据可靠性以及业务连续性的保障是非常关键的&#xff0c;通过华为云云上两地三中心方案了解相关方案认证地址&#xff1a;https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiXCBUCNXI057Self-paced/about当前内容为灾备常见理论…

代码随想录 Leetcode55. 跳跃游戏

题目&#xff1a; 代码(首刷自解 2024年2月9日&#xff09;&#xff1a; class Solution { public:bool canJump(vector<int>& nums) {int noz 0;for (int i nums.size() - 2; i > 0; --i) {if (nums[i] 0) {noz;continue;} else {if (nums[i] > noz) noz …

【Java八股面试系列】JVM-class文件结构

Class文件结构总结 根据 Java 虚拟机规范&#xff0c;Class 文件通过 ClassFile 定义&#xff0c;有点类似 C 语言的结构体。我们之前都是使用javap命令来对字节码文件进行反编译查看的&#xff0c;我们可以使用WinHex软件&#xff08;Mac平台可以使用010 Editor&#xff09;来…

假期day7

设计qq界面 代码 ui->lab1->setPixmap(QPixmap(":/pictrue/denglu.webp"));ui->lab1->setScaledContents(true);ui->lab2->setPixmap(QPixmap(":/pictrue/passwd.jpg"));ui->lab2->setScaledContents(true);ui->lab3->setP…

Elasticsearch:使用查询规则(query rules)进行搜索

在之前的文章 “Elasticsearch 8.10 中引入查询规则 - query rules”&#xff0c;我们详述了如何使用 query rules 来进行搜索。这个交互式笔记本将向你介绍如何使用官方 Elasticsearch Python 客户端来使用查询规则。 你将使用 query rules API 将查询规则存储在 Elasticsearc…

Java奠基】对象数组练习

目录 商品对象信息获取 商品对象信息输入 商品对象信息计算 商品对象信息统计 学生数据管理实现 商品对象信息获取 题目要求是这样的&#xff1a; 定义数组存储3个商品对象。 商品的属性&#xff1a;商品的id&#xff0c;名字&#xff0c;价格&#xff0c;库存。 创建三个…

Pytorch卷积层原理和示例 nn.Conv1d卷积 nn.Conv2d卷积

内容列表 一&#xff0c;前提 二&#xff0c;卷积层原理 1.概念 2.作用 3. 卷积过程 三&#xff0c;nn.conv1d 1&#xff0c;函数定义&#xff1a; 2, 参数说明: 3,代码: 4, 分析计算过程 四&#xff0c;nn.conv2d 1, 函数定义 2, 参数&#xff1a; 3, 代码 4, 分析计算过程 …

Netty应用(七) 之 Handler Netty服务端编程总结

目录 15.Handler 15.1 handler的分类 15.1.1 按照方向划分 15.1.2 handler的结构 15.2 输入方向ChannelInboundHandlerAdapter 15.2.1 输出方向Handler的顺序 15.2.2 多个输入方向Handler之间的数据传递 15.2.2.1 handler消失了 15.2.2.2 手动编写netty提供的new Strin…

一个查看armv8系统寄存器-值-含义的方式

找到解压后的SysReg_xml_v86A-2019-12目录 wget https://developer.arm.com/-/media/developer/products/architecture/armv8-a-architecture/2019-12/SysReg_xml_v86A-2019-12.tar.gz wget https://developer.arm.com/-/media/developer/products/architecture/armv8-a-archi…

(已解决)将overleaf上的文章paper上传到arxiv上遇到的问题。

文章目录 前言初级问题后续问题 前言 首先说一点&#xff0c;将paper的pdf文件直接上传arxiv是不行的&#xff0c;arxiv要求我们要上传源文件&#xff0c;所以才这么麻烦。 初级问题 首先上传文件之后有可能会在下面这个界面出现问题&#xff0c;这里一般都比较常见的问题&a…

『运维备忘录』之 HTTP 响应状态码速查

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

java学习07---综合练习

飞机票 1.需求: 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 按照如下规则计算机票价格&#xff1a;旺季&#xff08;5-10月&#xff09;头等舱9折&#xff0c;经济舱8.5折&#xff0c;淡季&#xff08;11月到来年4月&#xff09;头等舱7…