移动端网页开发(一)

article/2025/11/7 4:15:56

一、项目代码初始化

1.打开index.html将<meta></meta>标签补充完整

<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"><title>tourism_website</title></head><body><div id="app"></div><!-- built files will be auto injected --></body>
</html>//将<meta>标签补充完善,页面比例1:1

2.引入asset.css(重置样式样式表)文件:

把不同手机的初始化设置进行统一

步骤:在src目录下 asset目录下建一个style的文件夹,将asset.css放入其中---->在项目入口文件main.js中引入该样式表

import './assets/style/reset.css'

3.引入border.css():

解决移动端1像素边框问题,解决多倍屏当中1像素边框变成多像素边框,需要引入一个1像素边框的解决方案。

import './assets/style/border.css'

 4.解决移动端300毫秒点击延迟的问题

在某些机型上或者某些浏览器开发时,使用Click事件会延迟300毫秒才会执行,会影响项目体验效果。

解决方案:在项目中安装一个第三方模块fastclick

npm install fastclick --save
// 把fastclick这个包安装到项目依赖中,--save表示不管在开发环境中或者打包在线上环境中,代码都需要使用fastclick

安装过程中windows会提示出现警告,不过不影响使用可以先不用管。安装完成后,需要在main.js进行引入

 

import fastClick from 'fastclick'

引入后即可使用fastClick下面的方法解决300毫秒点击延迟问题

fastClick.attach(document.body)

 二、iconfont(阿里巴巴矢量图标库)

Iconfont-国内功能很强大且图标内容很丰富的矢量图标库,提供矢量图标下载、在线存储、格式转换等功能。阿里巴巴体验团队倾力打造,设计和前端开发的便捷工具 。

进入Iconfont官网进行注册,进入项目管理。创建项目填写相关信息会看到下面的样子。

 

 三、项目首页-header区域开发

1.使用stylus插件

Stylus是一款能改变网站样式的样式管理器,该插件主要能将他人提供的网页样式或自己编写的样式安装在网页中,在不改变网页整体布局的情况下将其变成使用者需要的样子。在安装了该插件后,使用者可以在插件提供的网站上下载其他网站的样式进行安装,也可以自己编写一些样式代码来调整网页,若是这些样式在安装后出现了一些问题,还可以直接通过插件的选项窗口来管理或一键禁用这些样式。

$ npm install stylus --save
$ npm install stylus-loader --save

 2.页面组件化:将一个复杂的页面拆分成一个个小组件

对于home(主页)这个页面来说,Home.vue对应的是最外层的容器组件,它可以被拆分成小组件由它来帮助我们整合成一个页面。我们把拆分出来的每一部分小组件放到components目录下。例如:本项目将主页拆成HomeHeader(header区域)等组件

这里需要考虑一个问题Q:如何在Home组件中使用HomeHeader组件呢?

A:在Home组件下引入HomeHeader,并在输出中声明子组件

<template><div><home-header></home-header>  //3.子组件的使用(Vue中子组件的使用会自动转换成小写字母)</div>
</template><script>import HomeHeader from './components/Header'   //1.引入子组件
export default{name: 'Home',components:{     //2.声明子组件HomeHeader}
}
</script><style>
</style>

拆分完毕后,可以针对于每个子组件调整样式。

PS:设计样式中常见的几个问题:

1. 移动端高度、宽度等都使用rem为单位,而设计图中给出的都是2倍屏的px为单位。注意进制转换:1 rem = html font-size = 50 px

2.在style中进行样式设置时,为了防止该组件的样式对其他样式产生影响,需要使用scoped关键字进行限制

<template><div class="header"><div class="header-left"></div><div class="header-input"></div><div class="header-right"></div></div>
</template><script>
export default{name: 'HomeHeader'
}
</script><style lang="stylus" scoped="scoped">  // scoped关键字进行限制 只对当前组件有效
.headerheight: .86rem
</style>

 3.在stylus中使用变量

在src -->assets-->style-->创建一个文件varibles.styl(全局变量的文件)该文件可写入一些全局变量的定义

然后在子组件Header样式中引入该全局变量(便于调整全局颜色修改,提高了项目可维护性)

注意:

1.在样式中引入样式需要加上@符号

2.由于src目录可以用@符号代替,但在样式中引用src路径,前面需要加上~

//两种引入全局变量的写法@import '../../../assets/style/varibles.styl'   
//@import '~@/assets/style/varibles.styl'

 3.给不同目录起别名(例如:scr目录就可以用@符号代替)

打开 build -->webpack.base.config.js

resolve下面的别名项alias可以用来起别名

resolve: {extensions: ['.js', '.vue', '.json'],alias: {'vue$': 'vue/dist/vue.esm.js','@': resolve('src'),'style': resolve('src/assets/styles'),   //给src/assets/styles起别名为style}},

四、首页轮播图 

1.制作轮播图需要使用vue-awesome-swiper

可在gitup官网上找到vue-awesome-swiper进行安装,引用,创造实例等。

//安装
npm install vue-awesome-swiper@2.6.7 --save
//全局main.js中引入该组件
import Vue from 'vue'
import VueAwesomeSwiper from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
//使用插件
Vue.use(VueAwesomeSwiper,//参数)

2.创建Swiper.vue

<template><div class="wrapper"><!-- <swiper :options="swiperOption" > -->//在Gitup上粘贴SPA模板中的代码写入Swiper.vue<swiper><!-- slides --><swiper-slide>I'm Slide 1</swiper-slide><swiper-slide>I'm Slide 2</swiper-slide><swiper-slide>I'm Slide 3</swiper-slide><swiper-slide>I'm Slide 4</swiper-slide><swiper-slide>I'm Slide 5</swiper-slide><swiper-slide>I'm Slide 6</swiper-slide><swiper-slide>I'm Slide 7</swiper-slide><!-- Optional controls --><div class="swiper-pagination"  slot="pagination"></div>  //用于显示分页的小点<div class="swiper-button-prev" slot="button-prev"></div> //用于显示轮播左侧按钮<div class="swiper-button-next" slot="button-next"></div> //用于显示轮播右侧按钮<div class="swiper-scrollbar"   slot="scrollbar"></div>   //用于显示分页进度条</swiper></div>
</template><script>
export default{name: 'HomeSwiper',data () {return {swiperOption: {pagination: '.swiper-pagination'   //传递具体的class用于显示具体是几个轮播}}}
}
</script><style lang="stylus" scoped="scoped"></style>

3.注意的问题

(1)使用循环实现图片的轮播 

<swiper :options="swiperOption"><swiper-slide v-for="item of swiperList" :key="item.id"><img class="swiper-img" :src="item.imgUrl" />
</swiper-slide><script>
export default{name: 'HomeSwiper',data () {return {swiperOption: {pagination: '.swiper-pagination'},swiperList: [{id: '0001',imgUrl: '../../../assets/style/img/轮播素材1.png'}, {id: '0002',imgUrl: '../../../assets/style/img/轮播素材2.png'}]}}
}
</script> 

Swiper.vue完整代码

<template><div class="wrapper"><swiper :options="swiperOption"><swiper-slide v-for="item of swiperList" :key="item.id"><img class="swiper-img" :src="item.imgUrl" /></swiper-slide><div class="swiper-pagination"  slot="pagination"></div><!-- <div class="swiper-button-prev" slot="button-prev"></div> //控制左右箭头<div class="swiper-button-next" slot="button-next"></div><div class="swiper-scrollbar"   slot="scrollbar"></div>  //设置滚动条 --></swiper></div>
</template>
<script>
export default{name: 'HomeSwiper',data () {return {swiperOption: {pagination: '.swiper-pagination',loop: true},swiperList: [{id: '0001',imgUrl: '../../../assets/style/img/轮播素材1.png'}, {id: '0002',imgUrl: '../../../assets/style/img/轮播素材2.png'}]}}
}
</script>
<style lang="stylus" scoped="scoped">
.swiper-imgwidth: 100%
</style>

五、图标区域

1.图标区域页面布局

新建Icons.vue

<template><div class="icons"><swiper><swiper-slide><div class="icon"><div class="icon-img"><img class="icon-img-content" src="../../../../build/logo.png"></div><p class="icon-desc">热门景点</p></div></swiper-slide><swiper-slide><div class="icon"><div class="icon-img"><img class="icon-img-content" src="../../../../build/logo.png"></div><p class="icon-desc">热门景点</p></div></swiper-slide></swiper></div></template>
<script>
export default{name: 'HomeIcons'
}
</script>
<style lang="stylus" scoped>
@import '../../../assets/style/varibles.styl'
.icons >>> .swiper-containeroverflow: hiddenheight: 0padding-bottom: 50%
.iconposition: relativeoverflow: hiddenfloat: leftwidth: 25%height: 0padding-bottom: 25%.icon-imgposition: absolutetop: 0left: 0right: 0bottom: .44rembox-sizing: border-boxpadding: .1rem.icon-img-contentdisplay: blockmargin: 0 autoheight: 100%.icon-descposition: absoluteleft: 0right: 0bottom: 0height: .44remline-height: .44remtext-align: centercolor: $darkTextColor
</style>

varibled.styl

$bgColor = #00bcd4
$darkTextColor = #333

2.图标区域逻辑实现

<template><div class="icons"><swiper><swiper-slide><div class="icon" v-for="item of iconList" :key="item.id"><div class="icon-img"><img class="icon-img-content" src='https://picbed.qunarzz.com/1316dc82d1ce6259686d5a68880e5a9d.png'></div><p class="icon-desc">{{item.desc}}</p></div></swiper-slide></swiper></div>
</template>
<script>
export default{name: 'HomeIcons',data () {return {iconList: [{id: '0001',imgUrl: 'https://picbed.qunarzz.com/1316dc82d1ce6259686d5a68880e5a9d.png',desc: '热门景点'}, {id: '0002',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '汽车票'}, {id: '0003',imgUrl: 'https://picbed.qunarzz.com/ae617a31e0bd5803d76918b817f6d942.png',desc: '自由行'}, {id: '0004',imgUrl: 'https://picbed.qunarzz.com/f5e5770393d759578962e53ee67798c8.png',desc: '海外酒店'}, {id: '0005',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '汽车票'}, {id: '0006',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '汽车票'}, {id: '0007',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '汽车票'}, {id: '0008',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '汽车票'}, {id: '0009',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '汽车票'}]}}
}
</script>
<style lang="stylus" scoped>
@import '../../../assets/style/varibles.styl'
.icons >>> .swiper-containeroverflow: hiddenheight: 0padding-bottom: 50%
.icon-imgposition: absolutetop: 0left: 0right: 0bottom: .44rembox-sizing: border-boxpadding: .1rem.icon-img-contentdisplay: blockmargin: 0 autoheight: 100%.icon-descposition: absoluteleft: 0right: 0bottom: 0height: .44remline-height: .44remtext-align: centercolor: $darkTextColor
</style>

 

 

<template><div class="icons"><swiper><swiper-slide><div class="icon" v-for="item of iconList" :key="item.id"><div class="icon-img"><img class="icon-img-content" :src="item.imgUrl"></div><p class="icon-desc">{{item.desc}}</p></div></swiper-slide></swiper></div></template>
<script>
export default{name: 'HomeIcons',data () {return {iconList: [{id: '0001',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}, {id: '0002',imgUrl: 'https://picbed.qunarzz.com/1316dc82d1ce6259686d5a68880e5a9d.png',desc: '热门景点'}, {id: '0003',imgUrl: 'https://picbed.qunarzz.com/ae617a31e0bd5803d76918b817f6d942.png',desc: '汽车船票'}, {id: '0004',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '海外酒店'}, {id: '0005',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}, {id: '0006',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}, {id: '0007',imgUrl: 'https://picbed.qunarzz.com/1316dc82d1ce6259686d5a68880e5a9d.png',desc: '热门景点'}, {id: '0008',imgUrl: 'https://picbed.qunarzz.com/ae617a31e0bd5803d76918b817f6d942.png',desc: '自由行'}, {id: '0009',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '海外酒店'}, {id: '0010',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}]}}
}
</script>
<style lang="stylus" scoped>
@import '../../../assets/style/varibles.styl'
.icons >>> .swiper-containeroverflow: hiddenheight: 0padding-bottom: 50%
.iconposition: relativeoverflow: hiddenfloat: leftwidth: 25%height: 0padding-bottom: 25%.icon-imgposition: absolutetop: 0left: 0right: 0bottom: .44rembox-sizing: border-boxpadding: .1rem.icon-img-contentdisplay: blockmargin: 0 autoheight: 100%.icon-descposition: absoluteleft: 0right: 0bottom: 0height: .44remline-height: .44remtext-align: centercolor: $darkTextColor
</style>

  实现多页切换

<template><div class="icons"><swiper><swiper-slide v-for="(page, index) of pages" :key="index"><div class="icon" v-for="item of page" :key="item.id"><div class="icon-img"><img class="icon-img-content" :src="item.imgUrl"></div><p class="icon-desc">{{item.desc}}</p></div></swiper-slide></swiper></div></template>
<script>
export default{name: 'HomeIcons',data () {return {iconList: [{id: '0001',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}, {id: '0002',imgUrl: 'https://picbed.qunarzz.com/1316dc82d1ce6259686d5a68880e5a9d.png',desc: '热门景点'}, {id: '0003',imgUrl: 'https://picbed.qunarzz.com/ae617a31e0bd5803d76918b817f6d942.png',desc: '汽车船票'}, {id: '0004',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '海外酒店'}, {id: '0005',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}, {id: '0006',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}, {id: '0007',imgUrl: 'https://picbed.qunarzz.com/1316dc82d1ce6259686d5a68880e5a9d.png',desc: '热门景点'}, {id: '0008',imgUrl: 'https://picbed.qunarzz.com/ae617a31e0bd5803d76918b817f6d942.png',desc: '自由行'}, {id: '0009',imgUrl: 'https://picbed.qunarzz.com/377db8cb2143aebf01869c9baad3d325.png',desc: '海外酒店'}, {id: '0010',imgUrl: 'https://imgs.qunarzz.com/p/p66/201304/17/384810d022dd28f793835fbb.jpg_256x160_6a7ec251.jpg',desc: '景点门票'}]}},computed: {pages () {const pages = []this.iconList.forEach((item, index) => {const page = Math.floor(index / 8)if (!pages[page]) {pages[page] = []}pages[page].push(item)})return pages}}
}
</script>
<style lang="stylus" scoped>
@import '../../../assets/style/varibles.styl'
.icons >>> .swiper-containeroverflow: hiddenheight: 0padding-bottom: 50%
.iconposition: relativeoverflow: hiddenfloat: leftwidth: 25%height: 0padding-bottom: 25%.icon-imgposition: absolutetop: 0left: 0right: 0bottom: .44rembox-sizing: border-boxpadding: .1rem.icon-img-contentdisplay: blockmargin: 0 autoheight: 100%.icon-descposition: absoluteleft: 0right: 0bottom: 0height: .44remline-height: .44remtext-align: centercolor: $darkTextColor
</style>

ps:汉字太长 显示' ... '使用到的CSS样式

overflow :hidden
white-space :nowrap
text-overflow :ellipsis
//可以使用stylus封装

 


http://chatgpt.dhexx.cn/article/WAIqeL4g.shtml

相关文章

web移动开发

web移动开发 手机内置浏览器&#xff1a; Android&#xff1a;Andriod BrowserIOS&#xff1a;Mobile SafariBlackBerry&#xff1a;WebkitSymbian S60&#xff1a; Web Browser for S60 其浏览器的核心都是基于Webkit 智能手机Web浏览器的特点: 有限的屏幕尺寸触屏、缩放硬…

移动端页面开发

移动端页面开发需要掌握的…… 移动端开发指的是&#xff1a;需要适配移动设备的网页开发移动开发与pc端开发没有本质的区别&#xff0c;使用的也还是HTML/CSS/JS的技术 一、移动端与pc端开发的区别在于&#xff1a; 1.浏览器不同 手机浏览器是webkit的天下&#xff0c;就目…

从零开始学习移动端Web开发

背景 近年来&#xff0c;随着智能手机的普及&#xff0c;移动端开发受到了异常的关注。从传统的安卓、IOS原生手机系统应用开发&#xff0c;转向了移动端Web开发或者是混合开发&#xff0c;既然有需求&#xff0c;那就让我们一起来学习移动端Web开发吧。本文旨在让读者以最快的…

移动端网站开发

受限于流量太少&#xff0c;以前的手机网站无法做成像现在一样的效果&#xff0c;只能通过超链接的形式实现简单的网页 随着3G&#xff0c;4G&#xff0c;5G的商用&#xff0c;我们的流量越来越多&#xff0c;网速越来越快。越来越多的应用开始去开发网页版。 移动端仿真 未来…

移动端开发

2022.3.5 学习笔记 目录 四、移动端开发方案 五、 移动端技术解决方案 六、移动端常见布局 移动端开发之流式布局&#xff1a; 一、基础 二、制作京东移动端首页案例 四、移动端开发方案 ①单独制作移动端页面 &#xff08;主流&#xff09; 京东商城手机版 淘宝触屏版…

web前端开发之移动端基础

web前端开发之移动端基础 一、物理像素(px) 定义&#xff1a;虚拟像素&#xff0c;可以理解为“直觉”像素&#xff0c;CSS和JS使用的抽象单位&#xff0c;浏览器内的一切长度都是以CSS像素为单位的&#xff0c;CSS像素的单位是px。 1.2 像素到底是什么 像素&#xff08;px…

前端移动端web开发(一)

一、前端开发 1.前端开发分类&#xff1a; PC端开发&#xff1a;页面主要运行在PC端浏览器中 移动端开发&#xff1a;页面主要运行在手机上 移动web开发 在移动端表现良好的页面&#xff0c;如新浪网 混合式开发&#xff08;Hybrid App&#xff09; 也叫“套壳开发”&#xf…

移动端Web开发 基础知识

文章目录 移动端Web开发移动端基础浏览器视口样式编写分辨率和设备像素比二倍图SVG矢量图 移动端Web开发 移动Web开发的两种主流方案&#xff0c;一种是单独制作移动端页面&#xff0c;另一种是制作响应式页面 移动端页面&#xff1a; 单独制作移动端页面的优势和劣势&#…

(一)移动端 Web 开发基础

文章目录 一、移动 Web 开发基础概念1. 像素(1) 分辨率(2) 物理像素(3) CSS 像素(4) 设备像素比(5) 标清屏和高清屏(6) 缩放(7) PPI / DPI 2. 视口 viewport 二、移动 Web 开发基础知识1. box-sizing2. 图标字体3. flex 布局(1) 什么是 flex 布局(2) flex 布局的基本概念(3) fl…

移动端web开发

相关阅读&#xff1a; WebApp与Native App的区别&#xff1f; 在高端智能手机系统中有两种应用程序&#xff1a;一种是基于本地(操作系统)运行的APP;一种是基于高端机的浏览器运行的WebApp&#xff08;基于WEB形式的应用程序&#xff09; Native App&#xff1a; 1、开发成本非…

Web前端开发 移动端开发(快速入门)

目录 一、理论知识1.视口2.物理像素和物理像素比3.二倍图4.移动端开发选择 二、移动端开发流程1.技术选型2.搭建文件结构3.SEO优化3大标签4.设置favicon.ico(logo图片)5.视口标签和初始化样式6.设置自适应尺寸&#xff08;两种方法&#xff09;1.方法一&#xff1a;创建common.…

移动端web开发笔记(一)

我本来一直在开发PC端的网页的&#xff0c;但是看到很多招聘都要求要有移动端开发的经验&#xff0c;所以开始学习一下&#xff01; 先搞清楚两个概念&#xff0c;移动端web开发&#xff0c;web app开发 1、 移动web开发&#xff08;pc端的页面用手机浏览器打开&#xff09; …

移动web开发

参考博客&#xff1a; 浅析移动端的视口 什么是视口 布局们 黑马程序员之flex布局 一、基础所知 常见浏览器QQ浏览器、百度手机浏览器、360、谷歌浏览器等都是根据Webkit修改过来的内核&#xff0c;因此移动浏览器主要对webkit进行兼容。且移动端设备屏幕尺寸碎片化&#xff…

方法重载与重写的区别

1.方法重载和重写都是实现多态的方式&#xff0c;区别在于重载是编译时多态&#xff0c;重写是运行时多态。 2.重载是在同一个类中&#xff0c;两个方法的方法名相同&#xff0c;参数列表不同&#xff08;参数类型、顺序、个数&#xff09;&#xff0c;与方法返回值无关&#x…

C#重载与重写的区别

前言&#xff1a;在之前的博文中&#xff0c;我总结过重载与重写的区别与用法&#xff0c;本博文算是一个系统的概述与总结。 文章目录 一、重载与重写的区别二、重载与重写的特征三、重载与重写的对比 一、重载与重写的区别 重载必须在同一个类&#xff0c;重写在派生类。重…

重载和重写的区别总结

目录 1. 什么是重载 2. 什么是重写 3. 二者的区别 1. 什么是重载 重载&#xff08;overload&#xff09;&#xff0c;它是指我们可以定义一些名称相同的方法&#xff0c;通过定义不同的输入参数来区分这些方法&#xff0c;然后再调用时&#xff0c;VM就会根据不同的参数样式…

Java之 重载 重写的区别

方法的重写和重载是Java多态性的不同表现&#xff1b;重写是父类与子类之间多态性的一种表现&#xff0c;重载是一个类中多态性的一种表现。重载 在同一个类中&#xff0c;多个方法有相同的方法名&#xff0c;但参数列表不同&#xff0c;这种同名不同参的方法就是重载重写 子类…

java中方法重载和重写的区别

方法重载和重写&#xff0c;光从名称上来说&#xff0c;很类似&#xff0c;也很容易弄错&#xff0c;接下来我们先简述两者的区别和联系。 1. 方法重载 首先方法重载是同一个类中的不同方法间的关系&#xff0c;这些方法具有同名(方法名一样)&#xff0c;但是具有不同的参数列…

重载和重写的区别(详解)

1、方法重写 概念&#xff1a; 重写是子类对父类的允许访问的方法的实现过程进行重新编写&#xff0c;返回值和形参都不能改变。即外壳不变&#xff0c;核心重写&#xff01; 好处&#xff1a; 重写的好处在于子类可以根据需要&#xff0c;定义特定于自己的行为。 也就是说…

java中重载与重写的区别

重写&#xff08;Overriding&#xff09; 重载&#xff08;Overloading&#xff09; 类的数量 父子类、接口与实现类 本类 方法名称 一致 一致 参数列表 一定不能修改 必须修改 返回类型 一定不能修改 可以修改 异常 可以减少或删除&#xff0c;但不能扩展 可以…