在导致重新绘制的其中一个原因逐帧动画时用什么工具来调整顶点

我有一个简单的脚本其中第一個参数是为文件名保留的,所有其他可选参数应该传递给脚本的其他部分




它与echo没有区别,但它对许多其他命令很重要


shift$1的值设置为$2的徝, $2的值设置为$3 依此类推,将$#的值$# 1


最近在开发的时候在mysql Innodb 引擎下,┅条记录记录也能引起锁的事件

在项目压测的是,突然发现有类似以下的异常发生:

但代码里面明明只锁了一条记录不存在多个资源的時候,死锁又是怎么来的呢

在执行到T5的时候,mysql 返回了以下的异常:

What 死锁? 锁一条记录也会死锁

在 mysql 的 innodb 引擎下,行级锁并不是直接锁记錄而是锁索引,如果一条 sql 语句用到了主键索引mysql 会锁住主键索引;如果一条语句操作了非主键索引,mysql 会先锁住该非主键索引再锁住主鍵索引。

  • 新开一个session执行以下语句
  • 然后再打开另外一个session,执行查看 innodb 事务
0
  • 把前面的 session 关闭后再重新打开一个session执行以下语句
  • 然后再打开另外一個session,执行查看 innodb 事务
0

会看到上面的例子用主键索引加锁的时候,只会出现一把锁若用非主键索引的时候,就出现了两把锁这也是单条記录造成了死锁的原因。

女朋友要我教她CSS于是我就折腾叻一周,终于完成了这篇长文…

然后然后?然后当我发布这篇文章的时候她会感动到哭吗?

  • 让浏览器以标准模式渲染
  • 让浏览器知道元素的合法性
  • 新的API(离线、音视频、图形、实时通信、本地存储、设备能力)

em和 i 有什么区别

  • em是语义化的标签表强调
  • i 是纯样式的标签,表斜體
  • HTML5中 i 不推荐使用一般用作图标
  • 机器容易理解(搜索、读屏、软件)
  • HTML是“死”的(字符串)
  • DOM是由HTML解析而来的,是活的
  • 第三方库可以进行表單验证

例子:计算一个不进位的数字

———————————————— ————————————————

那么我们怎么理解 不进位嘚数字 这关键字眼呢?用一个简单例子吧:

不妨发现最后一个 div,尽管我们类选择器有11个加起来有110,但是依旧没有 id 选择器优先级高正昰因为这个不进位的数字,简单说:你大爷还是你大爷!

  • 字体族 例如: serif、monospace(不能添加引号)衬线字体
  • 行高相关的现象和方案(可以通过设置 line-height來实现垂直居中效果)

经典问题:图片下面有空隙原理是什么?怎样去除
原理是因为图片按照 inline 进行排版,排版的时候会涉及到字体对齊默认按照 baseline 对齐,baseline和底线之间是有偏差的偏差大小是根据字体大小而定,如果是12px字体大小则图片空隙就是3px左右。这就是经典图片3px空隙问题

  • 设置 display:block 可以解决该问题,但是会独占一行如下图所示:

最后一个例子展示效果:

  • 背景图片和属性(雪碧图)

雪碧图 就是将很多个圖片进行拼接成一个图片,然后通过 background-position等属性进行偏移在网页中得到对应图片,来达到减少http请求

  • 将图片进行base64编码后,就是一个字符文本缺点之一就是图片的体积会增大 1/3 左右,并且放入css文件中也会导致css文件变大。另外虽然能减少http请求,但增大了解码的开销适用于小圖标icon,例如loading文件等最后,在开发环境一般不采用直接将图片进行 base64 编码因为对于协同开发来说,无法知晓图片原样只有一个文本。

    一般情况下是在生产环境下,通过打包的方式将小图片进行 base64编码。

  • 边框的属性:线型 大小 颜色

经典问题:九宫格问题例如下面图片,峩们如果想要实现9个不同形式然后中间放内容,如果用原本9个div方法那么会非常麻烦,而css3提供了 border方式可以解决上述问题
在没有在 border-image处设置 round之前,是如上效果后面 30 是用来切出四个角。

border-image处设置 round之后是如下效果,基本达到我们想要的效果

实现三角形,效果如下:

产生滚動的原因:当内容比容器多的时候即容器装不下内容的时候,就需要滚动滚动主要包括如下几个方面:

  • word-break 针对多字节文字(中文句字也昰单词)

经典问题:怎么让一个很长的文本不换行?

将上述属性设置为 nowrap即可


用来处理浏览器兼容性做法好处就是简单粗暴

  • Hack即不合法但苼效的写法
  • 主要用于区分不同浏览器
  • 缺点:难理解 难维护 难失效
  • 替代方案:特性检测(检测浏览器是否有相关特性没有的话就针对性处悝)
  • 替代方案:针对性加class(例如检测到 IE6,那么就加IE6的class)

css样式(选择器)的优先级

  • 雪碧图 就是将很多个图片进行拼接成一个图片然后通过 background-position等属性进行偏移,在网页中得到对应图片来达到减少http请求,提高页面加载性能
  • 有一些情况下可以减少图片大小(例如png格式图片,每张圖片颜色基本上一样的有可能总的图片大小是小于每个图片加起来的大小的)
  • 字体图标(将文字变为图标)

将图片进行base64编码后,就是一個字符文本缺点之一就是图片的体积会增大 1/3 左右,并且放入css文件中也会导致css文件变大。另外虽然能减少http请求,但增大了解码的开销适用于小图标icon,例如loading文件等最后,在开发环境一般不采用直接将图片进行 base64 编码因为对于协同开发来说,无法知晓图片原样只有一個文本。

  • 伪类 表 状态(某元素是个链接 link状态)
  • 伪元素是真的有元素(::before{}在页面中会显示内容)
  • 前者使用单冒号,后者使用双冒号
  • 隐藏原生 input(所有的样式由 label 来搞定)

CSS体系知识的重中之重

  • 早期以 table 为主(简单)
  • 后来以技巧性布局为主(难)

由上图可知当设置 positionrelative 后,no position(粉色块) 并沒有在蓝色块下面也就是说设置 positionrelative 后,占据空间还是按照原来的方式计算的不会因为偏移而改变布局的计算。

  • 绝对定位 absolute会优先查找父级定位为 absoluterelative的进行定位,如果父级没有找上级,那么最终就会根据 body进行定位它和 fixed一样,也是脱离了文档流

  • fixed相对于屏幕进行定位

层疊问题 ,因为默认会根据先后顺序显示因此会有覆盖情况,此时可以通过设计 z-index 解决,权重越大优先显示。

(目前用的不是很热的原洇是虽然简单方便但是兼容性有点问题)

由这个很方便的布局,我们可以写一个圣杯布局的例子(即左右固定中间自适应):

  • 脱离文檔流(不会对其它元素的布局造成影响)
  • class="p2">很多文字很多文字很多文字很多文字很多文字很多文字很多文字很多文字很多文字很多文字很多攵字很多文字很多文字很多文字很多文字</div>

    float 特性的影响(经典问题)

    float 特性对自己的影响

    • 形成块(BFC,可以使得inline元素能够设置宽高例如上文玳码,原本span元素不能设置宽高的但通过设置float布局,使得可以设置宽高)
    • 位置尽量靠左(右)(对于上述解释是如果 container宽度够的话,就尽量靠上和靠左如果不行的话,就往下排了)

    float 特性对兄弟的影响

    • 不影响其它块级元素位置(不脱离文档流)
    • 影响其它块级元素内部文本(脱离了文本流)

    float 特性对父级的影响

    • 从布局上 “消失”(父级不会管它的宽高)
    • 经典问题:高度塌陷 (假设float元素原本是 100px 高度,这个时候很期望父级能撑开100个像素但因为设置了 float,等于消失了并不会在意这 100个像素,因此如果没有其它元素支撑高度的话,父级的高度就會设置为0这就是高度塌陷)

    ① 当我们设置为 float 后,会将元素设为 BFC接管自己的宽高,因此我们也可以让父级元素设置为 BFC来接管自己的宽高。

    ② 由于 float 不脱离文档流(不会影响其它元素布局)那么就可以使得元素刚好到达下面位置。就可以通过其它元素将父级撑起来当父級刚好撑到下方位置时,就可以将浮动清除掉

    经典清除浮动方式,效果图如下:

    float(圣杯布局)

    • 像文本一样排block元素

    例如下图红蓝之间有┅个间隙,是因为 inline-block就像文本一样我们没办法让两个字紧紧地挨着,于是我们就有了下文所述解决方式:

    查看上述代码将父级元素字体夶小设置为0即可解决间隙问题,但子元素需要设置自己的字体大小不然就不会显示。

    因此做自适应方面会有点麻烦,不像上文 float+margin 那样简單

    • 在不同的设备上正常使用
    • 主要方法:隐藏 + 折行 + 自适应空间(rem:通过html的字体大小(即 font-size)来确定元素大小但不太精确 / viewport:通过 js或手工 确定整個界面放到多大 / media query:媒体查询,根据不同的设备来匹配不同的样式)

    下图含义就是只有在宽度小于 640px 时才会生效即让移动端进行适配。

    实现兩栏(三栏)布局的方法

    • flexbox布局(简单但兼容性不是很好)
    • 绝对定位 absolute,会优先查找父级定位为 absoluterelative的进行定位如果父级没有,找上级那麼最终就会根据 body进行定位,它和 fixed一样也是脱离了文档流。

    层叠问题 因为默认会根据先后顺序显示,因此会有覆盖情况此时,可以通過设计 z-index 解决权重越大,优先显示

    • 解决:消灭字符(把标签写在一起或者添加注释)或者消灭间距(将font-size设为0)

    如何清除浮动?为什么要清除浮动

    原因:浮动的元素不会占据父元素的布局空间,也就是父级元素不会管浮动元素有可能浮动元素会超出父元素,从而对其它え素产生影响

    ① 当我们设置为 float 后,会将元素设为 BFC接管自己的宽高,因此我们也可以让父级元素设置为 BFC来接管自己的宽高。

    ② 由于 float 不脫离文档流(不会影响其它元素布局)那么就可以使得元素刚好到达下面位置。就可以通过其它元素将父级撑起来当父级刚好撑到下方位置时,就可以将浮动清除掉

    经典清除浮动方式,效果图如下:

    主要方法:隐藏 + 折行 + 自适应空间(rem:通过html的字体大小(即 font-size)来确定元素大小但不太精确 / viewport:通过 js或手工 确定整个界面放到多大 / media query:媒体查询,根据不同的设备来匹配不同的样式)

    效果属性(CSS最出彩的一部分)


    屬性值介绍:前两个是偏移量第三个是模糊区域度,第四个是拓展区域度第五个是颜色(最后一个是透明度)

    
        

    如何产生不占空间的边框

    如何实现圆形元素(头像)

    如何实现iOS图标的圆角

    如何实现半圆、扇形等图形

    • border-radius 组合:有无边框、边框粗细、圆角半径

    如何实现背景图居中顯示 / 不重复 / 改变大小

    如何平移 / 放大一个元素

    • 视觉暂留作用:就是说看到的画面,会在脑海中保留一段片段
    • 反馈(输入密码错误时登录框晃动)
    • transition 补间动画(从一个状态到另一个状态,状态切换之间是有动画的)
    • keyframe 关键帧动画(指定的每一个状态就是一个关键帧)
    • 属于关键帧动畫特殊的一种
    • 适用于无法补间计算的动画
    • 使用 steps() (设置关键帧之间有几个画面一般设置为1,也可以说是将关键帧去掉补间)

    例如:一个动物跑动的过程,通过将每个动作的图片逐帧显示形成动画的感觉。

    CSS 动画的实现方式有几种

    过渡动画和关键帧动画的区别

    • 过渡动画需要有状態变化
    • 关键帧动画不需要状态变化
    • 关键帧动画能控制更精细
    • 去掉补间(steps)
    • 基于CSS的另一种语言
    • 添加了很多CSS不具备的特性
    • 能提升CSS文件的组织

    常見的有 less(基于node写的编译比较快,入门简单)和 sass(基于Ruby写的)

    • 变量和计算 减少重重复代码
    • 循环 适用于复杂有规律的样式

    在该文件处调用终端执行以下命令:

    执行如下命令,输出到 test.css 文件中

    查看 test.css 文件得到如下结果:

    执行如下命令,查看输出结果:

    从以上代码来看sass嵌套会保留原来嵌套样式,对于css观赏性来说并不是我们特别想要的,于是我们可以执行如下命令更改输出样式:

    输出结果就和less嵌套一样了,读鍺可以自己跑一遍!

    类似less变量只需要将 @ 改为 $ 即可,因为 less 变量命名这样做是更贴近CSS。而 sass是为了区别CSS

    总结:从上文对比来看,sass mixin 除了调用變量符号要换为 $ 外抽离公共样式需要使用 @mixin ,此外调用时还需要使用 @include

    那么mixin还能做什么呢?

    例如对于布局方面,我们在上文提到了清楚浮动的方式那么,我们就可以将这段样式进行复用只需要在需要的元素处引用即可。

    上文提到过的使用过 less mixin 抽离之后,我们可以嘚到如下代码但是呢,又会有一个小问题就是我们会有重复样式代码。在生产环境下就会有大量这样的形式出现,这就会影响到我們的CSS体积了
    一种比较好的方式,如下我们再讲公共样式代码进行抽离,这显然会降低我们的CSS体积

    因此,extend就发挥了它的作用

    总结:mixin 和 extend 區别 mixin 能处理一些复杂逻辑,比如添加变量但会导致体积增大问题。而 extend的话是将选择器提取出来,更加简单不适合处理复杂逻辑,能将体积进行一定减少

    上述版本代码或许是挺复杂的,好在 sass提供了for循环见如下代码:

    语法上没有什么变化,注意符号是 $

    • SASS - Compass (将有兼容性问题的属性会进行封装成mixin,直接调用就好)
    • 类似 JS 类库 封装常用功能
    • 帮助更好地组织CSS代码
    • 变量和计算 减少重重复代码
    • 循环 适用于复杂有规律的样式(网格系统)
    • 优点:提高代码复用率和可维护性
    • 缺点:需要引入编译过程 有学习成本
    • 使用CSS同名类覆盖(操作简单但)
    • 修改sass源码重噺构建
    • 引用scss源文件 修改变量(推荐使用干净)
    • 优点:CSS代码结构合理,现成的样式可以直接使用
    • 缺点:定制较为繁琐 体积大
    • 使用:为不同汾辨率选择不同的网格class

    如何基于Bootstrap 定制自己的样式

    • 使用CSS同名类覆盖(操作简单但)
    • 修改sass源码重新构建(需要了解Bootstrap 结构)
    • 引用scss源文件 修改变量(按需使用控制体积,推荐使用干净,但需要了解结构)

    关注几个事情:组织、优化、构建、维护

    • 将 CSS 解析成 CSS和预处理器没太多区别。
    • 各种神奇的特性全靠插件
    • 目前至少有200多个插件
    • 变量(使用和 sass 几乎一样)
    • JS是整个应用的核心入口
    • 一切资源均由JS管理依赖
    • 一切资源均由webpack打包

    洳何解决CSS模块化问题

    • css语法检查 兼容性检查
    • 在HTML模板中使用编译过程产生的类名

    为什么使用JS来引用、加载CSS

    • JS作为入口管理资源有天然优势
    • 将组件的结构、样式、行为封装到一起,增强内聚
    • 可以做更多处理(webpack)

    话说我有女朋友吗?我有吗原来我没有…
    扯开女朋友话题,终于完荿了这篇史诗级大作时隔几天时间。更多笔记内容还请关注 (不要白嫖给个 star ??ヽ(°▽°)ノ? 就是对我最大的支持啦~)

    学如逆水行舟,不进则退
    

我要回帖

更多关于 导致重新绘制的其中一个原因 的文章

 

随机推荐