百度的前端技术学院IFE,2016年就据说了,当时本身也报名,还组成队伍了,不过本身一个任务也没完成就结束了,遗憾... 关注了IFE,知道2017年2月有新的一期培训,因而一直在等着报名,而后开始作里面发布的任务(o(╯□╰)o,此次能这么积极是由于本身哪段时间工做闲,为了按捺本身躁动的心,告诉本身抓住此次机会,去完成里面发布的任务,沉淀一下。)css
如今这一期到4月24号就结束了,虽然完成的任务不算多,可是在这过程当中仍是学到了东西,中途差点由于懒,没有坚持下来,想了下本身当时定的要求,想到应该有始有终,就打败了一下‘懒’,最后成绩是积分74,勉强入了下学霸的分享榜单(虽然并无什么卵用,不过还知足了下本身的虚荣心┑( ̄Д  ̄)┍)),废话了这么多,总结下本身学到的东西吧。html
2.1.1 任务描述:http://ife.baidu.com/course/detail/id/23前端
2.1.2 实现过程:css3
原生的checkbox,radio样式不能改变,因此<input type="checkbox" id="checkBox">
再也不适用。这里要用到HTML5的label标签git
HTML5中的label标签为 input 元素定义标签(label),github
如:web
<input type="checkbox" id="checkBox"> <label for="checkBox"></label>
注意:
"for" 属性可把 label 绑定到另一个元素。请把 "for" 属性的值设置为相关元素的 id 属性的值。正则表达式
接着要把input元素设置为display:none;而后经过css将label设置为自定义的样式chrome
label { display: inline-block; width: 16px; height: 16px; border: 1px solid #d9d9d9; border-radius: 50%; position: relative; }
这是设置为外面的圆圈,里面的圆经过::after伪类设置segmentfault
label::after { -webkit-transition: all .5s ease; -moz-transition: all .5s ease; -o-transition: all .5s ease; -ms-transition: all .5s ease; transition: all .5s ease; cursor: pointer; position: absolute; width: 8px; height: 8px; border-radius: 50%; top: 4px; left: 4px; z-index: 1; content: ''; }
若是是checkbox,外面是正方形,对应里面是对钩
label { display: inline-block; width: 16px; height: 16px; border: 1px solid #d9d9d9; position: relative; }
"√"对钩制做:
label::after { border: 2px solid #d73d32; border-top: none; border-right: none; transform: rotate(-45deg); }
这里提一下伪类和伪元素的区分:
1)伪类:存在的意义是为了经过选择器找到那些不存在于DOM树中的信息以及不能被常规CSS选择器获取到的信息。 伪类由一个冒号:开头,冒号后面是伪类的名称和包含在圆括号中的可选参数。
经常使用的伪类:
:active 向被激活的元素添加样式。 :focus 向拥有键盘输入焦点的元素添加样式。 :hover 当鼠标悬浮在元素上方时,向元素添加样式。 :link 向未被访问的连接添加样式。 :visited 向已被访问的连接添加样式。 :first-child 向元素的第一个子元素添加样式。 :checked 向选中的控件元素添加样式
2)伪元素:伪元素在DOM树中建立了一些抽象元素,这些抽象元素是不存在于文档语言里的(能够理解为html源码);
注意: css3为了区分伪类和伪元素,规定伪类前面有一个冒号,伪元素前面有两个冒号
经常使用伪元素:
::before 为做用元素的第一个子节点插入dom中 ::after 为做用元素的最后一个子节点插入dom中
2.2.1 任务描述:http://ife.baidu.com/course/detail/id/14
2.2.2 实现过程:
先看下作出的效果:点我看看
1)关于图片模糊(参考资料:来源)
主要用到CSS3 filter(滤镜)属性
语法:
filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() | url();
blur(px) 给图像设置高斯模糊。"radius"一值设定高斯函数的标准差,或者是屏幕上以多少像素融在一块儿, 因此值越大越模糊;若是没有设定值,则默认是0;这个参数可设置css长度值,但不接受百分比值。
因此图片上hover时能够加一个这样的效果:
.wrap:hover .blur { transition: all .5s ease; filter: url(blur.svg#blur); /* FireFox, Chrome, Opera */ -webkit-filter: blur(10px); /* Chrome, Opera */ -moz-filter: blur(10px); -ms-filter: blur(10px); filter: blur(10px); /*filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=10, MakeShadow=false); IE6~IE9 */ }
2) 关于边框扩展(参考资料:来源)
/*形状扩展*/ .border::before, .border::after { content:" "; display: block; position: absolute; width: 0; height: 0; box-sizing: border-box; transition-property: height,width,left,top; transition-duration: 0.5s; transition-timing-function: ease-in; } .border::before { height: 100%; left: 50%; } .wrap:hover > .border::before { left: 0; width: 100%; border: 6px solid #000; border-left-color: transparent; border-right-color: transparent; } .border::after { width: 100%; top: 50%; } .wrap:hover > .border::after { height: 100%; top: 0; border: 4px solid #000; border-top-color: transparent; border-bottom-color: transparent; }
主要经过border:6px solid #000这个属性,当width和height都设置为100%时,把左右或上下的border设置为transparent就能够实现::after和::before拼装成长方形,两边都是从中间扩展,因此最初left和top设置为50%;最后须要注意 transition-property: height,width,left,top;的设置。
3)文字渐变光影流动动画(参考资料:来源)
.text-gradient { display: inline-block; color: black; font-size: 10em; background-image: -webkit-linear-gradient(left, #147B96, #E6D205 25%, #147B96 50%, #E6D205 75%, #147B96); -webkit-text-fill-color: transparent; -webkit-background-clip: text; -webkit-background-size: 200% 100%; -webkit-animation: masked-animation 4s infinite linear; } @-webkit-keyframes masked-animation { 0% { background-position: 0 0;} 100% { background-position: -100% 0;} }
要注意的是:
①、-webkit-background-clip: text;
background-clip 属性规定背景的绘制区域。
语法:
background-clip: border-box|padding-box|content-box;
值对应于:背景被裁剪到边框盒,内边距框,内容框。
这里用到的text只适用于chrome浏览器。
②、background-size: 200% 100%;
让背景图片大小水平方向扩大一倍,这样background-position才有移动与变化的空间。
2.3.1 任务描述:http://ife.baidu.com/course/detail/id/15 (对应后面有2、3、4、五)
2.3.2 实现过程:
Vue如何实现动态数据绑定,这个在以前有写过一篇这样的文章:http://www.cnblogs.com/wj204/p/6423478.html
虽然之前有研究过,不过此次跟着任务作的时候能够看出本身仍是理解得不透彻,这里再也不详细分解了,本身在任务上也作了点笔记:http://ife.baidu.com/note/detail/id/1233
2.4.1 任务描述:http://ife.baidu.com/course/detail/id/29
2.4.2 实现过程:
感受本身挑了本身有点熟悉的任务,由于以前有写过一篇正则表达式的文章:https://segmentfault.com/a/1190000008766125 (/ □ ) 看成复习把,由于这些基础知识掌握得并不牢固。
2.4.2.1 手机号码匹配
/* 电话号码前三位规则: 联通:186 185 170 156 155 130 131 132 移动:139 138 137 136 135 134 178 188 187 183 182 159 158 157 152 150 147 电信:189 180 170 153 133 第一位全是1 第二位:3 4 5 7 8 第三位:0 1 2 3 4 5 6 7 8 9 */
因此正则表达式能够写为:(/^1[34578][0-9]{9}$/g)
2.4.2.2 判断输入的字符串是否有相邻重复单词的正则表达式可写为:/(b[a-zA-Z]+b)s+1b/g
解释这个正则表达式:
①、 (b[a-zA-Z]+b) 是一个捕获分组,它捕获全部的单词:
" asd sf hello hello asd".match(/(b[a-zA-Z]+b)/g) // ["asd", "sf", "hello", "hello", "asd"]
②、s加了一个空格限制条件,因此最后一个单词被排除:
" asd sf hello hello asd".match(/(b[a-zA-Z]+b)s/g) ["asd ", "sf ", "hello ", "hello "]
③、"1"后向引用:
" asd sf hello hello asd".match(/(b[a-zA-Z]+b)s+1b/g) ["hello hello"]
2.5.1 任务描述:http://ife.baidu.com/course/detail/id/51
2.5.2 实现过程:由于本身以前有写过一些纯css3实现的动画 http://www.cnblogs.com/wj204/p/css3_demo.html
因此选了这个任务,说实话,又“水分”了(捂脸哭)
额外技能点总结,缘起别人的提问 https://segmentfault.com/q/1010000008800350/a-1020000008801739
想到以前看过的一篇文章 http://www.cnblogs.com/coco1s/p/6402723.html (平时看些技术文章仍是有用的,虽然当时可能没起什么做用,不过有个知识点印象。)
<div style="position: fixed;background:red;height:500px;width:500px;overflow:auto;top: 50%; transform: translateX(-50%) translateY(-50%); left: 50%;"> <div style="position: absolute;background:black;height:10px;width:10px;top:0;right:0"></div> <div style="height:5000px"> 213123123213123123213123123213123123213123123 </div> </div>
将黑色的div框样式改成粘性布局
<div style="position: sticky;background:black;height:10px;width:10px;top:0;left:100%"></div>
效果:
收获:
①、巩固基础知识
②、css属性应用更加熟练,说实话,以前after和before伪元素本身用得很少,通常都会从新加标签来设置样式,不过这里用过以后,本身简直喜欢上了这两个东西,感受方便好多。
③、对Vue的动态绑定数据原理理解加深。
④、正则表达式,说实话,本身以前写过那篇文章大可能是理论,当真正遇到正则表达式实践时,有点傻了,需多练习。
⑤、安定了下本身哪颗躁动的心,若是工做上没有什么事作,没什么期盼,又正值金三银四跳槽季,我就在想跳槽了,但是没学到什么东西怎么走?茫然,焦虑,可是这些负情绪没用,只会让本身的状态恶性循环,不如作点实事,哪怕是比较简单的任务。还好本身坚持了下,还好这段时间工做上有几个任务,获得了些许锻炼。
不足及改进:
总结来看,本身作得不够,虽然也花了时间,不过能看出有敷衍的成分在。也很久没产出,虽然写得并不怎么样,不过仍是想督促本身多总结,这对本身必定是有利的:)