![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前端
文章平均质量分 77
CSDN认证用户
这个作者很懒,什么都没留下…
展开
-
获取歌曲页信息
页面结构歌曲也信息我们用song.html来展示。song.html中引入app.js来动态加载html结构let view = { el: '#app', template: ` <audio src="{{url}}"></audio> <div> <button class="play">播放</bu原创 2018-08-14 10:37:29 · 1294 阅读 · 0 评论 -
npm install时--save和--save-dev的区别
dependencies和devDependencies在使用node开发时, 我们在工程中用到的包必须是package.json中列出。 而dependencies和devDependencies是package.json中的两个属性. 我们要用的包在这两个属性中列出即可. dependencies列出的包用于生产环境.devDependencies用于开发环境和测试环境.- ...原创 2018-08-03 09:15:07 · 855 阅读 · 0 评论 -
leanCloud环境搭建
注册并创建项目注册leanCloud后, 创建项目163-music. 之后控制台会出现项目的列表. 点击并进入这个项目, 出现项目的信息. 我们需要三个表_User, Song, PlayList. 其中_User已经存在, 我们只需创建Song和PlayList即可. 创建过程如下: 接下来我们创建表的列. 下面时三个表的列信息: _user: PlayList: ...原创 2018-08-03 10:32:17 · 2248 阅读 · 0 评论 -
七牛环境搭建
创建项目注册七牛账号, 进入控制台. 点击对象存储. 然后创建项目. 安装七牛的包. 由于七牛的包还依赖一个叫moxie的包. 所以moxie也要安装. moxie放在vendors/目录中npm i qiniu创建server.js文件点击这里查看源代码. 七牛提供客户端上传和服务端上传, 不管哪一种上传方式, 我们都要进行有一个授权凭证, 即uptoken. 七...原创 2018-08-03 14:24:01 · 877 阅读 · 0 评论 -
对项目进行css布局
我们最终的项目大概想做成这样的. https://modao.cc/app/7LMoFzAGQXX45EzSw39JEotoeyMrFzo根据图纸, 我们写css布局. 这是大概布局: 对应的html代码为: (这是admin.html中的片段代码)&amp;lt;div class=&quot;page&quot;&amp;gt; &amp;lt;!-- 左侧栏 --&amp;g原创 2018-08-08 07:48:27 · 402 阅读 · 0 评论 -
丰富歌曲页页面
在网易云的歌曲页中, 我们看到有一个封面. 当音乐播放时, 封面转动.首页让我们更新下song.html的页面结构:<div class="page" id="app"> <audio src="#"></audio> <div class="disc-container">原创 2018-08-15 15:48:41 · 2310 阅读 · 0 评论 -
在项目中使用发布订阅模式
在上传歌曲的时候, 我们将歌曲名/歌手/外链会填入表单. 当我们点击保存时, 页面左侧的歌曲列表变回多出一首歌, 同时, 歌曲会保存在leanCloud的项目中. 可以把它抽象为发布订阅模式, 左侧的歌曲列表和将歌曲保存在leanCloud项目这一动作都是订阅者. 发布者就是提交表单这一动作.创建eventHub.js我们创建./js/eventHub.js:window.e...原创 2018-08-08 15:29:10 · 883 阅读 · 0 评论 -
修改歌曲
将admin.html划分为几个模块. 页面逻辑新建歌曲当点击新建歌曲时, new-song高亮. 在song-form中填入歌曲信息, 点击保存后, 将歌曲加入到song-list中, 同时在leanCloud的Song中创建歌曲信息. song-list中加入歌曲项后, 高亮这个新添加的歌曲.上传歌曲点击左下方的区域, 上传文件, 上传成功后, 歌曲信息自动填...原创 2018-08-13 10:45:32 · 602 阅读 · 0 评论 -
首页tab切换
前面几个文章说的是后台页面. 这一节我们说的是首页. 即index.html 我们的项目就是仿照网易云音乐(移动端). 打开控制台, 选择如下图: 基本结构页面的基本结构:<section id="tabs" class="globalTabs"> <ol class="tabs-nav"> <li class="active&qu原创 2018-08-14 07:36:27 · 1688 阅读 · 0 评论 -
获取歌曲
查看官方文档并添加API当我们进入页面或者刷新页面的时候要获取歌曲才行。 歌曲列表由song-list.js动态加载, 在song-list.js文件的model中添加如下函数:find() { var query = new AV.Query('Song'); return query.find().then( (songs)=> { this....原创 2018-08-10 08:57:53 · 444 阅读 · 0 评论 -
export和import
ES6新增了模块的概念. 一个js文件就是一个模块. 在一个模块中可能需要引入其他模块, 也可能需要输出模块. 这就需要使用export和import关键字了 要注意的是, ES6自动采用严格模式.exportexport用于输出, 可以输出一个函数, 输出一个变量. 有下面基本三种方式的export 第一种:export var m = 1;//或者export functi...原创 2018-06-10 23:08:24 · 733 阅读 · 0 评论 -
Generator函数
GeneratorGenerator函数是ES6提供的异步编程的解决方案。它和普通的函数有第一定的区别。 在普通函数后面加上一对括号那么普通函数会执行并返回结果。 而Generator函数并不执行, 它返回的也不是运行结果, 而是一个遍历器对象.yield和nextyield用来暂停后面的操作, 我们可以使用next方法进行取值. next方法返回的是一个对象,这个对象有连个属性: ...原创 2018-06-18 22:56:17 · 222 阅读 · 0 评论 -
如何添加图标?
切图通过ps等软件, 将图片切成一个图片. 在页面中引入img标签.background-image: url(path)在一个div标签内设置其css属性, url的参数是图片的路径css image sprites这种图片也是我们常说的雪碧图(其实直译过来是精灵图).将多张图拼接成一个图片, 再用background-image应用到相应位置, 然后使用backgr...原创 2018-07-11 17:45:05 · 792 阅读 · 0 评论 -
float布局, 清除浮动
float的bug我们时长使用float进行布局, 但是在使用float布局的同时, 常出现父级元素包不住子元素的情况. 比如:<div class="parent"> <div class="child"></div></div>css设置如下:.parent { border: 1px solid red;}.ch...原创 2018-07-23 12:58:28 · 404 阅读 · 0 评论 -
如何防止图片变形
在写代码的时候经常会使用image标签. 这个标签是用来嵌入图片的. 但是这个标签在一定程度下会变形. 所以我们可以使用其他方法来防止图片变形.div { background: transparent url(path/image.gif) no-repeat center; background-size: cover;}background是一个简写属性, url(...原创 2018-07-23 13:50:11 · 1065 阅读 · 0 评论 -
层叠上下文与层叠顺序
层叠顺序在css2.1时代, 堆叠顺序遵循下面这张图. 图片来自这里层叠上下文满足一下条件的任意元素就会形成堆叠上下文.根元素 (HTML)z-index 值不为 auto的 绝对/相对定位一个 z-index 值不为 auto的 flex 项目 (flex item),即:父元素 display: flex|inline-flexopacity 属性值小于1 的元素...原创 2018-07-23 15:09:27 · 431 阅读 · 0 评论 -
canvas之2d上下文
本文根据JavaScript高级程序设计(第三版)的15章所做笔记使用canvas时必须先指定width和height作为绘图区域. canvas的开闭标签之间的内容, 在浏览器不支持canvas标签时显示.getContext(contextType)用于获取上下文, contextType是上下文的类型, 值可以为&quot;2d&quot;, &quot;webgl&quot;等 填充和描边填充fill...原创 2018-07-24 13:40:38 · 1560 阅读 · 0 评论 -
块格式上下文
css2.1中定义浮动,绝对定位元素,非块盒的块容器(例如,inline-blocks,table-cells和table-captions)和overflow不为visible的块盒会为它们的内容建立一个新的块格式化上下文在一个块格式化上下文中,盒在竖直方向一个接一个地放置,从包含块的顶部开始。两个兄弟盒之间的竖直距离由margin属性决定。同一个块格式化上下文中的相邻块级盒之间的竖直m...原创 2018-07-24 15:58:54 · 263 阅读 · 0 评论 -
上传加载loading
在上传歌曲的时候, 我们发现屏幕上只有左下角有个文字提示: 文件正在上传, 文件上传成功. 这对于用户来说, 看不看得见是一个问题, 更重要的是影响用户体验, 用户还不一定知道是否上传了呢. 因此我们需要做一件事情. 那就是在上传歌曲的时候, 加载一个loading动画, 让用户理解正在上传. loading的基本结构为&amp;lt;style&amp;gt; @keyframes loa...原创 2018-08-13 12:38:59 · 2686 阅读 · 2 评论 -
为歌曲页添加歌词
上一节我们为歌曲页添加了封面。 这一节我们要为歌曲页添加歌词。 同样的, 我们的歌词在最初开始的时候并没有考虑在内。 我们回到song-form.js中,给data添加一个lyrics的属性表示歌词, 注意修改其它代码保证不会出错。 我们的歌词填在如下结构:<div class="song-description"> <h1><!--这里时歌名--...原创 2018-08-16 11:34:42 · 1241 阅读 · 0 评论 -
meta viewport是干啥用的
meta初探在每个html页面的header部分常常会看见一个meta标签. 这个标签中最常写的就是下面的内容: &lt;meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"&gt;这个标签内...原创 2018-09-10 10:09:19 · 4373 阅读 · 0 评论 -
CSS居中全攻略
水平居中内联元素css的水平居中相对于垂直居中比较好些. 当要居中的元素是一个内联元素时, 只需要在其父元素上加上下面的一条css规则即可:text-align: center;块级元素要居中的是一个块级元素, 那么设置元素的左右外边距为zuto即可. 即下面的规则:margin-left: auto;margin-right: auto;多个块级元素多个...原创 2018-09-10 10:59:22 · 300 阅读 · 0 评论 -
css选择器的优先级
四个等级css选择器的优先级规定了文档采用哪一种样式. 选择器的等级主要有以下四个等级(依次递减)行内样式(style声明)id选择器类, 伪类, 属性选择器元素选择器, 伪元素选择器当同一个元素有多个css规则时, 对照着上面的四个等级, 对每一个规则确定每个等级有几个选择器, 记下个数. 然后做下列运算. 行内样式的选择器个数乘以1000 id选择器的个数乘以10...原创 2018-09-10 11:50:51 · 393 阅读 · 0 评论 -
css清除浮动
清除浮动清除浮动的方法在网络上有许多文章总结了. 我为了加深记忆, 就写一篇吧. 我最喜欢的清除浮动方法是, 使用.clearfix<div class="father clearfix"> <div class="left">child1</div> <div class="right">child2&am原创 2018-09-10 21:27:39 · 260 阅读 · 0 评论 -
script中的defer和async
script的使用方式在html页面中使用JavaScript的主要方法便是使用script标签. 它有两种使用方式. 第一种便是用src属性引用外部文件. 第二种是将JavaScript代码嵌套在script标签中. 如:&amp;amp;lt;!-- 第一种--&amp;amp;gt;&amp;amp;lt;script src=&amp;quot;http://www.example.com/xxx.js&am原创 2018-09-18 14:03:06 · 409 阅读 · 0 评论 -
开始学习React—概述与演练(好文翻译)
这篇文章来自于Getting started with ReactReact基本概念的概览与演示, 如components, state和props, 以及提交表单, 从API获取数据或者部署React 应用到生产环境.自动我第一次学习JavaScript时就已经听说了React, 但是我要承认我看了它一眼就被它吓到了. 我看到它像混合着JavaScript的HTML, 这不是我们正要避免的吗...原创 2018-10-11 23:09:59 · 513 阅读 · 0 评论 -
redux的数据流
redux是数据原创 2018-10-05 21:21:26 · 3653 阅读 · 0 评论 -
css实现“加号”效果
实现下图的加号效果:若想实现这个效果, 只需一个div元素即可搞定。需要用到css的为了before和after, 以及border特性。先设置一个div便签 &lt;div class="add"&gt;&lt;/div&gt;再设置一个边框:.add { border: 1px solid; width: 100px; height: 100px;原创 2018-10-21 16:53:11 · 16524 阅读 · 3 评论 -
HTML语义化
什么事HTML语义化html语义化就是根据标签, 我就知道标签内的是啥内容. 比如: aside标签表示一个侧边栏, header标签表示头部, 而footer标签表示尾部. 这就是html语义化. 语义话可以更好的让我们理解文档内容. 一篇文档会根据内容区分结构, 这些结构我们就可以了赋予不同的标签, 比如header, footer, main, section, article等. ...原创 2018-09-10 09:27:51 · 315 阅读 · 0 评论 -
vue中组件通信(父子组件, 爷孙组件, 兄弟组件)
vue中我们常常用到组件. 那么组件总体可以分为如下的几种关系. 父子组件, 爷孙组件, 兄弟组件. 这几种组件之间是如何通信的呢? 父子组件通信根据vue中的文档可知, 组件的props属性用于接收父组件传递的信息. 而子组件想要向父组件传递信息, 可以使用$emit事件. 我们定义两个组件, 一个为父组件名为father, 另外一个为子组件child. 子组件通过props属性...原创 2018-09-04 16:38:06 · 18877 阅读 · 2 评论 -
模仿网易云音乐
这是饥人谷系统版的毕设。 每节课写完代码后我稍微回忆下思路。日后也好照葫芦画瓢。 下面几篇文章,我只着重记录思路, 代码只贴关键代码。 稍微完整的代码请点击这里leanCloud环境搭建七牛环境搭建对项目进行css布局在项目中使用发布订阅模式获取歌曲修改歌曲上传加载loading首页tab切换获取歌曲页面丰富歌曲页页面为歌曲添加歌词...原创 2018-08-16 16:22:15 · 2230 阅读 · 0 评论 -
用vue做一个简单的button
项目准备安装parcelnpm i -D parcel-bundler-D的意思是给开发人员用的.基本结构index.htmlsrc button.vue app.js 在index.html中引入src/app.js, 而app.js中引入了vue和button.vue.src下的app.js和button.vue在src中写下b...原创 2018-08-19 10:36:28 · 8446 阅读 · 0 评论 -
项目初始化(vue简历编辑器)
项目的全部代码在这里, 这篇文章只会将主要的思路. 代码会不完整. 初始化这个编辑器如下图所示:基本结构为: index.html&amp;lt;div class=&quot;page&quot; id=&quot;app&quot;&amp;gt;&amp;lt;aside&amp;gt;&amp;lt;/aside&原创 2018-08-27 21:46:33 · 1059 阅读 · 0 评论 -
添加登陆注册功能(vue简历编辑器)
着重记录下思路以及关键代码. 完整代码请点击这里触发登录/注册机制当我们点击保存的时候, 检测是否有用户登录, 若没有用户登录, 则弹出登录框. 按情况让用户选择登录或者注册功能. <button class="button" @click="onClickSave">保存</button>onClickSave在vue实例app中的methods中定...原创 2018-08-27 22:20:20 · 1326 阅读 · 0 评论 -
如何写js中的继承
原型继承js中有原型的概念, 通过原型我们可以实现继承. 定义一个函数为animal, 在其原型上定义一个sayHello函数. 并生成一个新对象dog.function Animal(name){ this.name = name}Animal.prototype.sayHello = function() { console.log('hello')}var...原创 2018-08-31 07:57:01 · 349 阅读 · 0 评论 -
完善登录逻辑, 完善项目/技能编辑以及分享功能(vue简历编辑器)
登录逻辑当我们登录的时候, 才会有登出. 那么我们只有在用户登录的情况下才显示登出按钮. 检测状态用hasLogin()来确定, 当检测到用户id时标明用户登录, 没有检测到时表明没有用户登录: <button class="button" @click="onLogout" v-show="hasLogin()">登出注意, hasLogin是在app的methods中的...原创 2018-08-28 17:58:19 · 658 阅读 · 0 评论 -
typeof 和 instanceof
我们在检测数据类型的时候常用两种方法. 分别是typeof和instanceof. 但是这两种方法各有不同. typeoftypeof 是我们开始学JavaScript是就会学习的方法. 这个方法作用于不同的数据类型返回不同的值. 如下图所示: 从图中有几处需要我们注意的地方, 分别是undefined和null类型的返回值, object,array及function类型的返回...原创 2018-08-29 09:21:52 · 344 阅读 · 0 评论 -
打印和换肤(vue简历编辑器)
打印当我们点击打印的时候可以调用window对象的print()方法. <button class="button" @click="print">打印</button>print(){ window.print() }打印的时候不能将侧边栏和多余信息也打印. 所以要将它们设置为none..page > aside { ...原创 2018-08-29 12:25:36 · 501 阅读 · 0 评论 -
let和const
letlet和const是ES6的新语法, let有一下特点let声明的变量只在其所在代码块内有效let不存在声明提升, 因此或出现暂存性死区let在同一作用域中不能重复声明一个变量, 即使是声明函数的参数也不行let声明的变量只在其所在代码块内有效{ let a = 2 console.log(a) //2}console.log(a) //undef...原创 2018-06-10 21:47:12 · 759 阅读 · 0 评论 -
cookie 与session
cookie服务器端设置cookie并返回响应浏览器再次访问服务器时(访问同一域名下的页面)会在请求体中带上这个cookie服务器端根据需要读取请求体中的cookie, 或者重新设置cookiecookie有一个过期时间, 可以通过服务器端设置cookie在页面关闭时失效session服务器端通过sessionId的方式设置session, 并将sessionId通过co...原创 2018-06-03 17:00:48 · 155 阅读 · 0 评论