前言 之前的两篇文章,一篇实现了tab页的新增,一个讲了如何实现滑动块,本篇就来讲一下如何实现tab的关闭,以及tab关闭时滑动块的变换情况。 关闭tab 关闭tab主要从两个方面实现: 定义关闭tab方法 触发滑动块位置的修改 绑定点击事件 tab主要分为两个部分,左边的名称和右边的关闭按钮,我们这里给关闭按钮绑定一个点击事件。 定义点击事件 关闭tab又分为两种情况: 关闭的是滑动块所在的tab,即被激活的tab 关闭的是非滑动块所在的tab 如何区分是不是滑动块所在的tab呢,用关闭tab的route.path与activeRoute.path 移动滑动块 最后就是考虑如何移动滑动块了。上面列举了关闭tab的两种情况,那么滑动块的移动也得针对于以上两种情况进行分别实现。 1. 2, 关闭非激活tab 当关闭非激活的tab时,滑动块位置会发生变化,但还是修饰之前的activeRoute。 这个在closeTab中是如何实现的呢?
3. tab滑动块 我们点击菜单或者tab的时候,会发现有个滑动块会滑动到tab下面。 其实这个滑动块就是一个div,只不过它的宽度是和位置是动态可变的。 滑动块的html在div.nav-tabs中是这么定义的:
可以看到滑动块的 这样滑动块的宽度和在水平轴的位置就计算出来了。那么,什么时候要调用这个方法呢,或者换种说法,什么时候回触发滑动块的移动? 点击菜单,新增或跳转tab 关闭tab 刷新页面 因为我们只实现了新增和跳转tab,这里就先以此为例来讲滑动块的原理。 滑动块变化 还记得我们是如何实现tab的新增吗? 这样,就在动态新增/跳转tab时实现了滑动块。 结语 同样,在关闭tab时也会触发滑动块滑动,这个就放在下一篇tab的关闭中一起讲,期待下一次再见。前言 话说ES6之前有局部变量,全局变量,唯独木有块级变量;也没有常量之说... 块级变量let及常量const var ES5及之前是木有块级变量这个说法的,常规性是用闭包来防止变量泄露; 我来列出下ES5 var声明的一些特点 函数内的变量若是带var声明,则会覆盖外部的全局变量优先使用 ,不在于取代var,而在于解决ES5中var声明中的一些痛点;这货就是let了 我来说说这货的特点 let是块级变量,不存在于window下[非全局属性],window.变量名是找不到这货的,它的生活空间就那么一小块 /* 不信瞅瞅 声明:const N1 = [1,'2']; 数组操作:N1.push(6) 输出结果:[1, "2", 6] 声明:const N2 = {a:'b'}; 对象操作:N2.add , 不,这货就是显式块级作用域 var idea = "playGame"; if(idea){ { let gameName = 'LOL'; //我就是显式块级作用域
小编说:View 的滑动是Android 实现自定义控件的基础,实现View 滑动有很多种方法,在这里主要讲解6 种滑动方法,分别是layout()、offsetLeftAndRight()与offsetTopAndBottom 本文选自《Android进阶之光》 View 的滑动是Android 实现自定义控件的基础,同时在开发中我们也难免会遇到View 的滑动处理。 实现View 滑动有很多种方法,在这里主要讲解6 种滑动方法,分别是layout()、offsetLeftAndRight()与offsetTopAndBottom()、LayoutParams、动画、 6 Scroller 我们在用scollTo/scollBy 方法进行滑动时,这个过程是瞬间完成的,所以用户体验不大好。 Scroller 本身是不能实现View 的滑动的,它需要与View 的computeScroll() 方法配合才能实现弹性滑动的效果。在这里我们实现CustomView 平滑地向右移动。
给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,s1 的排列之一是 s2 的 子串 。 具体题目链接
块级作用域 在es6(es2015)之前, 也就是es5中,作用域只有两种: 1. 全局作用域 2. 函数作用域 正因为只有这两种作用域, 所以存在 "变量提升" 现象, 即变量可以在声明之前使用,值为undefind.如下 console.log(tem);//输出undefined var tem = 6; 在es6中新增了块级作用域,新增的块级作用域通过 let 和 const 属性来体现: console.log(tem);//输出undefined let tem = 6; 下面介绍一下 let 和 2.不存在变量提升 3.存在暂时性死区 if (true) { n = 'abc'; // ReferenceError let n; } ES6明确规定,如果区块中存在let和const命令 在代码块内,使用let 或 const命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。
在一个代码块(括在一对花括号中的一组语句)中定义的所有变量在代码块的外部是不可见的。定义在代码块中的变量在代码块被执行结束后会变释放掉。这是件好事。 所以在 ES6 中规定了 let 和 const 来支持块级作用域。但是,是不是真的提升就不存在了呢,可以看下面暂时性死区这部分。 let let 可以理解为『更完美的 var』,使用方法很简单; let foo = 3; 使用方法基本和 var 相同,而且声明的变量只在其块和子块中可用,这点也与 var 相同。 禁止重复声明 在同一个块内,let 和 const 不能声明相同的标识符。 { var bar = 2; } console.log(bar); } foo(); // 1 zoo(); // 2 最佳实践 在 ES6
要创建块引用,您要做的就是在行的开头加上“大于”插入符号(>)。 在下面的框中,通过在每行上插入一个插入符号,使整个引用成为块引用。 曾几何时,这是一个好消息,沿着这条路落下了,这是一个很高兴的小男孩,遇到了一个名叫baby tuckoo的小男孩。 块引号可以包含其他Markdown元素,例如斜体,图像或链接。 你已经了解了在Markdown中创建块引用的全部内容!
本文主要介绍了三种代码块的特性和使用方法。 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 文章首发于我的个人博客: https://h2pl.github.io/2018/04/24/javase6 代码块:用{}包围的代码 java中的代码块按其位置划分为四种: 局部代码块 位置:局部位置(方法内部) 作用:限定变量的生命周期,尽早释放,节约内存 调用:调用其所在的方法时执行 public class } } 静态代码块 位置:类成员位置,用static修饰的代码块 作用:对类进行一些初始化 只加载一次,当new多个对象时,只有第一次会调用静态代码块,因为,静态代码块 C(); C c2 = new C(); //结果,静态代码块只会调用一次,类的所有对象共享该代码块 //一般用于类的全局信息初始化 //静态代码块调用 //代码块调用
prot = 'appnium的prot' driver = webdriver.Remote(f'http://{id}:{prot}/wd/hub', desired_caps) 二.向各个方向滑动 ] y = driver.get_window_size()['height'] return x,y def swipeUp(driver, t=500, n=1): '''向上滑动屏幕 i in range(n): driver.swipe(x1, y1, x1, y2, t) def swipeDown(driver, t=500, n=1): '''向下滑动屏幕 for i in range(n): driver.swipe(x1, y1, x1, y2,t) def swipLeft(driver, t=500, n=1): '''向左滑动屏幕 i in range(n): driver.swipe(x1, y1, x2, y1, t) def swipRight(driver, t=500, n=1): '''向右滑动屏幕
代码编写中,使用{}声明的程序块就属于代码块,而根据其出现的位置,及声明关键字的不同,分为四种:普通代码块、构造块、静态块、同步代码块(多线程中涉及) 1、普通代码块 在方法中使用{}定义起来的一段代码 将普通代码块中提取到类中使用,就形成了构造代码块。 3、静态代码块 如果代码块中使用了static关键字定义,则该代码块为静态代码块: 在非主类中定义的; 在主类中定义的; 【举例】:非主类中定义的静态块 protected void onCreate System.out.println("构造块"); } static { //静态块 System.out.println("静态块"); } 以上可以发现,静态块优于主方法先执行。 4、总结 代码块对于现阶段开发意义不大,了解即可。
块级声明 块级声明就是让所声明的变量在指定块的作用域外无法被访问。块级作用域在如下情况被创建: 一个函数内部 在一个代码块内部 let声明 let声明的语法和var的语法一致。 基本可以使用let替换var,但会将变量的作用域限制在当前代码块中。let声明不会被提升到当前代码块的顶部。 禁止重复声明 如果一个标识符在代码内部被定义,那么在此代码块内部使用同一个标识符进行let声明就会导致抛出错误。 正因为如此,所有的const变量都需要在声明时进行初始化 const MAX_ITEMS = 30; const NAME;//语法错误 常量与let声明都是块级声明。 ;//false const ncz = "hi"; console.log(ncz);//hi console.log("ncz" in window);//false 随着更多的开发者迁移到es6上
ES6出现之前,只有函数可以形成作用域。而ES6中新增了块级作用域概念。 let和const命令可以构成一个块级作用域。 1.let 用法类似var,声明一个块作用域内的变量,注意,块作用域外无法访问该变量。 用法如下: // 在if语句中定义块作用域 var check = true; if (check) { let value = 6; } console.log(value); //undefined 如果使用let,i变量的作用域范围只限于块作用域,即每次循环的代码块,如此一来,最后a[6]()可以返回期望值:6。 例如: const foo = {a: 1}; foo.b = 3; // 正确 foo = {b: 6}; // throw error: "foo" is read-only 3.小结 块级作用域的出现
解题思路 1,滑动窗口类题目一般都需要左右两个指针,重点放在理解和优化窗口移动的逻辑 2,注意本题是提换K个字符而不是替换K种 3,显然最大长度=窗口内出现次数最多的字符的次数+K 4,每次移动右指针,
学习这一块内容前,先得大概知道"哈希算法"和"对称加密算法"是咋回事儿.
error_log /www/wwwlogs/access.log; # 配置SSL,具体详细配置前去搜索SSL配置 在:https://www.zanglikun.com/1363.html 红色块 keepalive_requests 120; location 块{ # 请求资源块 root /www; # 拒绝所有请求 deny all; # 允许某个ip allow 192.168.1.1
欢迎大家关注我的知乎专栏-《象尘说》,https://zhuanlan.zhihu.com/fed-talk ,微信写技术文章太不好编辑了,So,首发都会在知乎专栏,最近主要是写《深入理解ES6》阅读笔记 1; }}// 其实不会,执行顺序会变成function b(){ var v; console.log(v) if (true){ v = 1; }} 好了,我们不复习之前的知识了,块级作用域顾名思义的其作用域在一个小块中 ,其中跟两个关键字有关系 let 和 const ,于是乎你用它们定义的变量,也就只能存在于块级作用域内了。 定义的变量是不允许再赋值的,但是它允许对于键的再赋值,比如: const b = {a:1}// b.a = 2 (YES) 可以说对于以前我印象中最深刻的是如果从数组里可以正确的获取到其数值,需要借助闭包来完成,而现在因为块级作用域的存在 很明显,块级作用域在某些时候帮助我们节约了很多事情,不会像因为变量提升而带来的某些不可预知的奇怪问题。
今天和朋友聊到这个功能,刚开始的想法是自定义view,如何进行滑动监听,经过一列操作完成效果后,发现了一个贼简单的实现效果,如下(老规矩后面有可运行代码)。 效果图: 1.在布局中放入一个ScrollView,然后确保里面的内容能够达到滑动的效果 2.获取屏幕的高度 //获取屏幕高度 private float getScreenHeight
项目里头需要用到一个在垂直方向滑动页签的效果。 具体链接 传送门 其中介绍了四五种方案,选择困难症爆发了。。。。。。 return super.onTouchEvent(swapXY(ev)); } } 这两种方法基本效果都OK,接下来是我们举一反三的阶段了,我要封装一个支持横向纵向都可以滑动的
java中的自由块分为两种: 静态块和非静态块 静态块: 1 public class Test { 2 static int x = 10; 3 //静态块:静态块的执行时机是在class 文件装载的时候;静态块只会执行一次 4 //多个静态块的时候,按出现顺序执行 5 static{ 6 x+=5; 7 } 8 } 非静态块: 1 public class Test { 2 //非静态块:每次初始化一个对象,都会导致一次非静态块的执行;在构造函数执行之前执行 3 //继承关系:父类的非静态块->父类的构造函数->自己的自由块->自己的构造函数 4 { 5 System.out.println("before"); 6 } 7 } 测试demo: 1 public class Test { 2 3 static int x = 10; 4 //静态块:静态块的执行时机是在class文件装载的时候;静态块只会执行一次 5 //多个静态块的时候,按出现顺序执行 6 static