发表于: 2019-08-25 20:47:30

1 934


今天完成的事情:

 

                 1.提交任务十五

                  2.了解JS基础

                  3.熟悉栅格系统


 明天计划的事情:

 

                做好JS开启的准备工作


遇到的问题:


今天完成的事情:任务14和15一起做了耗时5天,有点超时
明天计划的事情:看JS基础 
遇到的问题:任务14主要是组件化和模块化  任务15难点就是不用bs,做响应式折叠导航栏和轮播图 
收获:组件化模块化在任务14中我觉得就是把一个网站拆出3个部分<header>,<main>,<footer>其中<header>和<footer>就可以在3个网页中复用,然后在其中拆出一个又一个功能性组件,想修改什么样式直接在组件中改一些变量或者直接替换那个文件。

模块化开发

页面不改,我们还是只引用那一个样式,style.css,但是文件内容改成如下样式:

/*xxx页面入口样式文件style.css*/

@import './css/base.css';/*页面基础样式*/

@import './css/index.css';

@import './css/header.css';

@import './css/footer.css';链接:https://www.zhihu.com/question/20187618/answer/84388137

任务15不用bs,那就自己制作一个栅格布局

栅格系统的组成

如上图,是一个基本的栅格布局,它包含了:

  • container: 包裹整个栅格系统的容器
  • rows: 行
  • columns: 列
  • gutters: 各列的间的空隙

容器 (The Container)

为了给整个栅格系统设置宽度,我们需要一个容器。容器的宽度通常为100%,但你可能希望为更大的显示器设置最大宽度max-width。

  1. .grid-container {
  2. width : 100%;
  3. max-width : 1200px;
  4. }

行 (The Row)

行元素用于防止里面的列( column )溢出到其他的行。通常会使用clearfix来清除浮动,因为我们是通过浮动来制作栅格系统的。

  1. /*-- 清除浮动 -- */
  2. .row:before,
  3. .row:after {
  4. content:"";
  5. display: table ;
  6. clear:both;
  7. }

列 (The Column)

列元素是栅格系统的核心,也是最复杂的一部分。因为列的定位可以有很多实现方式,同时还需要考虑它的宽度以及响应式设计等因素。

列的位置

Floats, inline-blocks, display-table, display-flex. 他们都可以实现栅格布局中,列的定位。我个人推荐使用“float”,如果我们的列都是空的,我们浮动的列都会贴在彼此的顶部。为了避免这种情况:

  1. [class*='col-'] {
  2. float: left;
  3. min-height: 1px;
  4. }

列的宽度

由于容器总宽度是100%,我们想要6列,所以每列宽度为:100 / 6 = 16.66

  1. [class*='col-'] {
  2. float: left;
  3. min-height: 1px;
  4. width: 16.66%;
  5. }

这里我们把一行分成六列,通过简单的计算,还可以定义列的多种宽度。

  1. .col-1{
  2. width: 16.66%;
  3. }
  4. .col-2{
  5. width: 33.33%;
  6. }
  7. .col-3{
  8. width: 50%;
  9. }
  10. .col-4{
  11. width: 66.664%;
  12. }
  13. .col-5{
  14. width: 83.33%;
  15. }
  16. .col-6{
  17. width: 100%;
  18. }

列的间隙 (Column Gutters)

由于列的宽度单位是响应式的 % ,我们给列元素的间距是固定单位的padding(px),为了避免复杂的计算,我们规定所有的盒子模型为 border-box 类型。

  1. /*-- 将栅格系统里的所有元素设为 border box --*/
  2. .grid-container *{
  3. box-sizing: border-box;
  4. }
  5. [class*='col-'] {
  6. float: left;
  7. min-height: 1px;
  8. width: 16.66%;
  9. /*-- 设置间隙 --*/
  10. padding: 12px;
  11. }

全局设置 border-box 很好,它可以省去一次又一次的加减,它还可以让有边框的盒子正常使用百分比宽度。但是使用了 border-box 可能会与一些依赖默认 box-sizing 的库冲突,不过这种问题大多数时候可以通过把交由这些库处理的块的 box-sizing 设置回 content-box 来解决。

一个基本的栅格布局完成啦

响应式栅格系统

为了适配移动设备的布局,我们只需改变列的宽度。比如当屏幕宽度小于800px时,为了布局更简洁,我们使用两倍列的宽度,一行六列变为了一行三列

  1. @media all and (max-width:800px){
  2. .col-1{ width: 33.33%;    }
  3. .col-2{ width: 50%;        }
  4. .col-3{ width: 83.33%;    }
  5. .col-4{ width: 100%;    }
  6. .col-5{ width: 100%;    }
  7. .col-6{ width: 100%;      }
  8. .row .col-2:last-of-type{
  9. width: 100%;
  10. }
  11. .row .col-5 ~ .col-1{
  12. width: 100%;
  13. }
  14. }

   收获:

    组件化模块化在任务14中我觉得就是把一个网站拆出3个部分<header>,<main>,<footer>其中<header>和<footer>就可以在3个网页中复用,然后在其中拆出一个又一个功能性组件,想修改什么样式直接在组件中改一些变量或者直接替换那个文件。


返回列表 返回列表
评论

    分享到