预览地址:
导航数据存放在github上:www.wangzc.cc/nav/index.html
导航数据存在本地:www.wangzc.cc/nav/local.html
源代码:https://github.com/wangzc92/webNav
有人会问,这页面跟之前的导航页面有啥区别?区别就是这个页面可以可视化编辑,添加删除排序都是轻而易举完成的。如果数据是存放在云上,编辑保存之后实时更新。
拿第一个内容存放在github上为例,打开页面之后,顶部右侧有个登陆键,使用github账号登陆之后,会出现下列选项:
点击Edit
则进入编辑状态,页面中所有的文字,图片,链接都可以修改,而且可以添加,删除,排序单站点导航或者一大类。修改完之后点击保存就自动同步到github上。
说明:此处例子存储在我的github上,登陆你们的github是没有权限合并到我这里,点击保存后会将代码克隆到你们的版本库,将数据存储地址改成你们的之后就可以作为自己的导航页面了。如果你们有更多更好的导航,欢迎提交合并请求。
打开页面源代码,发现代码非常简单,加上html标签仅有35行,除了引用mavo的js之外,自己未写一行js。
|
|
细看代码,能够发现几个未见过的属性:mv-app
,mv-storage
,property
,mv-multiple
。没错,这些都是mavo中定义的属性。下面就讲解一下具体实现。
根据官网介绍,Mavo是通过扩展HTML的语法来管理、存储和转换数据的Web应用程序。特点有:
使用方法也特别简单,只需下载或引用mavo的css和js。
mavo扩展属性较多,下面介绍几个最重要的,更多详见官方文档。
是mavo的根节点,可以理解成一个app应用的名字或id。
|
|
告诉mavo你的数据存放在哪里。可以存放在本地或云端。
mv-storage="local"
将数据存储在浏览器的localStorage中,但这种方式无法将你的数据分享给其他人,而且本地存储也是有容量限制的。github: 你不需要了解它是如何存储在github并从github上获取数据的,只需设置好存储位置即可。
|
|
其他云端
简单理解property定义的是该字段名。如果该节点定义的有class或id,可以直接拿来作为字段名,不需重复定义。
|
|
如果说一个property是一个个体或字段,那么mv-multiple可以说是一个组或类。上面导航中有两个mv-multiple
:一是单个站点组,由站点图标,站点标题,站点描述和站点链接组成。二是导航组,由多个站点组组成的大类。
mavo还提供了很多属性,相互结合可以做出很复杂的页面,而代码却十分简单。更多属性例子请自行去官网查阅。
利用mavo,曾做过可视化编辑多语言系统,解决编辑不懂代码的难题。
有了这个导航页面,随时可以添加内容,归类整理。最后还是那句话,如果你有更好的前端网站链接,欢迎编辑好发送合并请求,让前端导航更全。
]]>竹风原创,转载请附上原文链接:http://wangzc.cc/blog/web-nav-mavo/
gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。
|
|
在项目根目录下创建一个名为 gulpfile.js 的文件:
然后运行$ gulp test
执行任务。
gulp简单易学,主要有四个方法:.src, .dest, .task, .watch
,如果你能熟练掌握这四种方法,那么恭喜你,可以开启你的自动化之路了。
globs (类型: String
或 Array
)
需要处理的源文件匹配符路径,可使用通配符匹配多个文件。
常见通配符:
src/*.js
选择src目录下的所有js文件。src/**/*.js
匹配src目录下所有的js文件,包含各个子文件夹中的js。!src/a.js
不包含a.js文件。src/{a, b}.js
匹配a.js和b.js文件;src/*.{jpg, png}
匹配src目录下所有后缀名为jpg和png的文件。options (类型: Object
)
除了 node-glob 和 glob-stream 所支持的参数外,gulp 增加了一些额外的选项参数:
options.buffer
类型: Boolean
默认值: true
;设置为false,将返回file.content的流并且不缓冲文件,处理大文件时非常有用;options.read
类型: Boolean
默认值: true
;设置false,将不执行读取文件操作,返回null;options.base
类型:String
; 设置输出路径以某个路径的某个组成部分为基础向后拼接。String
or Function
)options (类型: Object
)
有2个属性cwd、mode:
options.cwd
类型:String
默认:process.cwd()
;输出目录的 cwd 参数,只在所给的输出目录是相对路径时候有效。options.mode
类型:String
默认:0777
;指定被创建文件夹的权限。Array
)String
or StringArray
)Object
)StringArray
)Function
)看完这么多理论,来看个小栗子:
|
|
分析:这里一共有两个任务,less
实现将less目录下(除了extend和page)所有less解析成css的功能;watchLess
监听less目录下的所有less文件,一旦发生变化执行less
任务。
]]>接下来将分几篇介绍gulp实用的插件,欢迎继续关注。
上面两种效果,不知道你更喜欢哪一种呢?下面分别向大家介绍实现方法。
先介绍一下js实现打字机效果的原理,其实主要是substring函数,它有两个参数,开始位置和结束位置,用于提取字符串中介于两个指定下标之间的字符。实现代码如下:
|
|
将文本通过substring函数分离开,然后不断向后提取输出。这也是比较传统的方式。现在介绍另一种使用新兴css3来实现这个效果。
实现打印效果我们第一想到的就是把文字一个个提取出来,但是css不能拆分文本,所以想到另一种方式,通过控制显示隐藏来实现分离。好,顺着这个思路写出代码:
|
|
代码也很简单,通过css分步动画,多少个文字就分成多少步,实现一个一个出现的效果。
纵观两种语言实现方式,我还是更喜欢js,简单粗暴。css方法中如果字体不同,中英文不同,单个长度都会发生变化,不太适宜开发维护。但如果文字较少,用css效果还是不错的。
今天的分享到此结束,关注我,每天都要更新哦。玩转前端,带你领略不一样的前端世界!
]]>怎么样,是不是很酷,快来学习一下吧。
Emmet,前身是大名鼎鼎的Zen Coding,借助css语法来提高输入html/css代码效率。Emmet作为一款插件被广泛运用在代码编辑器中,如sublime,webstrom,notepad++等都默认安装的有,如果没有可自行百度安装。
基本使用:输入Emmet命令,按Tab键即可。
html文档一般包括<html>
<meta>
<head>
<body>
标签等,这些固定标签可以通过Emmet一键生成。
Emmet可以自动补全标签,只需输入尖括号内的标签名然后按下Tab键,一个完整闭合的标签就生成了。另外我们可以使用”>”生成子元素,使用”+”生成同级元素,使用”^”返回上一层父级元素,使用”*”生成重复元素,使用”()”进行组合操作。
|
|
Emmet使用”#”和”.”来生成id和class属性,使用”[]”进行自定义属性,使用”{}”来定义标签内包含的内容。如果标签是div的话可以直接省略div。
比如输入下面这段,按下Tab键
运行结果如下:
加入属性再试一下
|
|
Emmet支持自动生成连续的编号,使用”$”符号快速生成相关属性的编号。如果需要生成多位的数字编号,可以组合使用多个”$”符号。如果需要指定反向编号,可以使用”$@-“符号。当然如果输出从某个编号到某个编号也是可以的,自己去探索吧。
|
|
书写css是枯燥无味的事情,Emmet可以帮你简化这个过程。生成的属性值默认是px,当然也可以生成其他单位,那就请记住下面几个符号:
“p”表示”%”,”e”表示”em”,”x”表示”ex”。
|
|
css一些属性经常要兼容各个浏览器而添加一大堆后缀,有了Emmet,一切烦恼轻松解决。例如下面生成圆角和渐变,太给力了。
|
|
在Emmet中可以快速生成占位文字:
如果需要生成重复的Dummy文字,可以使用如下命令:
|
|
并且支持模糊输入,如下:
这里就不贴效果了,自己去体验吧。
大概介绍了Emmet的功能,是不能很强大很酷炫!学会之后只需敲入命令就可以瞬间生成一个网页,当然我不建议使用太复杂太长的命令。平常敲代码再也不用输入尖括号了,爽歪歪!赶紧动起手,体验开发的乐趣!
如果喜欢,欢迎订阅收藏,我是竹风,欢迎交流学习!
]]>如果你能理解三原色原理,下面对颜色的定义也会更容易理解。
css中对颜色的表示法 主要有颜色名、十六进制、RGB和RGBA、HSL和HSLA。下面分别对几种方法进行讲解。
所有的浏览器都支持颜色名。HTML 和 CSS 颜色规范中定义了 147 中颜色名(17 种标准颜色加 130 种其他颜色)。这种表示方法很直观,但毕竟颜色不多,名字也不好记。所以也就常用的颜色会使用一下。下面列出的是17种标准颜色。
仔细观察十六进制和对应的颜色,是否发现了什么?没错,前两个字母表示的是红通道,中间两个是绿通道,后两位是蓝通道。还是利用三基色原理生成各种颜色。
RGB的工作方式与十六进制值类似。只是用数字0~255而不是十六进制数字来定义红、绿和蓝色通道。
|
|
十六进制的ff转换成十进制是多少,不会计算的自行百度。计算的结果就是255。
这下明白吧,从十六进制转换成rgb形式,不用借助工具也可以直接计算了。
RGBA在RGB的基础上 ,加入了第四个值。它用来指定alpha通道或者颜色的不透明度,值范围是0~1;0是完全透明,1是完全不透明。
HSL是色调(H)、饱和度(S)和亮度(L)的首字母缩写。它是定义颜色的另一种方式。对此很多人有共鸣,特别是习惯用图形编辑器的设计师们。其语法如下:
|
|
第一个值:色调。取值范围是0~360。这基本上是一个标准色轮里的一个点。
第二个值:饱和度。它指颜色的鲜艳程度(纯度),取值范围是0~100%;100%是颜色全彩色,0%是灰度。
第三个值:亮度。它指颜色的明亮度,取值范围是0~100%。100%是完全亮/白,0%是完全暗/黑。
HSL在很多方面都是有意义的。例如,你可以选择互补的红色阴影搭配前面的红色,只要通过改变亮度,像这样:
HLSA的工作方式与RGBA一样,你只需要对现有的颜色添加alpha通道值即可。例如hsla(0,100%,50%,0.5),它的结果是50%透明的全红。
另外也完全不用担心浏览器兼容问题,这几种表示方式几乎兼容所有主流浏览器。
了解颜色的产生的原理以及存储方式后,css颜色定义并不复杂,合理在网页上使用颜色,能够为你的网站增色不少哦。最后推荐一下w3cschool里面的颜色在线选择工具,几种表示方法可以相互转换。
竹风原创,转载请注明出处,谢谢!
]]>大家好,我是竹风,今天为大家推荐一款资源管理神器,资源管理器,俗称“我的电脑”。下面先看一下我打开关闭文件的姿势:
是不是有一种穿越到浏览器的感觉,没错,这就是Clover,一款小而精致且完全免费的软件,能为你的Windows Explorer资源管理器增加多标签页的功能,就像谷歌浏览器那样方便好用。Clover主要有以下几个特点:
要掌握功能强大,操作简单的标签页,只需记住Ctrl+T新开页面,Ctrl+W关闭页面,Ctrl+Tab切换页面,工作效率提高何止一倍!
Clover 通过插件的形式集成到 Windows Explorer,保留您通常的使用习惯,无需学习新的文件管理操作,马上就可以使用啦。
按Ctrl+D添加当前路径,或者直接将文件夹拖入书签栏。再也不用到处寻找要访问的文件夹了,瞬间到达,何等痛快!
Clover功能虽少,但却做到了极致,Chrome 控瞬间上手无压力!
如果你的文件存放位置杂乱无章的话,再推荐一款软件——Everything,让你瞬间找到你想要的文件,比系统自带的搜索功能不知道强大到多少倍。当然平时养成一个整理文件的好习惯很重要,再结合Clover,开发效率会提升不少,快去试试吧。
今天的分享到此结束,感谢大家的阅读。如果喜欢,欢迎订阅关注哦,你们的支持是我最大的动力。玩转前端,带你领略不一样的前端世界。
]]>比如我们想让一个div的宽度为50%,高度为50%,很自然的写出:
可结果发现宽度为50%,高度却不起作用。
查阅很多资料后,终于找到了解决办法。问题就在于浏览器计算高度和宽度的方式不同:
Web浏览器在计算有效宽度时会考虑浏览器窗口的打开宽度。如果你不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度。
但是高度的计算方式完全不一样。事实上,浏览器根本就不计算内容的高度,除非内容超出了视窗范围(导致滚动条出现)。或者你给整个页面设置一个绝对高度。否则,浏览器就会简单的让内容往下堆砌,页面的高度根本就无需考虑。
因为页面并没有缺省的高度值,所以,当你让一个元素的高度设定为百分比高度时,无法根据获取父元素的高度,也就无法计算自己的高度。换句话说,父元素的高度只是一个缺省值:height: auto;。当你要求浏览器根据这样一个缺省值来计算百分比高度时,只能得到undefined的结果。也就是一个null值,浏览器不会对这个值有任何的反应。
上面的演示例子是父元素没有设定固定高度,于是子元素的高度height: 50% 也不会起作用。解决办法就是给html和body加上height: 100%。
|
|
运行结果如下,得到我们想要的结果。
总结:高度百分比只有在父元素高度固定的情况下生效,利用宽高百分比,实现响应式布局。另外如果你的元素实际高度大于你设定的百分比高度,那元素的高度会自动扩展。
竹风原创,转载请注明出处,谢谢!
]]>该属性用来给容器添加一个或多个阴影效果。这个属性非常有用,可以结合伪类和动画实现设计的层次感和高亮度。基本语法是:
属性说明:
box-shadow阴影偏移量可正可负,为正值时则向右或下偏移。
box-shadow可设置多个阴影,中间用逗号“,”分隔;比如可同时设置内外影响,例如:
拓展:多个阴影巧妙结合,可以创造出很多意想不到的效果。
四色边框:
双重边框:
更多示例请自行创造。
通过css3的文本阴影属性可以用编程方式创建文本阴影。阴影可以创造出各式各样的效果,不过通常是高亮文本、给文本深度和使得文本突出显示。
语法是:
|
|
属性说明:
更多效果等你亲自体验…
阴影在网页开发中十分常见,巧妙使用阴影,可以为你的网页增色不少。
竹风原创,转发请注明原文链接,谢谢。
]]>你把爱分成了不同比例,谁又把多的那部分给占据;你把爱分成了不同比例,谁又把谁的那部分给占据。——易欣歌曲《分爱》
看到这张图,你有实现这个效果的思路吗?下面就教大家实现一个简单的半字符。
大家都知道,不论是中文字符还是西文字符,单个字符否是无法拆分的,它们是文字的最新单元。其实实现半字符的思路很简单,就是一个字写两遍,分别显示一半。当然不能真的把一个字写两遍,这样也太愚蠢了,而且当用户拷贝粘贴这段文字时会粘出同样的文字两份。这里就需要用到CSS伪元素:before和:after,记住这个“伪元素”的“伪”字,表明它本来是不存在的。我们的方法就是在伪元素里放置相同的字符,只显示半个,而原字符显示另外一半,最后把它们拼成一个字。
|
|
|
|
其实就是加了个after,before和after的宽度比例不一样,本体设为透明。
左右半个字符都可以用伪元素生成,这样可以生成三部分,也就是一个文字可以实现三种颜色啦。这里要注意的一点是,after样式中要添加一句
|
|
这条语句保证宽度是从右边开始计算。
别光看啊,赶快敲代码去试一试,体验css的艺术。
心有多大,江湖就有多大。我是竹风,关注我,一起探索前端的奥秘。
这里只引用了上面的一张图片,下面的倒影则是由纯css实现的,简直美爆了有木有?
box-reflect属性能够轻松帮助我们实现倒影效果,但是它只支持chrome, safari和opera等Webkit内核的浏览器,具体兼容性如下。
它的基本语法是:
属性说明:
none:此值为box-reflect默认值,表示无倒影效果。
<direction>
:此值表示box-reflect生成倒影的方向,主要包括above, below, left, right。分别代表四个不同方向。
<offset>
:用来设置生成倒影与对象(原图)之间的间距,其取值可以是固定的像素值,也可以是百分比值。
<mask-box-image>
:用来设置倒影的遮罩效果,可以是背景图片,也可以是渐变生成的背景图像。
附上效果图一张:
前端技巧:纯css3实现图片倒影效果可以使用渐变给倒影添加遮罩效果,比如刚开始的那种效果图,实现代码如下:
火狐中可以使用-moz-element()来生成倒影。
具体实现方式是先将图片放在id为img的盒子里,下面加一个存放倒影的div,html代码如下:
css代码如下:
box-reflect使用的时候要加-webkit前缀,-moz-element()也只有火狐能识别出来,所以二者结合互不影响,完美实现图片倒影效果。
看完教程,赶快去亲自试验一下吧。
]]>如果你是刚进入web前端研发领域,想试试这潭水有多深,看这篇文章吧;
如果你是做了两三年web产品前端研发,迷茫找不着提高之路,看这篇文章吧;
如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧;
web前端研发工程师,在国内是一个朝阳职业,自07-08年正式有这个职业以来,也不过三四年的时间。这个领域没有学校的正规教育,没有行内成体 系的理论指引,几乎所有从事这个职业的人都是靠自己自学成才。自学成才,一条艰辛的坎坷路,我也是这样一路走来。从2002年开始接触web前端研发至今 已然有了9个年头,如今再回首,期间的走了很多弯路。推已及人,如果能让那些后来者少走些弯路,辛甚辛甚!
所谓的天才,只不过是比平常人更快的掌握技能、完成工作罢了;只要你找到了正确的方向,并辅以足够的时间,你一样能够踏上成功彼岸。
本文将web前端研发编程能力划分了八个等级,每个等级都列举出了对应的特征及破级提升之方法,希望每位在看本文的同学先准确定位自己的等级(不要以你目前能力的最高点,而是以你当前能力的中档与之等级作对比,以免多走弯路),参考突破之法破之。
所谓的级别,只是你面对需求时的一种态度:能够完成、能够完美地完成、能够超出预期地完成。以追求完美的态度加以扎实的编程功力,那就是你的编程水平。
切记心浮气燥,级别够了,那级别里的东西自然就懂了。悟了就是悟了,没悟也没关系,静下心来,投入时间而已。
能够解决一些问题的水平。有一定的基础(比如最常见的html标签及其属性、事件、方法;最常见的css属性;基础的javascript编程能力),能够完成一些简单的web前端研发需求。
举个例子:删除一字符串中指定的字符。
|
|
首先不要苛责代码的对错严谨,毕竟每个程序员都有这样的一个过程;其次,这两段代码在这个实例里没有什么大过错,可能会有瑕疵,但能够解决问题(删除指定的字符),这就是这个级别的特征。
再举个例子:
|
|
入门”阶段是每个程序员的必经之路,只要”入门”,你就上路了。所谓”师傅领进门,修行靠个人”,有了这个”入门”的基础,自己就可以摸索着前进了。
将javascript、html、css之类的编码帮助手册里的每个方法/属性都通读几遍!只有将基础打好,以后的路才能走的顺畅。参考这些帮助文档,力争写出无瑕疵的代码。
这些编码文档建议不仅是在入门提高期看,在你以后每个阶段破阶的时候都应该看看,最基础的东西往往也是最给力的东西,有时能够给你带来意想不到的收获。
能够正确地解决问题。不管你是通过搜索网络,或者通过改造某些成品代码(jquery/dojo/ext/yui)案例,只要能够无错地完成需求。
同样以上面的那段”字符串剪裁”代码为例:
|
|
仅仅解决问题对于”登堂”阶段来说已经不是问题,这个级别所给出方案不能是漏洞百出。以上面这段代码为例:replace方法的第一个参数虽然可以支持字符串,但最佳的类型是正则表达式;
|
|
对比”入门级”的代码,不管是从代码量、代码效率、代码优美性、代码思路来说,”登堂”级的这个日期处理代码都要优秀很多。
这个阶段虽然能够给出正确的解题方案,但是不一定是最优秀的方案。如何才能得到最优秀的方案呢?首先就是积累各种能够解决需求的方案,然后再验证每个方案,在这些方案中选择最好的一种。因此该阶段的进阶之路就是”行万里路,看万卷书”,积累各个需求的各个解决方案。
你可以扎身在专业论坛(蓝色理想、无忧、csdn)里,通读所有的faq及帖子;你可以打开搜索引擎,穷举所有的搜索结果。自己建立测试环境一一验 证这些代码:去揣摩每段代码的意图,去比较每段代码之间的差异。这两条路可以让你快速完成原始积累,当你再面对大多数需求时能够说这些问题我以前做过,那 你就水到渠成地晋阶了。
最强代码,知道所有能够解决需求的各种方案,能够选择使用最优秀的方案满足需求。这个级别基本上产品开发编程中的代码主力。给出的一招一式,招招都是绝招。
还以上面的那个例子为例,你能说出1、2、3之间的差别,以及适用于那种环境吗?
|
|
能够解决问题的方法会有很多,但是对于程序员来说应该选择最优秀的。上面这段代码从代码量来说”正则表达式”最优秀;从代码执行效率来说: “字符串剪裁”法最高(chrome中”正则表达式”效率最高),split法最次;从可扩展性上来说,”正则表达式”法最优。具体使用那种方案视具体的 需求环境而定。
“入室”阶段,程序员应该能够肯定的回答:对于这个需求而言,我的代码就是最优秀的代码。
再以”今天是星期几”为例,”登堂”级的代码你敢说是最优秀的代码了吗?
|
|
对比”登堂”级的示例代码,上面这段代码给你什么感受?程序员追求的就是完美。”入室”级别追求的就是每一招每一式的完美无缺。
从web前端编程来说,通过2年左右的努力,很多人能够达到这个水平,但是,很大一部分人的编程能力也就止步于此。或限于产品的需求单一性,或限于需求开发的时间紧迫性,或限于人的惰性,能够完美地解决当前的需求就够了。
由于长期处于技术平台期,技术上得不到提高,通常这个级别的工程师会比较燥。技术上小有所成;或追求个人的突破;或追求产品差异性带来的新鲜感;或者只是想换个心情;因此很多此级别的工程师会经常换公司。
戒骄戒躁:
切勿以为自己能写一手漂亮的代码而自满;
切莫以为别人”尊称”你一声”大侠”你就以 “大侠”自居;
切莫以为自己积累了一些得意的代码就成了框架式开发。
细节决定成败,优秀的方案并不能保证最终的成功。还以”删除指定字符串”为例,原始字符串从格式上来看应该是了个url链接,在去除”pn=0″之 后,最末尾处留了一个尾巴”?”;如果原始字符串是”http://www.xxx.com/?pn=0&a=1″,去除”pn=0″之后 ? 和 & 两个符号紧贴一起,这更是明显的bug。
此阶段进阶之路就是:切勿心浮气躁;你不再被需求牵着走,而是你牵着需求走。注重细节,注意那些当前需求里没有明文给出的细节:代码性能的差异、运行平台(浏览器)的差异、需求的隐性扩展、代码的向后兼容等等。
再通读几遍html/css/javascript帮助文档。
我建议这个级别的工程师做一做webtreeview控件,要求总节点量一万左右操作流畅,你的晋升之路就在这个控件的编码过程中。
最强解决方案。你能够走在需求的前面,将当前需求里有的、没有直接提出来的、现在暂时没有但将来可能有的等等,及前端编程潜规则等各个方方面面都综合考虑,给出最优方案。以一招胜万招。
|
|
这个阶段已经不再追求一招一式,对你来说不是使用什么创新绝招解决需求,而是给出成熟稳重的方案,从根上解决问题。针对某个当前需求你的代码可能不是最优,但是针对此类的需求你的代码却是最优秀的代码。
很多web前端研发工程师在做了3-4年之后就会进入一个瓶颈期:产品开发需求是小菜一碟,没有新鲜的可以挑战的东西;代码开发中的稀奇的解题方法 都已经尝试过。没有了可挑战的难题,失去了探索的激情,也就没有了再上升的动力,好不容易走过”入室”级别的人又会有八九成止步于此。或转做技术领导人, 或转到其它的领域,或换公司。
这些人的上升之路在哪里呢?
这个阶段单单依靠技巧和数量的累积已经没有什么效果了,突破之路在第5层《化蝶》里会详细说明,我建议你在这个阶段末尾着重关注编程理论:面向对象/过程、代码组织形式、编译、代码规范、其它的框架设计等等。
我建议这个级别的工程师做一做webeditor控件,不要求完整功能,但是该控件里的模块划分、代码组织、编程思想做到位,给出一个系统的解决方案。
破茧重生,这个层次关注的是编程语言本身,而不再关心产品需求。什么是茧?产品需求就是茧。当你一招胜万招,打遍天下需求之时,你如果还拘泥于需求开发,那就是你限于茧中而不自知。要么就在这个茧里默默地老去,要么就破开茧获得新生。
还是以那个”字符串剪裁”的老例子:
|
|
这段代码相对于层次4《入微》有什么区别吗?从代码实现上来说没有太大的区别,但是从思路上来说却有着本质的区别:1、不再是就事论事,头疼医头,而是把一类问题抽象理论化,一招破万招;2、有封装的概念,不再是每次从零开始,而是站在半山腰开始爬。
在web前端研发队伍里也有很大一部分人《入室》层次时就自我感觉良好,直接跨跃到《化蝶》,积累自己的代码库,抽象化问题。但没有基础,缺少强大 的后劲,即使能够破茧也经受不了风吹雨打。一份不成熟的架构设计对团队开发带来的危害远大于它带来的好处,这种例子在业界屡见不鲜。不要拔苗助长,不要不 会走就想着跑,夯实基础,水到渠成地成长,厚积薄发,强力地破茧而出。
你已经从原始积累,到厚积薄发,到破茧而出之后,你所关注的应该不再是一招一式、一个项目、一个模块,而应该是一种思路,一种理论。你可以做以下几 个步骤以突破到更高层次:再仔细看几遍html/css/javascript接口帮助文档;选择一门强语言(c++/c#/java等)观察理解这些语 言的组织结构,语言设计;看看原型链,链式语法编程,泛型,接口编程,dom遥控器等等;仔细阅读成熟的web前端开发框架的设计文档,看他们为什么要这 样设计。
这里所说的大侠,不是大家互相吹捧的”大侠”,而是实至名归的高手。这个级别的人完全有能力写出不差于bindows/jquery/ext/yui/dojo的同等级别规模的前端开发框架。应用成熟的开发框架指导、解决问题。
|
|
自成体系,有基础,也有理论高度。知道为什么这样设计,也知道什么样的设计最好。比如这个例子可以有这样的封装:
|
|
而为什么不采用下面的那种封装呢?经过了《知微》和《化蝶》你就懂了。
道法自然,从根上去寻找突破的契机。你可以研读html解析引擎设计与实现,js解析引擎设计与实现,其它语言的代码解析与编译实现等等。
或者出些书。低级别的人写的书要么是一大抄,空无一物;要么是害人。
这个级别的人已然到了无招胜有招的境界。项目开发中的难题?没有难题!运行平台的差异?从根本上搞定!代码规范、开发模式,早已经被抛在身后。这个级别的人已经不再关注于某个前端开发框架,而是应对具体的环境给出最佳的理论指导。
这个级别的人所注意的应该是以最合理的系统架构引领着整个团队的进步,在什么样的场景下该用什么样的架构设计。3个、10个、50个、100个人的团队最应该用哪种模式?等你到了宗师级别,你再来回答吧。
每一个宗师就是一个高山,就是一个领域里的神,但是你仅满足于在一群比你弱的群体展现你的强大吗?如果还你是止步原地,那总会有人乘着飞机、宇宙飞船从你的头领掠过,高处不胜寒!
要突破这片领域,那就必须跳出这片领域。要想突破web前端研发的宗师级,那就跳出web前端吧,上面还有web开发。即使你是web前端的宗师, 但没有快速的数据响应,没有高速的网络架构,没有优美的系统支持,你又能如何?所以突破之路就是把目光投到整条web开发的链条中去。
其实严格来说,飞升已经不是原领域的范围了。在web研发领域,对于这个层次的有一个很好听的称谓:架构师。当然那些”伪架构师”另当别论。
一法通,万法通。在其它的技术领域,也可以按照《入门》《登堂》《入室》《入微》《化蝶》《大侠》《宗师》来划分等级;一样也可以按照我这里所写的每个级别的【进阶之路】来快速提升。
祝贺你再获辉煌!
]]>看完这篇文章,只能说自己的进步空间还很大,前端路漫漫,一起加油!
原文链接未找到。再次感谢原文作者!
iframe作为一种内联框架,经常用于在页面中嵌套另一个页面或多媒体文件。iframe标签要定高度才能撑开,高度写死适配又会出现各种问题。拿使用较多的插入视频为例,高度太高,上下会出现黑边。高度太低,播放时左右又会有黑边。
一般我们从视频网站粘贴过来的代码如下:
|
|
巧用padding的百分比来解决问题。
在iframe外层嵌套一层div,宽度根据页面布局设置,此例中估且设为100%全屏,高度设为0,使用padding撑开盒子高度。padding值根据视频宽高比例进行设置。最后设置iframe为绝对定位铺满全屏即可。
|
|
|
|
重点:当padding/margin取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!
]]>结束语: 小小css能够简单实现多行js代码中才能够完成的效果,在工作学习中千万不可忽略css的大作用。
竹风原创,欢迎交流学习。转载请附上本文链接,谢谢!
先上全家福:
是不是快被我绕晕了,好吧,下面对每个进行解析,用图片说话。
:first-child是用来选择与某个元素同级的第一个元素,且是该元素类型,比如这里有个列表,想让列表中的”1”具有不同的样式,我们就可以使用:first-child来实现:
:last-child选择与某个元素同级的最后一个元素,且是该元素类型,与:first-child相对,选择最后一个元素。这里也要同样注意那个问题。例如:
这是今天的重点,也是最实用的,好好理解一下。:nth-child()选择与某个元素同级的一个或多个元素,且是该元素类型。参数值是an+b,n是计数器,从0开始。a是倍数,b是偏移量。主要有下面几种形式:
:nth-last-child()与:nth-child()用法一样,唯一的区别就是一个从前面数,一个从后面数。这里就不赘述了。
:only-child选择的元素是它的父元素的唯一一个子元素;也就是该元素不能有其他的同级元素。与:only-of-type的区别是,:only-of-type选择的元素可以存在同级元素,但该元素类型只能存在一个。
我之所以这样写是我不想再重复讲述,如果分类的话,前五个可分为一组(简称为child组),后五个分为一组(简称为type组),用法一对一都是一样的,只是有一个重要的不同点。
child组计数时的第几个都是从该元素的第一个同级元素开始,如果第几个与该元素类型一样则生效。而type组计数时的第几个都是从与该元素类型一样的同级元素的第一个开始,不受其他同级元素的干扰。这是重中之重,好好理解一下,可以写几个例子感受一下。
]]>结构伪类选择器不兼容IE8及更早版本,所以对浏览器兼容性比较强的小伙伴们还是不要选择这些方法,老老实实定义id或class吧。如果要求不高,这些方法在选取标签添加样式上还是很给力的,快去尝试一下吧。
竹风原创,欢迎交流学习。转载请附上本文链接,谢谢!
Git具有以下特点:
|
|
|
|
|
|
|
|
|
|
]]>结束语: 命令有些多,可真正在工作中用的最多的也就几条,其他的了解一下,用到的时候翻阅笔记吧。在这里提醒一下,在提交自己代码之前一定要pull一下,不然很容易把别人辛辛苦苦码的代码覆盖,这样很容易挨揍的哦~
竹风原创,欢迎交流学习。转载请附上本文链接,谢谢!
在此之前你要掌握的一些基础是:
要绘制一个太极图,首先要先仔细观察分析,有图层概念的人很容易找到合成方法,如下图:
看到这里,相信很多人都已经明白了,赶紧去先自己尝试一下吧!还不太明白的继续往下看。
我们将太极分成了三部分,利用width和border实现底部黑白主体部分,然后绘制两个width和border颜色不同的圆绝对定位到主体部分。
先在html中定义一个ID为”taiji”的div
绘制主体部分
两个小圆的实现
至此,一个静态的太极图已经绘制完成,是不是很简单呢。
使用animation属性并将播放次数设为infinite就可实现无限循环转动,实现代码如下:
]]>总结:在开发中也许永远也用不到这个图形,但在这个例子中可以学到很多方法,巧妙利用border-radius,可以绘制出很多形状。最后在转动太极图中去参悟人生吧!
竹风原创,欢迎交流学习。转载请附上本文链接,谢谢!
下面是chrome浏览器截图:
仔细看一下,还真的不少呢。接下来介绍几个常用的console方法。
这几个方法都可以接受多个参数,逗号分隔。它会在每次输出结尾添加换行符。没有返回值就返回undefined。另外这五种方法都可以使用printf风格占位符,字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)四种。如果第一个参数是格式字符串,方法会将依次用后面的参数替换占位符,然后再进行输出。五种方法示例如下:
有时候我们需要统计一个函数被调用了几次,一般都是加入一个变量然后输出。现在,我们可以直接使用console.count()来帮助我们统计并输出。
我们写代码的时候总会碰到判断某个变量是否为真,这个时候可以console.assert()来判断,当表达式为false的时候,输出信息到控制台。
如果想要看详细的对象信息,我们可以使用 console.dir,将一个 JavaScript 对象的所有属性和属性值显示成一个可交互的列表,它还能打印出函数等。
可以将传入的对象或数组这些复合数据以表格的形式输出。
如果输出信息比较多,可以进行分组管理。
]]>console方法还有很多,这里就不一一列举了,想了解更多请自行查阅官方API文档。掌握这些方法,对我们调试代码很有帮助。
竹风原创,欢迎交流学习。转载请附上本文链接,谢谢!