自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (2)
  • 收藏
  • 关注

原创 前端必须掌握的css知识点大全(全)

前端必须掌握的css知识点大全(全)一、CSS是什么?二、使用步骤1.选择器2.CSS 创建3.CSS 背景4.CSS 文本格式总结一、CSS是什么?层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化二、使用步骤1.选择器标签选择器语法:标签名:{}id选择器语法:#id{}cs

2020-08-31 18:15:18 1794

原创 HTML5必须了解掌握的知识点详解(全)

HTML5必须了解掌握的知识点详解()一、html5是什么?二、学习1.为 HTML 添加新元素2.HTML5 新元素总结一、html5是什么?HTML5 是下一代 HTML 标准。HTML , HTML 4.01的上一个版本诞生于 1999 年。自从那以后,Web 世界已经经历了巨变。HTML5 仍处于完善之中。然而,大部分现代浏览器已经具备了某些 HTML5 支持。HTML5 中的一些有趣的新特性:用于绘画的 canvas 元素用于媒介回放的 video 和 audio 元素对本地离线存

2020-08-28 09:57:00 1184

原创 大三毕业设计,从前端到后端到数据库,从pc端web到移动端微信小程序

大三毕业设计,从前端到后端到数据库一、前端vue1.创建一个vue3.0项目2.配置webpack3.创建登录界面login页面二、后端三、微信小程序四、数据库总结一、前端vue1.创建一个vue3.0项目创建的vue3.0项目选择bablevue-routervuexscss(node-loader)2.配置webpack创建vue.config.js代码如下(示例):const path = require('path');const resolve = dir => pa

2020-08-26 21:31:51 3120 2

原创 简单易懂vue组件的生命周期,附带面试题中的vue周期相关题目(百分之八十的几率要问)

简单易懂vue组件的生命周期,附带面试题中的vue周期相关题目(百分之八十的几率要问)一、vue生命周期是什么?二、使用步骤1.整体2.beforeCreate这个阶段几乎没有操作,获取不到data数据,没有$el,已经有了this3.created实例已经被创建,有了data,也可以对data进行计算和监听,这个阶段可以去请求数据,但是没有$el,实例还没有被挂载4.beforeMount这个阶段几乎和created阶段没有差别5.mounted这个阶段已经挂在了$el,dom树,可以获取dom,页面也有

2020-08-24 20:03:21 608 1

原创 必须了解掌握的html知识点(全)

必须了解掌握的html知识点(全)一、HTML是什么?二、学习1.href 和 src 的区别2.html对于大小写不敏感4.html标题6.HTML 文本格式化标签7.html链接总结一、HTML是什么?HTML 是用来描述网页的一种语言。HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页二、学

2020-08-24 11:17:10 695 1

原创 GitHub命令大全

创建GitHub仓库,gitlab管理分支,将本地仓库上传到Git前言一、GitHub是什么?二、使用步骤1.安装git2.注册GitHub账号3.创建GitHub远程仓库3.将本地的项目上传4.常用git命令总结前言为了有效管理代码,管理项目创建GitHub仓库,gitlab管理分支,将本地仓库上传到Git一、GitHub是什么?GitHub 是通过 Git 进行版本控制的软件源代码托管服务,由 GitHub 公司(曾称 Logical Awesome)的开发者 Chris Wanstrath、

2020-08-18 20:12:48 294 1

原创 Js FileReader图片加载,预处理本地缓存图片

Js FileReader图片加载一、FileReader是什么?二、使用步骤总结FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件。一、FileReader是什么? FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件。二、使用步骤//获取文件名字的后缀名const prefix = img.name.split('.')[1]if (prefix !== 'jpg' && prefix !

2020-08-31 15:58:33 878

原创 js正则表达式大全,修饰符描述,表达式描述,元字符描述,量词描述,方法描述,属性描述

js正则表达式大全总结正则表达式修饰符修饰符用于执行区分大小写和全局匹配:修饰符描述i 执行对大小写不敏感的匹配。g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。m 执行多行匹配。方括号方括号用于查找某个范围内的字符:表达式描述[abc] 查找方括号之间的任何字符。[^abc] 查找任何不在方括号之间的字符。[0-9] 查找任何从 0 至 9 的数字。[a-z] 查找任何从小写 a 到小写 z 的字符。[A-Z] 查找任何从大写 A 到大写 Z 的字符。[A-z]

2020-08-31 11:55:18 205

原创 js字符串方法大全,concat(),indexOf(),replace(),slice(),split(),substr(),trim(),toString()使用方法

js字符串方法大全总结字符串方法charAt() 返回在指定位置的字符。charCodeAt() 返回在指定的位置的字符的 Unicode 编码。concat() 连接两个或更多字符串,并返回新的字符串。fromCharCode() 将 Unicode 编码转为字符。indexOf() 返回某个指定的字符串值在字符串中首次出现的位置。includes() 查找字符串中是否包含指定的子字符串。lastIndexOf() 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。

2020-08-31 11:54:26 707

原创 js数组方法大全,遍历数组方法every(),filter(),forEach(),map(),some()使用方法

数组方法大全总结数组方法concat() 连接两个或更多的数组,并返回结果。copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中。entries() 返回数组的可迭代对象。every() 检测数值元素的每个元素是否都符合条件。fill() 使用一个固定值来填充数组。filter() 检测数值元素,并返回符合条件所有元素的数组。find() 返回符合传入测试(函数)条件的数组元素。findIndex() 返回符合传入测试(函数)条件的数组元素索引。forEach()

2020-08-31 11:53:28 655

原创 在form表单元素上添加keyup键盘操作,点击回车触发事件,element组件上keyup失效,使用keyup

在form表单元素上添加keyup键盘操作,点击回车触发事件,element组件上keyup失效总结keyup用在input上用了element组件keyup事件加nativev-on:keyup.enter.native总结good morning

2020-08-31 11:45:35 587

原创 对数组和对象进行操作,没有被vue监听到没有实时更新,如何操作让vue监听动态变化

对数组和对象进行操作,没有被vue监听到没有实时更新,如何操作让vue监听动态变化一、什么操作会导致vue监听不到1、对象的变化1、数组的变化总结一、什么操作会导致vue监听不到1、对象的变化受现代 JavaScript 的限制(以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。由于Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的使用Object.assign()

2020-08-31 11:36:16 745

原创 vue-router的路由守卫,router.foreEach(),router.beforeResolve(),router.afterEach()使用方法

@TOC一、vue-router是什么?Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:嵌套的路由/视图表模块化的、基于组件的路由配置路由参数、查询、通配符基于 Vue.js 过渡系统的视图过渡效果细粒度的导航控制带有自动激活的 CSS class 的链接HTML5 历史模式或 hash 模式,在 IE9 中自动降级自定义的滚动条行为二、router.foreEach()1.写在main.js文

2020-08-29 14:54:51 10307 2

原创 vue项目路由vue-router传参技巧,四种传参加接收的方式,this.$route.push

vue项目路由传参技巧,四种传参加接收的方式,this.$route.push一、vue-router是什么?二、使用步骤1.使用push进行页面跳转路由配置父组件配置子组件调用形参2.使用router-link跳转路由配置父组件配置子组件配置3.使用route的params传参路由配置父组件调用push方法,写入参数params子组件调用4.使用query接收参数路由配置父组件调用push方法子组件调用总结一、vue-router是什么?Vue Router 是 Vue.js 官方的路由管理器。它和

2020-08-29 14:00:41 1881

原创 web storage存储方式,localstorage和sessionstorage

web storage存储方式,localstorage和sessionstorage一、web storage是什么?二、使用步骤1.localstorage2.sessionStorage总结一、web storage是什么?提供一种在cookie之外存储会话数据的途径。提供一种存储大量可以跨会话存在的数据的机制。二、使用步骤1.localstoragelocalStorage的生命周期是永久性的。使用过后一定要记住清楚点,本地缓存过多会影响浏览器性能setItem的值时字符串,存入的是

2020-08-28 21:58:01 578

原创 获取上传文件的后缀,.jpg,.png,.word,.xsl...使用方法split,lastindexOf,subtr

获取上传文件的后缀,.jpg,.png,.word,.xsl...使用方法split,lastindexOf,subtr一、使用详情使用场景使用效果总结一、使用详情使用场景有个需求,是上传的文件为2.2.jpg的图片使用代码如下(示例):html现有字符串:{{message}}<br />使用split方法将字符串分割成数组{{splitMessage}}<br />找到数组中最后一个. 符号{{lastIndex}}<br />最后一个

2020-08-28 12:30:13 330

原创 微信小程序在app.json文件中使用了tarbar之后,使用wx.navigatTo无法跳转页面,使用wx.switchTab

微信小程序在app.json文件中使用了tarbar之后,使用wx.navigatTo无法跳转页面,使用wx.switchTab一、微信小程序是什么?二、使用步骤1.创建tarbar2.使用wx.switchTab总结一、微信小程序是什么?2020年前端的趋势,小程序化二、使用步骤1.创建tarbar在app.json文件中代码如下(示例): "tabBar": { "color": "#a9b7b7", "selectedColor": "#3498db", "bo

2020-08-27 18:19:11 469

原创 companyManagement项目home主页开发,使用热门gsap库开发炫酷2d动画

companyManagement项目home主页开发总结代码如下(示例):<template> <div id="home"> <div class="container"> <div class="welcome"> <p> <a href="https://en.wikipedia.org/wiki/Red">Welcome</a> &lt

2020-08-27 18:11:23 291

原创 companyManagement项目nav导航栏公共组件

companyManagement项目nav导航栏公共组件一、nav是什么?二、代码1.引入库总结一、nav是什么?是一个用来帮助浏览web的工具二、代码1.引入库代码如下(示例):<template> <div id="headerNav"> <div class="frame"> <div class="frame_img-div"> <img src="../assets/svg/wohensh

2020-08-27 18:06:28 407

原创 在vue项目中使用gsap,实现极佳的2d动画效果

GSAP全称是GreenSock Animation Platform,是一个js动画框架,在vue项目中使用gsap,实现极佳的2d动画效果一、GSAP是什么?二、使用步骤1.引入库2.在vue中使用3.vue组件使用gsap完整代码总结一、GSAP是什么?GSAP全称是GreenSock Animation Platform,是一个js动画框架1、速度快。GSAP专门优化了动画性能,使之实现和css一样的高性能动画效果。2、轻量与模块化。模块化与插件式的结构保持了核心引擎的轻量,TweenLit

2020-08-27 17:41:19 7139

原创 [sitemap 索引情况提示] 根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引

[sitemap 索引情况提示] 根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引一、报错信息?总结一、报错信息?代码如下(示例):[sitemap 索引情况提示] 根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引解决方案总结good night...

2020-08-26 22:35:03 25410 8

原创 vue3.0+的webpack配置,配置简单实用的vue.config.js

vue3.0+的webpack配置,配置简单实用的vue.config.js一、webpack是什么?二、使用步骤1.创建文件vue.config.js2.配置webpack总结一、webpack是什么?WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。a:模块化,让我们可以把复杂的程序细化为小的文件;b:类似于TypeScript这种在

2020-08-26 20:43:07 5680 3

原创 ES6系列——深入理解es6新特性symbol,一个不会重复的值

深入理解es6新特性symbol,一个不会重复的值一、Symbol是什么?二、介绍1.不会重复2.获取Symbol数据的描述3.将Symbol数据设置为属性名4.Symbol属性名取值5.属性名遍历6.Symbol描述一样,值一样附带知识总结一、Symbol是什么?Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。二、

2020-08-26 18:01:07 653 1

原创 ES6系列——纯js手写一个异步操作(promise,async 函数),模拟请求接口

纯js手写一个异步操作(promise),模拟请求接口一、异步操作是什么?二、使用步骤1.promise2.async 函数总结一、异步操作是什么?异步模式不用阻塞当前线程来等待其他任务的完成,而是允许当前线程继续执行后面的操作,当异步操作完成后,再去执行回调操作,这样做的好处就是避免其他操作执行的时间太长而使当前线程长时间等待二、使用步骤1.promise代码如下(示例):samulation() { let promise = new Promise((resolve, rej

2020-08-26 16:52:33 1340 2

原创 以凡人之躯,用js事件监听自定义——写一个滚动组件,懒加载数据

以凡人之躯,用js事件监听自定义写一个滚动组件,懒加载数据一、组件是什么?二、使用步骤1.创建一个公共组件2.组件调用3.效果展示dev_services!!!总结一、组件是什么?所谓组件化,就是把页面拆分成多个组件,每个组件依赖的 CSS、JS、模板、图片等资源放在一起开发和维护。 因为组件是资源独立的,所以组件在系统内部可复用,组件和组件之间可以嵌套,如果项目比较复杂,可以极大简化代码量,并且对后期的需求变更和维护也更加友好。二、使用步骤1.创建一个公共组件代码如下(示例):<temp

2020-08-26 12:03:46 388 1

原创 vue项目组件化开发,在项目中引入公共组件

vue项目组件化开发,在项目中引入公共组件一、vue组件化开发是什么?二、使用步骤1.创建vue组件2.引入组件3.查看结果总结一、vue组件化开发是什么?所谓组件化,就是把页面拆分成多个组件,每个组件依赖的 CSS、JS、模板、图片等资源放在一起开发和维护。 因为组件是资源独立的,所以组件在系统内部可复用,组件和组件之间可以嵌套,如果项目比较复杂,可以极大简化代码量,并且对后期的需求变更和维护也更加友好。二、使用步骤1.创建vue组件代码如下(示例):<template>

2020-08-26 11:11:32 1261 1

原创 学习使用svg矢量图绘制,项目经理再也不用担心我的学习,在项目中使用svg文件

学习使用svg矢量图绘制,项目经理再也不用担心我的学习,在项目中使用svg文件一、svg是什么?二、使用步骤1.命名空间2.在html中使用svg代码3.常用图形矩形 圆形 椭圆 线 折线 多边形 路径 4.svg文件使用总结一、svg是什么?SVG 意为可缩放矢量图形(Scalable Vector Graphics)。SVG 使用 XML 格式定义图像。SVG 用来定义用于网络的基于矢量的图形SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失SVG 是万维网联盟的标准S

2020-08-26 10:30:13 632 1

原创 使用jspdf将html内容转换成pdf下载到本地,html导出为pdf

使用jspdf将html内容转换成pdf下载到本地,html导出为pdf一、?二、使用步骤1.使用script标签引入库2.使用jspdf3.完成dev_services!!!!!总结一、?html转换系列常规?二、使用步骤1.使用script标签引入库将script代码写入index.js文件,body下面,养成好习惯代码如下(示例):<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.min.js

2020-08-25 19:09:17 1814 1

原创 css最好看最全的按钮样式,动画效果大全,纯css样式

css最好看最全的按钮样式,动画效果大全,纯css样式总结html样式代码如下(示例):<h1>Animation Buttons</h1> <p>Hover us and enjoy the satisfying neumorphic animation designs!</p> <div class="frame"> <button class="custom-btn btn-1">Read Mo

2020-08-25 13:37:44 7923 2

原创 js创建事件监听,点击事件监听中对dom操作,滚动事件监听的坑,自定创建类似element-UI的组件

js创建事件监听,点击事件监听中对dom操作,滚动事件监听的坑,自定创建类似element-UI的组件一、事件监听是什么?二、使用步骤1.click点击事件监听2.根据事件监听去创建类似element-UI的组件3.监听滚动事件的坑总结一、事件监听是什么?W3C规范中定义了3个事件阶段,依次是捕获阶段、目标阶段、冒泡阶段。语法:element.addEventListener(event, function, useCapture)event : (必需)事件名,支持所有 DOM事件 。fun

2020-08-25 11:51:03 650 1

原创 创建一个简单的springboot后端java web项目,能给前端提供接口

创建一个简单的springboot后端java项目,能给前端提供接口前言一、java是什么?二、创建java web项目步骤1.打开idea2.点击左上角file,选择new,点击Project3.在弹出框中选择 spring initializr,其余项不用管,点击next4.选择分组,项目启动名称5.点击web勾选spring web和spring web services6.点击sql勾选mybatis framework,点击next7.选择保存项目文件夹,点击finish总结前言一个真正

2020-08-25 10:05:38 3131 3

原创 在boss直聘找到前端开发工程师工作的技能树,500万开发工程师

学习目标:入行p4学习内容:1.熟悉网站开发的整体流程,能够与产品和ui配合高效完成任务2.熟悉W3C标准,熟练掌握ES6新特性。3.熟练掌握vue及vue-router、vuex、 vue-cli 、element-ui等全家桶技术。4.熟悉微信小程序的开发技术及开发流程。5.熟悉webpack的使用,能够自行进行一-定的配置或修改。6.基本能够使用git来完成版本控制与多人合作开发。7.熟悉three.js技术。8.熟悉echarts绘图。9.有后台管理系统,e

2020-08-25 09:25:47 913 1

原创 vue项目中环境不支持WebSocket,使用轮询setInterval获取最新的状态

vue项目中环境不支持WebSocket,使用轮询获取最新的状态一、轮询是什么?二、使用步骤1.初始化timer2.销毁timer总结一、轮询是什么?轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输入输出”(Programmed I/O)。轮询法的概念是:由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。在前端js中,轮询是定时循环去访问一个接口,获取最新的状态二、使用步骤1.初始化timer在

2020-08-24 17:43:18 365 1

原创 实用十大经典算法,冒泡算法(bubble)选择排序(selection)插入排序(insertion)

实用十大经典算法,冒泡算法(bubble)一、十大经典算法有哪些?二、十大经典算法1.冒泡算法(bubble sort)2.选择排序总结一、十大经典算法有哪些?![在这里插入图片描述](https://img-blog.csdnimg.cn/20200823183122326.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMz

2020-08-23 18:49:58 545 1

原创 vue项目中vue-router报错,但是可以正常使用,报错:Avoided redundant navigation to current location

vue项目中vue-router报错,但是可以正常使用二、解决步骤1.报错信息2.解决方法总结# 一、Vue Router是什么?Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:嵌套的路由/视图表模块化的、基于组件的路由配置路由参数、查询、通配符基于 Vue.js 过渡系统的视图过渡效果细粒度的导航控制带有自动激活的 CSS class 的链接HTML5 历史模式或 hash 模式,在 IE9 中

2020-08-23 16:50:48 431 1

原创 vue源码解析——vue的MVVM响应式原理介绍

vue的MVVM响应式原理介绍——vue源码解析一、vue的MVVM是什么?二、使用步骤1.引入库2.读入数据总结一、vue的MVVM是什么?MVVM是Model-View-ViewModel的简写。它模式是MVC—>MVP—>MVVM的进化版。Model负责用JavaScript对象表示,View负责UI界面显示,两者做到了最大限度的分离。而把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View

2020-08-23 16:35:03 216 1

原创 将html内容转换成word文档下载,纯js操作

将html内容转换成word文档下载,纯js操作一、?二、操作步骤1.html内容2.js内容3.css福利内容总结一、?二、操作步骤1.html内容代码如下(示例):<div> <div id="source-html" style="750px"> <div style="width: 100%; text-align: center; font-weight: 600; font-siz

2020-08-23 15:33:43 2356 8

原创 如何在vue项目中使用vue-router和vuex实现一个简易的头部导航栏

如何在vue项目中使用vue-router和vuex实现一个简易的头部导航栏一、vue-router是什么?二、使用步骤1.添加vue-router2.创建vuex管理状态3.创建vuex管理状态4.创建common公共组件5.在App.vue文件中组合总结一、vue-router是什么?路由就是用来跟后端服务器进行交互的一种方式,通过不同的路径,来请求不同的资源,请求不同的页面是路由的其中一种功能。vue-router是vue.js官方路由管理器。vue的单页应用是基于路由和组件的,路由用于设定

2020-08-23 12:19:01 1522 2

原创 使用git checkout -b origin/命令报错is not a commit and a branch ‘dev_86984_newn‘ cannot be created from it

使用git checkout -b origin/命令报错is not a commit and a branch 'dev_86984_newn' cannot be created from it一、git是什么?二、解决步骤1.报错信息2.解决方案总结一、git是什么?git的作用就是对文件进行版本管理,方便在不同版本进行切换修改,类似文件分不同时间备份让后需要时找回其中一份代替,不过更方便使用二、解决步骤1.报错信息使用命令如下(示例):git checkout dev_86984_n

2020-08-23 11:50:14 2521 1

原创 在前端vue项目引入less,使用less,在less引用外部文件,在less中使用变量

在前端vue项目引入less,使用less,在less引用外部文件,在less中使用变量一、less是什么?二、操作步骤1.引入库2.设置style的lang属性3.使用less总结一、less是什么?Less是一种CSS的扩展和动态样式表语言,CSS预处理器,可以在客户端或服务器端运行,帮助我们自定义,管理和重用网页的样式表。Less是一种开源语言,也是跨浏览器兼容的语言。二、操作步骤1.引入库代码如下(示例):npm install less-loader@4.1.0 --save

2020-08-21 14:31:00 11980 4

最新热门、好看前端vue模板大全

最新热门、好看前端vue模板大全。你准备开始一个重要的Vue项目吗?为了确保从坚实的基础开始,您可以使用模板(也就是样板,骨架,起动器或脚手架)而不是从npm init或开始vue init。

2020-10-05

threejs案例源码.rar

three.js是JavaScript编写的WebGL第三方库。提供了非常多的3D显示功能。Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象

2020-08-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除