Skip to content

hnsxxscyx/baidu_ife

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

百度前端学院2016年春个人作业及分析

目标

  • 熟练掌握前端工程师工程中需要掌握的内容和各个情况下的效果
  • 增加代码熟悉度,尽量使用简洁优雅的的方案解决问题
<h1>支持代码高亮</h1>

task 3

任务描述

  • 三栏式布局
  • 左右宽度固定中间自适应,外高度取决于最高元素

任务目标

  • 掌握布局的概念
  • 掌握盒模型的概念
  • 掌握poosition与float的概念以及在布局时的用法

分析

task 6

任务描述

学到的经验

  • 元素下会有空白,原因以及去除办法参见https://www.zhihu.com/question/21558138
  • 许多元素都有自带margin
  • 重复的设置太多,用写好的类来赋予html不知道是不是好的解决方法

  • 不设置background会出现空心
  • 首字下沉的实现
    • 使用两种标签进行左浮动
    • 使用first-letter左浮动
  • 使用CSS实现三角
  • 最后的双引号最难写,分析如下:
    • 不能用:first-letter深入CSS ::first-letter伪元素及其实例等
    • 第一个双引号下部与文字对齐,第二个上部与文字对齐
    • 双引号不影响文字本身的行高
    • 解决方案考虑如下:
      • overflow对多余内容切除——无法对指定位置切除
      • clip
      • absolute定位——使文字产生空位略为困难,但并非无法采用
      • 第一个使用relative定位并使用margin拉近文字(relative不会影响到其他元素,但这会改变同行行高,这是第一行无所谓),第二个使用float配合relative(不会影响行高)

暂存的问题

  • class与id命名十分不便,需要了解常用规范
  • 图片添加透明蒙版(不会使用伪类制作)
  • 段落间距不确定是不是line-height(大致确认不是,而是可以通过line-height设置)
  • 使用first-letter实现首字下沉为什么要配合padding实现效果?

task7

任务难点

  • 定宽为最小宽度1280px,本来想新世界那里图片应该不变,但后来发现太丑了

学到的经验

  • 超链接定义样式需要定义四种状态
  • class的命名
    • 本意参考BEM进行命名,然而发现过于复杂且不知它的好处,所以略作修改
    • 依然按照BEM进行分类,但配合元素选择器进行每个的细分,不抗拒同class的存在
    • 但用这种方法配合scss的嵌套好奇怪,感觉在浪费性能,期待以后更好的方案
  • img居中居然可以包裹在p标签进行垂直居中
  • 定宽为最小宽度1280px
    • 会延浏览器自动拉长的元素,可参考布局方法
  • vw、vh只有vh比较实用,而且vw还有兼容问题(设置的时候会多出一点)
  • 使用after伪类为图片添加透明遮罩
  • text-align-last的使用
  • 改变默认的下拉列表样式
    • 本想使用伪元素制作,但尝试一番后发现伪元素对下拉列表不起作用
    • 用图片制作
    • 改变option样式太难了,搜了好长时间没有解决方案,暂时只有这个,还是选中后的前端网
    • 最好还是div模拟比较方便
  • 外边距合并
  • 用CSS制作三角

遇到的问题

  • 如果把body定宽居中,那么大背景图不能顶满浏览器放进去
    • 解决办法暂时参照ofo官网使用column纵宽控制div宽度
  • 设置字体时遇到疑问,是应该按照单个class进行设置还是每个字体分别进行设置?
    • 暂时采用了分裂时方法字体颜色使用class,字体大小和字体用选择器(主要有些父元素设置字体没用,一个一个的超麻烦)
    • 但实际使用中发现设计的都是有规律的,大部分都可以用语义化来解决,h3标签和p标签的固定设置基本上可以覆盖大部分内容
  • 最后四个图标不用awesome库的话只能用图了,最后还是引入了库

task8

任务难点

task9

任务难点

学到的经验

  • 当CSS像素有可能出现小数点时你不知道会出现什么样的问题
  • 颜色超多的时候就不要想着复用啦,你看灰色有那么多种
  • .item th处字体小于14px表格会发生折叠
    • tr设置宽度无效,需要td自己把宽度撑起来
    • 设置padding后正常,不知道为什么会缩到一起

遇到的问题

  • .tab子元素div插入text时,div下移,此时div已成为BFC容器,为何div会下移?
    • 初步猜测是基线原因:在不指定 vertical-align 時,默認即基線對齊。然而由於該 box 當中既沒有 block level box 也沒有 text(比如全是 floating boxes,沒有規範的可以提取基線的地方),導致對齊時以該元素底部而非基線爲基準,又因爲元素底部在基線以下,就會出現對齊時上移的情況。(包含 float 的 inline-block 对齐问题原理详解? )[https://segmentfault.com/q/1010000002517202]
    • 设置overflow后形成block level box解决

有趣的鼠标悬浮模糊效果

功能要求与实现方案

  • 背景图需要进行模糊处理
    • 因为子元素不需要模糊,本拟放弃filter: blur(),使用backdrop-filter: blur()属性,参照这篇文章高级CSS filters
    • 后因《CSS揭秘》对文字背景进行模糊启发,给伪元素设置一层新背景图,对此张进行模糊,达到模糊目的
    • 经搜索发现另一种模糊方案CSS3实现文字流光渐变动画,但此方案加了一层无用容器
  • 按钮边框的从中间到两边扩展开
    • 动画不能对边框进行单独设置,放弃
    • 使用投影改变长度,transform: scale3d(x, y, x)的改变来改变伪元素的长度
    • 因为是从边框的中心展开,所以要设置两个伪元素,并分别设置边框,利用伪元素长度的变化来改变边框的长度
  • 隐藏文字和边框
    • 本来设想使用display:none进行隐藏,实测失败
    • 利用透明度进行隐藏
    • 猜想也可使用visibility属性进行隐藏,未实测
  • 文字背景渐变
    • 文字颜色渐变
      • 使用背景渐变,文字透明,背景clip到文字
    • 动画
      • 把背景拉长,使用动画把背景来回循环达到文字渐变目的

自己的不足

  • 对CSS3新属性不够了解,仅达到知道的地步,对详细设置不够清楚

vue动态数据绑定(一)

自己的考虑

  • 动态数据绑定的原理自己也很浅显的想过,前些日子看ES6入门标准增添了Object.observe()接口对对象的监听,但经详细了解此接口已废除,官方建议使用 Proxy 对象来替代

Proxy对象的使用

  • 官方提供Proxy构造函数用来生成Proxy实例
  • get表示访问,set表示设置,在Proxy构造函数中可以对其重设
  • Proxy实例可作为其他对象的原型对象

遇到的问题

  • 自己用一种比较婉转的方式完成了题目要求,目前自认为此代码的问题有
    • 构造函数最好不返回值,不过此函数理应也不是正常的构造函数了
    • 为对象的data属性添加了proxy,所以对对象其他的访问是监测不到的
  • 不知道如何深入遍历,即本题目参考资料中的walk实现
  • 立即执行函数不要乱用,在控制台中使用立即执行那外面的代码怎么访问呢小愚蠢?

#vue动态数据绑定(二)

听指令的小方块(一)

遇到的问题

  • 小方块设置为inline-block会有间隙问题,设为font-size:0后突然灵机一动,为什么不直接把这个背景设为红色呢?机智
  • 小方块的位置问题,开始设想使用旋转实现各个方向的完成,但其实也可以用浮动和margin值实现上下左右,只不过较麻烦
  • 小方块的移动,移动dom;但是突发奇想可以使用方案二让所有的棋盘都有小方块,然后设为display:none,啧啧,只不过性能消耗更大了
  • 小方块随机问题:因为标号也是用table,所以x与y不能相等
  • 小方块的旋转问题,本来使用类名搭配js改变实现旋转,后来发现是持续旋转而不是仅仅指明方向。决定使用js直接修改css
  • 小方块确定方位的问题:使用度数的余数来确定。开始单纯使用度数导致有bug产生

听指令的小方块(二)

遇到的问题

  • 此篇功能和上篇变化不大,所以新指令就不进行完成
  • 难点在于动画,因时间所限小方块移动的动画又必须大改,所以只在这里提供一种思路。
    • 修改小方块的定位方式,由表格大小进行计算,让小方块浮出,移动小方块改为真的移动位置,这样才会有动画出现
  • 旋转的动画部分使用过渡动画transition就能完成

UI组件之浮出层

遇到的问题

  • 拖拽移动的实现应该使用HTML5拖拽API,但考虑到时间不准备实现此功能
  • 浮出层的关闭,点击浮出层外。因为事件机制的原因,点击子元素父元素依然会被触发
    • 阻止子元素事件传播
    • 重设子元素事件
    • 背景和内容分隔开

自定义checkbox、radio

原理

  • 切换选中
    • 以前需要使用js来监测是否选中,现在CSS可以使用伪类
    • input隐藏,但不能删除,因为要留下监测状态
  • 样式实现
    • 使用伪类纯CSS实现
      • 这里我偷了个懒,使用了字符来完成圆圈中心的设计
    • 使用雪碧图实现
      • 使用label::after实现字
      • 通过background-image和position实现定位和切换

难点

  • 雪碧图的绘制,使用了腾讯的绘制工具,但是原小图用谷歌居然搜不到,自己简单切了一个,勉强可以使用

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published