css重构之旅

>前言: 今年我大一,马上就要大二了。从高三毕业暑假到大学的这一年马上过去,马上迎来大二生活.学习前端也有将近一年了。一昧去追求那些视觉的效果和相对高端和新颖的技术,反而忽略了最基础的布局技巧。

回味

2017年3月,百格教育的手机端网站,是我接到的第一个公司外包的项目。我和组长合作完成,现在项目也已经顺利完成,回想起来,自己也跟着组长学到了不少:

1)一个公告的列表(你应该提前考虑到,一则公告的字数一定有多有少的)多出的应该做处理,不然超出会排成两行,使布局陷入混沌的状态:

  1. overflow: hidden;
  2. text-overflow:ellipsis;
  3. white-space: nowrap;

如果是多行溢出部分显示省略号:

  1. display:-webkit-box;
  2. -webkit-box-orient:vertical;
  3. -webkit-line-clamp:3;
  4. overflow:hidden;

2)一个活动列表的内容(许多类似的情况),应该的可伸缩的。如果你一昧用margin撑起来的布局,就会使布局不具有伸缩性,内容多少都会被定死,情况一有变化,要多留下大片空白,要么导致了重叠,在此使布局陷入混沌状态。

>自己多少有些愧疚,当时还没有养成写博客总结的习惯,而且居然忽视了这个问题三个月之久
转而继续了JavaScript中的oop学习。之后几个陆陆续续的小项目,由于都是自己一个人做,而且和后台的人联系不紧密,其实自己一直使用的都是固定布局。

正是如此:

一个人做项目和合作做项目的差别就已经显示出来,一个人做项目你会忽视很多问题,你学到的东西一定是有限的。而如果你跟前辈合作,不管是和前端还是后台的前辈,你的问题很容易被发现;当发现问题你的第一情绪,应该是开心和喜悦,因为在解决问题和bug的过程中,是你进步最快的过程(我觉得没有之一,一)

时隔三个月

时隔三个月,今天5月29号,这次我跟主任合作,我觉得我学到了很多很多,也意识到了自己的问题,
一昧去追求那些视觉的效果,反而忽略了最基础的布局技巧(是我给自己这三个月的总结反思吧)
一昧用margin撑起来的布局,具有很差的伸缩性。

>记得,无论第一次带我的家兴学长也是现任主任;还是老主任,还是组长;一个人如果很很认真的指出你们没有认识到的问题,你应该感激他们,你的进步和成果离不开一些人的指导,我相信每个人的研发生涯中,总有这么一些人,无论是前端,后台还是其他。

这次的项目不大,但是内容还是比较多的(今年我大一,对我来说一个能学到很多东西项目才是最好的项目,至于现在挣多少外快,都是次要的)

先提到一个经典的基础布局-自适应高度(大家不要见笑)

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <meta name="Generator"content="EditPlus®">
  7. <meta name="Author"content="">
  8. <meta name="Keywords"content="">
  9. <meta name="Description"content="">
  10. <style text="text/css">
  11. /**
  12. 布局
  13. */
  14. body {
  15.   margin:0px;
  16. }
  17. #container {
  18.   width:100%;
  19.   margin:0 auto;
  20.   border:1px solid 81cfa2 ;
  21. }
  22. #header {
  23.   width:100%;
  24.   float:left;
  25.   clear:both;
  26.   border:1px solid #81cfa2;
  27. }
  28. #header_left {
  29.   width:50%;
  30.   border:1px solid #81cfa2 ;
  31.   float:left;
  32. }
  33. #header_right {
  34.   width:49%;
  35.   border:1px #F00 solid;
  36.   float:right;
  37. }
  38. #main {
  39.   width:100%;
  40.   float:left;
  41.   clear:both;
  42.   border:1px #F00 solid;
  43. }
  44. #main_content{
  45.   width:100%;
  46.   border:1px solid blue;
  47. }
  48.  
  49. #footer {
  50.   width:100%;
  51.   float:left;
  52.   clear:both;
  53.   border:1px #F00 solid;
  54. }
  55. </style>
  56.  
  57. </head>
  58. <body>
  59. <div id="container">
  60.   <div id="header">
  61.     <div id="header_left">
  62.     头部左侧
  63.     </div>
  64.     <div id="header_right">
  65.     头部右侧
  66.     </div>
  67.   </div>
  68.   <div id="main">
  69.     <div id="main_content">
  70.     主页内容
  71.     </div>
  72.   </div>
  73.   <div id="footer">底部(footer)</div>
  74. </div>
  75. </body>
  76. </html>

重构布局

移动端重构页面布局8大方法:http://www.divcss5.com/html5/h20001.shtml
昨天晚上读了张鑫旭的CSS流体(自适应)布局下宽度分离原则页面重构的三无准则获益匪浅,对流体布局有了新的认识吧

流式布局就像在学校食堂排长队打饭一样,来一个就跟在后面,这样使布局具有很强的伸缩性,
正如张鑫旭的文章介绍的无宽度原则,牺牲一层标签,单独设置宽度。
宽度,浮动,绝对定位都会阻碍容器流动性,而padding和border不会,
使用宽度分离的原则就不用担心里面的内容(里面的内容需遵循“无宽度准则”)会因为宽度溢出撑开布局而造成错位了。

这个作品可以帮你仔细分析下几种页面重构布局的差异:

http://wow.techbrood.com/fiddle/fork?id=25477

总结

页面重构的方法和技巧有很多,自己应该保持一个谦卑的心,在重构的道路路上走下去。

一千张,我还差好多好多;

上个月读完格拉德威尔写的异类,第一章讲了一个效应叫做马太效应,“一个人从出生比不是就是一无所有,从出生开始我们就拥有了一定的资助和禀赋,能在众王面前站立人,好像完全凭借他的能力,事实上,总有潜在的优势,非凡的机遇和传统的文化令他们获益”

但是很多人都没有走完这一万小时,遇到挫折、批评、误解就轻言放弃。

推荐一篇异类的读后感:
http://www.cnblogs.com/stoneniqiu/archive/2016/01/19/5143189.html

>如果有一天:你不再寻找爱情,只是去爱;你不再渴望成功,只是去做;你不再追求空泛的成长,只是开始修养自己的性情;你的人生一切,才真正开始。

后记--
因为我学习前端经验还不够,干货不多,希望当做笔记和心情记录下来。
以后、毕业或者就业后还可以回味那时写的些许稚嫩的“博客”。

css重构之旅的更多相关文章

  1. 精练代码:一次Java函数式编程的重构之旅

    摘要:通过一次并发处理数据集的Java代码重构之旅,展示函数式编程如何使得代码更加精练. 难度:中级 基础知识 在开始之前,了解"高阶函数"和"泛型"这两个概念 ...

  2. CSS重构:样式表性能调优

    这两天窝在家里又看了本CSS相关的书:<CSS重构:样式表性能调优>.重构是指在不改变代码行为的前提下,重写代码,使其更加简洁.易于复用. 这本书读起来比较快,可挑自己感兴趣的读,前面三章 ...

  3. 我的CSS布局之旅--持续更新

    虽然我也接触前端一年之久了,但是无奈从切图布局下来的经验还真是很不足,因为之前比赛或者是做小项目时全部都是自己负责设计,所以都是编写边设计,哎呀,也是醉了:或者是有模板,然后从人家上面扒拉下来的,真的 ...

  4. 早安Visual Studio!一次重构之旅,夏洛特烦恼

    vs问题描述 我的IDE版本是vs2013,今天新开发了一个功能,是一个接口程序,当F5调试时,出现了莫名的错误,为什么呢?因为vs弹出了下面的一个框,只说是“未将对象引用设置到对象实例“. 点击”确 ...

  5. Css3盒子模型-css学习之旅(5)

    主要内容: 盒子模型内边距,外边距,边框,外边距合并 主要包括:margin(外边距)padding(内边距) border(边框)centent(内容) 内边距:padding,paddinglef ...

  6. css文本样式-css学习之旅(4)

    color:颜色derction:方向:line-height:行高:letter-spaceing:字符间距:text-align:对齐方向:text-decoration:装饰:text-inde ...

  7. css3的样式讲解-css学习之旅(3)

    css背景 属性:background-color:background-image:url("位置"):background-position:right等,px,百分数:bac ...

  8. Mawawa CSS 学习之旅 Display

    CSS 类型之 Display 更新时间: 2018-2-10: 一个良好的布局结构从 display 开始! 分类:外部值.内部值.列表值.属性值.混合值.显示值.全局值: 一.外部值 作用:主要用 ...

  9. 重构:CSS也面向对象

    最初接触到面向对象的CSS还是因为项目中的CSS已经超过八千行,缺乏约束和管理,在近期或者是不远的将来,有迫切的要求需要重构.在前端重构中,我们已经讨论过了JavaScript面向对象的重构,在这个时 ...

随机推荐

  1. 如何做到机器学习竞赛Kaggle排名前2%

    原创文章,同步首发自作者个人博客 .转载请务必在文章开头显眼处注明出处 摘要 本文详述了如何通过数据预览,探索式数据分析,缺失数据填补,删除关联特征以及派生新特征等方法,在Kaggle的Titanic ...

  2. mui 页面间传值得2种方式

    通过最近得工作开发刚接触mui框架,用到了页面间得传值, 第一种:通过url进行传值 父页面代码: mui.openWindow({ id:'子页面.html', url:'子页面.html?para ...

  3. Cookie中文乱码问题

    页面一登录,页面二保存用户信息,放入Cookies里. 但是Cookies放入中文会引起编码问题,如报错“Control character in cookie value, consider BAS ...

  4. 日志框架SLF4J

    1.什么是SLF4J SLF4J:Simple Logging Facade for Java,为java提供的简单日志Facade.Facade门面,更底层一点说就是接口.它允许用户以自己的喜好,在 ...

  5. 详解Executor框架

    在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源.同时,为每一个任务创建一个新线程来执行 ...

  6. 事件的preventDefault方法

    事件有一个preventDefault()方法,该方法可以用来取消事件的默认行为.许多事件都有默认执行的关联行为.例如,如果用户在文本字段中键入一个字符,则默认行为就是在文本字段中显示该字符.由于可以 ...

  7. jquery虎牙TV3D轮播特效

    css部分: *{ margin: 0px; padding: 0px; } body{ margin: 0px; padding: 0px; text-align: center; } #banne ...

  8. jdbc ,jdbcTemplate,MyBatis,Hibernate比较与分析

    JDBC 1:jdbc(Java Data Base Connection 数据库连接)是一种用于执行sql语句的API,其中使用jdbc连接时需要的,Connection,Statement,Res ...

  9. 运行出错之未能加载文件或程序集“Microsoft.ReportViewer.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的文件。文件名:“Microsoft.ReportViewer.Common, Version=11.0.0.0,

    这个问题是因为在项目中缺少Microsoft.ReportViewer.Common程序集. 方法一:缺少哪些文件或程序集,到程序开发计算机下找到对应的烤到客户端的程序启动目录下即可(项目烤到Bin\ ...

  10. 使用wcf编写坐标字符串生成shapefile文件,在iis发布供前端调用

    项目有一需求,需要由坐标字符串(格式:x,y,点名)生成shapefile,由于在前台开发类似功能比较麻烦而且也不适用,最终决定使用WCF来实现,不借助现有GIS软件,基于GDAL实现. 实现过程如下 ...