
在浏览器console里运行SVG动画
我发现一个有趣的事情,竟然能在浏览器console里显示SVG图片和SVG动画!我迫不及待的要把这写出来,我想知道是否还有其他人之前也发现了这个用法。同时也为这个功能感到兴奋。我是在经过一系列的错误debug、测试和研究中偶然发现了可以在console里显示SVG图片,不仅仅能显示,而能够运行SVG动画。下面是一个动画效果截图:

28副用JavaScript绘制的动态艺术绘画作品
使用JavaScript和HTML5技术绘制具有动态效果(流水、下雨、飘雾、飞雪等),而且还要伴音,水声、雨声、风声,栩栩如生。

overflow-wrap(word-wrap)、word-break和white-space的换行效果对比
之所以将word-break、overflow-wrap(word-wrap)和white-space这三个属性放在一起比较,是因为它们都有一个共同的作用,就是控制文本的换行。因为有三个,所以就容易混淆。这个三个属性有时候选任何一个都能实现我们的目标,但有时候只有某个特定的属性能实现我们的要求,这也就是我们今天要比较它们的原因,有相同点,也有不同点。

为什么要使用CSS变量以及它相对SASS变量的优势
CSS变量,很像任何其它一种编程语言里的变量,可以让我们对一个值进行反复的引用。始自2017年4月,所有的现代浏览器都支持了这个功能,使得我们能编写出更紧凑、更清晰的CSS样式。

优秀的制作粘性侧边栏效果的jQuery插件:Sticky Sidebar
所谓”粘性侧边栏(Sticky Sidebar)”,是指页面上侧边栏(Sidebar)的一种滚动方式,正常情况下,侧边栏是跟整个页面是一体的,当页面滚动时,侧边栏跟着一起滚动,而很多页面侧边栏内容的高度很短,很快侧边栏就会滚出浏览器可视窗口,于是,侧边栏的位置变成了空白。这个空白实际上是一种资源浪费,而”粘性侧边栏(Sticky Sidebar)”的特点是,侧边栏的位置不会形成空白,

CSS里”will-change”属性的黑暗面
will-change 属性这种现象跟元素层叠顺序(类似z-index)混乱有关,但是因为要使用 will-change 属性,就必须要接受这种混乱的现实。

几种方法告诉浏览器如何对页面进行性能优化
我想,这些浏览器开发商和规范制定者会说:“你想要更好的性能。而这些是我全部能做的了。有些事情我们做不了,但你们知道怎么做。这些之外的事情我们会尽力做好,剩下的事情你们来告诉我如何能做的更好。”

CSS性能优化新属性 contain 的语法、作用及使用场景
如果你开发的页面非常复杂,那么,这个CSS的contain技术可以帮助你优化页面的性能。而对于第三方的小饰件,始终使用contain: strict;是很好的习惯,它可以保护你的页面不受它们的干扰而出现性能问题。

CSS性能优化新属性:will-change
然而,千万不要过度使用will-change属性,否则,事与愿违,页面的执行效率会降低,推荐的做法是当一个元素或属性发生变化时打开will-change,变化完成之后关闭它。

在浏览器中使用JavaScript module(模块)
在浏览器中也可以使用JavaScript modules(模块功能)了。目前支持这一特性的浏览器包括: Safari 10.1. 谷歌浏览器(Canary 60) Firefox 54 – Edge 15 –

CSS 变量教程
今年三月,微软宣布 Edge 浏览器将支持 CSS 变量。这个重要的 CSS 新功能,所有主要浏览器已经都支持了。本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大。

Flexbox布局语法速查手册
一个flex父容器元素能给它的子元素建立一种新型的flex内容布局。这种布局其实是和将元素设定为display:block是很相似的,只是在flex布局里block换成了flex。float属性不好影响flex布局,flex父容器的margin不会和其子元素的margin有重叠效果。Flex父容器元素所形成的block容器特性跟普通的block容器元素所表现的特征完全一样。

如何修改手机浏览器地址栏和手机系统状态栏的主题颜色
这篇文章里,我将介绍如何修改修改手机浏览器地址栏和手机系统状态栏的主题颜色,让它跟你的网站的颜色相匹配。

如何在安卓手机里安装Lighttpd + php + sqlite3组合
之前的文章里我介绍了如何在安卓手机上安装Linux,下面我将介绍如何在这个安装了Linux的手机上安装Lighttpd + php + sqlite3组合。

如何“vmin”的一个小栗子
除了vm和vh两种单位外,还有两种类似的单位:vmin——取vw和vh中较小的一个为基准,和vmax——取vw和vh中较大的一个为基准。它们同样是一个单位数值,跟px、em、%的用法类似。

一个用CSS3制作的笑脸/哭脸表情变换开关按钮
今天在网上看到一有趣的开关按钮的制作,用到了SVG、css3和js,下面的演示中还引用了TweenMax.min.js,这是一个js动画工具库。

用纯CSS实现加载中动画效果
上面的这个加载中效果,以前是用gif动图实现的,但随着CSS的进步,CSS动画功能越来越强大,我们只用一小片段HTML和CSS就能实现,方便了很多,体积也减小了很多。

CSS小技巧:使用:not(:last-of-type)简化你的css代码
终于找到了一个好方法,使用:not(:last-of-type)简单方便,再也不要麻烦的单独使用:last-of-type了,不错!

如何用安卓手机备份你的网站数据
自从有了智能手机,很多以前不可能的事情都可以了,比如滴滴打车,共享单车,不带钱购物等,今天说的把手机当成服务器执行备份任务也是。对于程序员来说,在智能手机上能干的事情还有很多,需要慢慢发掘。

如何在安卓手机上安装nodejs
在手机上安装的Linux系统是个很精简的系统,很多东西需要手动安装,而且,手机的芯片是ARM架构的,debian和redhat的软件仓库了并没有支持这种芯片的nodejs安装程序。当然,你可以从nodejs官方网站上下载ARM架构的安装包手动安装。

在Linux上执行apt-get update时出现 Hash Sum mismatch 错误的解决方法
同样是Hash Sum mismatch的错误,在国内,也变成了具有中国特色的Hash Sum mismatch错误和具有中国特殊的解决方案。

如何在安卓手机上安装Linux系统
在我们日常使用的安卓手机里安装一套完整的Linux系统,将使手机变得无比强大。我们可以将整个 Linux/Apache/MySQL/PHP安装到里面,让它运行一个PHP网站;我们还可以将nodejs安装到里面,帮我们干一些临时的JavaScript任务

Linux/UNIX里的“You have new mail”是个什么鬼?
需要注意的是, /usr/sbin/sendmail 如今已经是一个标准的共享API,并不是指的最初的Sendmail MTA。事实上,你也不应该使用Sendmail,而是使用更先进的软件,例如OpenSMTPD, Postfix, 或 Exim4。所有的这些都提供了相同的 /usr/sbin/sendmail 工具,并且更容易配置,更安全,功能更强大。

如何去除 Inline Block 元素之间的空格
问题是这样的:如果几个inline-block元素放在一起,它们的代码是按常见的HTML标准格式化,那么,在它们之间就会存留一些空格。

为什么clear:both不起作用?
Web开发人员在调试网页时经常会遇到clear:both不起作用的情况,clear:both的作用是让改元素不浮动,让它在左右两边都没有其它网页元素排列。大多数情况下我们需要用用到clear:both,是因为让一个网页元素float:left或float:right时,它却浮动在其它元素旁,

Linux清空屏幕和清空当前输入的快捷键
学习这些小命令无疑会提高我们的工作效率,对Linux的学习是无止境的,比如下面这几个linux快捷键,我相信有些程序员会跟我一样最近才发现它的使用方法。

Linux下正确删除海量文件的姿势
进入这些目录里使用ls命令是愚蠢的做法,而直接执行rm *,没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用rm命令进行删除是无效的。

每天自动备份MySQL数据库的shell脚本
一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行。我们需要一种安全的,每天自动备份的方法。下面的这个shell脚本就是能让你通过过设定Crontab来每天备份MySQL数据库的方法。

升级Node.js的新方法:n 升级工具
重新从nodejs.org最新版本是一种方法,但我想应该有更简单的方法,那就是使用 n 这个工具包,我们可以使用NPM先安装 n 工具包,然后用它升级nodejs,十分的方便。

用纯JavaScript实现“复制到剪贴板”功能
,虽然是可以实现,但有一个弊端,它使用的是flash技术,而如今,很多浏览器开始不支持flash技术,所以,我们需要不依赖flash技术的JavaScript方法来实现浏览器端的剪贴板操作。今天给大家介绍的就是用纯JavaScript实现的解决方案:clipboard.js。

三分钟学会用ES7中的Async/Await进行异步编程
Async/Await基本规则
async 表示这是一个async函数,await只能用在这个函数里面。
await 表示在这里等待promise返回结果了,再继续执行。
await 后面跟着的应该是一个promise对象(当然,其他返回值也没关系,只是会立即执行,不过那样就没有意义了…)