画一个皮卡丘项目小结(4)

前言

继续总结过程中学到的新知识,这是第4部分,也是最后一部分。

主要是实现 页面变速展示的 效果

一、创建button按钮

1 HTNL结构

<div class="action">
    <button data-speed="slow">慢速</button>   <!-- 自定义属性 -->
    <button data-speed="normal" class="active">中速</button>
    <button data-speed="fast">快速</button>
</div>

2 设置按钮的一般样式

.actions{
  position: absolute;
  top: 0;
  right: 0;
  /* border: 1px solid red; */
  display: flex;
  flex-direction: column;
}

.actions>button{
  margin: 10px;
  padding: 8px 10px;
  background: #ddd;
  border: none;     /*去除默认按钮的 边框样式*/
}

3 设置被选中按钮的样式

.actions>button.active{
  box-shadow: 1px 1px 1px rgba(0,0,0,0.8);    /* box-shadow样式*/
}

/* .actions>button:focus{
  outline: none;}        去除默认按钮的 选中边框颜色
*/ 

二、引入jquery

1 安装初始化yarn,用yarn引入jquery依赖

?yarn官网

2 创建.gitignore文件来忽略 node_mldules

?用git status -sb 命令行 查看是否忽略成功

3 强制引入node_mldules里的 单个jquery文件

?用 git add -f node_modules/jquery/dist/jquery.min.js 命令行 强制添加

4 在index.html里 引入jquery

三、用jquery监听绑定按钮并设置速度

1 设置动态改变active的所属

$(‘.actions‘).on(‘click‘, ‘button‘, function(e){
    let $button = $(e.currentTarget)      //当前指向元素button
    let speed = $button.attr(‘data-speed‘)  //获取其属性值
    console.log(speed)
    $button.addClass(‘active‘)       //增加类
      .siblings(‘.active‘).removeClass(‘active‘) //去除兄弟元素类
......
})

2 实现点击变速按钮后,真的也改变展示速度

因为setInterval只会读取一次 延迟时间的值,所以不能实现改变展示速度;

这时候,我们可以用 SetTimeOut()来实现(通过递归)

var duration = 20
  function writeCode(prefix,code,fn){
    let container = document.querySelector(‘#code‘)
    let styleTag = document.querySelector(‘#styleTag‘)
    let n = 0
                                // let id = setInterval(() => {
    setTimeout(function run(){
      n+=1;
      container.innerHTML = code.substring(0,n)
      styleTag.innerHTML = code.substring(0,n)
      container.scrollTop = container.scrollHeight
      if(n < code.length){
        setTimeout(run, duration)    //再次递归调用setTimeout
      }else{
        fn && fn.call()
      }
    }, duration)
  }

3 通过点击按钮,就改变 duration的值,就可以实现展示速度变化

$(‘.actions‘).on(‘click‘, ‘button‘, function(e){
    let $button = $(e.currentTarget) // button
    let speed = $button.attr(‘data-speed‘)
    console.log(speed)
    $button.addClass(‘active‘)
      .siblings(‘.active‘).removeClass(‘active‘)
    switch (speed){
      case ‘slow‘:
        duration = 100
        break
      case ‘normal‘:
        duration = 50
        break
      case ‘fast‘:
        duration = 10
        break
    }
  })

  function writeCode(prefix,code,fn){
    let container = document.querySelector(‘#code‘)
    let styleTag = document.querySelector(‘#styleTag‘)
    let n = 0
    // let id = setInterval(() => {
    setTimeout(function run(){
      n+=1;
      container.innerHTML = code.substring(0,n)
      styleTag.innerHTML = code.substring(0,n)
      container.scrollTop = container.scrollHeight
      if(n < code.length){
        setTimeout(run, duration)
      }else{
        fn && fn.call()
      }
    }, duration)
  }

四 Reference

??1 data开头的属性;

??2 box-shadow介绍;

??3 yarn官网;

??4 jQuery 中文文档;

原文地址:https://www.cnblogs.com/ygming/p/8419703.html

时间: 2024-07-31 07:12:02

画一个皮卡丘项目小结(4)的相关文章

画一个皮卡丘项目小结(3)

前言 继续总结过程中学到的新知识,这是第3部分. 一.设置上下两部分,上方展示代码,下方跟随展示效果 1 设置HTNL结构 <link rel="stylesheet" href="./css/default.css"> /*默认框架样式*/ <style id="styleTag"></style> /*引入跟随展示效果 样式*/ ...... <div class="code-wrapper

用css以写代码形式画一个皮卡丘

前一阵子在某个大神的github上看到他用写代码的形式来完成一个皮卡丘,于是心血来潮花了半个小时,也完成了一个作品. 这其中涉及到的知识点也不是很复杂,就主要是css定位的知识居多,然后就是边框属性如何画形状. 在线浏览网址:css画皮卡丘(友情提示:请电脑访问,由于定位属性的问题,手机显示不是很美观!) 然后就是一步步拼凑成的,怎么说呢,按照鼻子,眼睛,脸,嘴以及舌头来画的. 效果截图如下所示: 代码很简单,如下: html代码: <div id="code"> <

一个WPF小项目小结

一:缘起 在10月中旬的时候在学校BBS上看到有人有做PC桌面客户端的需求,做的是能耗的计算和评估,要算能耗,就有很多环节,最后对这些环节数据进行一些简单计算.我想要是做的话就用比较熟的wpf,就去聊了下,对方给了1张比较复杂的Excel表格(其实对方的需求并不是很清楚,最后大概10来张EXcel表格),说是要做成软件呈现的形式,也没要求数据库,反正只要有功能,界面他们也没概念,给了个98年的老软件作为参考,最后EXcel表格弄懂结构后不复杂,计算都是加减乘除.我就答应了,这个软件算起来大概花了

BZOJ 2324: [ZJOI2011]营救皮卡丘( floyd + 费用流 )

昨晚写的题...补发一下题解... 把1~N每个点拆成xi, yi 2个. 预处理i->j经过编号不超过max(i,j)的最短路(floyd) S->0(K, 0), S->xi(1, 0)(从i点继续走), 0->yi(1, distance(0->i))(从0出发), xi->yi(1, distance(i->j))(i点走向j点), yi->T(1, 0)(每个点必须经过至少一次), 然后跑最小费用最大流, 费用即为答案. 写完这道题感觉...只是会

bzoj 2324 营救皮卡丘

2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1440  Solved: 560 Description 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路. 火箭队一共有N个据点,据点之间存在M条双向道路.据点分别从1到N标号.小智一行K人从真新镇出发,营救被困在N号据点的皮卡丘.为了方便起见,我们将真新镇

BZOJ 2324 营救皮卡丘(最小费用最大流)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2324 题意:n+1个城市(0到n).初始时K个 人都在0城市.城市之间有距离.要求(1)遍历完n个城市(有一个人遍历了某个城市就算这个城市被遍历了):(2)遍历i城市前必须遍历完前i-1个城 市,并且在遍历前i-1个城市时不能经过大于等于i的城市.在满足(1)(2)的前提下使得K个人走的总距离最小. 思路:我们先看在实际情况下可以怎么走. (1)某个人遍历完某个城市后停在那里,以后不再

arm、linux、qt项目小结

QT资源文件 1.新建文件或工程 -> qt资源2.添加,资源名称(Image),选择路径,完成3,打开Image.qrc, 添加后缀,一般就是 /4.添加文件,添加图片5. 调用 (:/11.png) 转http://blog.sina.com.cn/s/blog_5c70dfc80100r257.html 在Qt中处理图片一般都要用到QImage类,但是QImage的对象不能够直接显示出来,要想能看到图片,初步发现有两种方法. 一.QImage转QPixmap,然后用QLabel::setP

【bzoj2324】[ZJOI2011]营救皮卡丘 最短路-Floyd+有上下界费用流

原文地址:http://www.cnblogs.com/GXZlegend/p/6832504.html 题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路. 火箭队一共有N个据点,据点之间存在M条双向道路.据点分别从1到N标号.小智一行K人从真新镇出发,营救被困在N号据点的皮卡丘.为了方便起见,我们将真新镇视为0号据点,一开始K个人都在0号点. 由于火箭队的重重布防,要想摧毁K号据点,必须

BZOJ 2324: [ZJOI2011]营救皮卡丘

2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2340  Solved: 963[Submit][Status][Discuss] Description 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘,也为了正义,小智和他的朋友们义不容辞的踏上了营救皮卡丘的道路. 火箭队一共有N个据点,据点之间存在M条双向道路.据点分别从1到N标号.小智一行K人从真新镇出发,营救