发表于: 2018-05-10 21:20:22

2 583



今天完成的事:

1、第二个页面完成了。第三个...刚刚写了个header...

预估速度没错,速度大体一天一个页面

明天继续开工第三个。


明天的计划:

1、做完第三个,然后根据验收标准做必要修改。

2、看一下深度思考。尤其是第五点。


遇到的困难:

1、关于切图的问题。到底要不要一开始就切2倍图??到底要不要用属性去固定图片大小?选择性强迫症又犯了

...各有各的看法,w3c是建议一开始切好尺寸,但是,网页设计的图片尺寸我们一般无法准确知道,尤其是viewport大小改变,怎么选择。。。额,师兄给点建议呗。

2、之前用hover,并没有详细钻研其用法(或者说子元素选择器的用法更准确)。

这里补一下,如果是对子元素hover,直接正常格式书写;如果是对相邻的兄弟元素,需要用到“+”;对子元素、孙子元素、曾孙子元素(暂且这么叫吧...T-T)可以用“>”来作用。

3、对bootstrap很陌生。尤其是btn类的,任务6、7用的比较多了,8还不知道。bootstrap这个东西,我们需要常用到的模块有哪些,希望能给个方向。


收获:

1、关于移动端footer遮挡main的解决办法:以前遇到,但是没注意,今天特地查了一下。主流方法3种。(第一种还看不会,个人喜欢第三种,简单暴力,虽然说一般不要设置空盒子,但是特殊情况,觉得还是可以的。)

法一. Javasrript解决
  使用js解决,判定当滑动条滑到页面内容的最底端的时候,将原本会脱离文档流的fixed定位改为不脱离文档流的relative定位即可。
  这是我不喜欢的方式,使用脚本解决问题是最繁重的方法,能用css解决的尽量不使用脚本,但是也是一种方法。
代码如下:

//滚动条在Y轴上的滚动距离

function getScrollTop(){ return document.body.scrollTop; } //文档的总高度 

function getScrollHeight(){return document.body.clientHeight; } //浏览器视口的高度

function getWindowHeight()

{ var windowHeight = 0;     

 if(document.compatMode == "CSS1Compat")    

{   windowHeight = document.documentElement.clientHeight;   }    

 else    {    windowHeight = document.body.clientHeight;   }    

return windowHeight; } //滑动监听   

window.onscroll = function()

{ //滑到底部时footer定于最下方,假定<footer>的height为60 

if((getScrollHeight() - getScrollTop() - getWindowHeight()) > 61) $('.footer').css('position','fixed');

else $('.footer').css('position','relative'); }

哎!好复杂总结一句话就是计算页面的总高度减去滚动的高度和窗体的高度得到的数字如果在某个自己设定的区间时则需要改变footer的css样式。
法二.给body加上padding-bottom
  给html<body>标签加上一个padding-bottom属性,这样正常文档流的内容距离body底部就会产生一个padding-bottom设置的距离。
  缺点是,考虑到现在项目上线之后模块的复用及经常需要合并css文件,当其他页面不需要这个悬浮块,就会给不需要<footer>fixed定位的页面造成负担。
代码如下:
//假定<footer>的高度为60px body { padding-bottom: 60px; }
法三.增加同级占位符<div>
  这个方法最为实用,在<body>层最下面加一层div,这个<div>块的高度设置为与<footer>同样高,不包含任何内容,这样就可以起到一个占位符的效果,在页面最底占据与<footer>同样高度的空间,当然页面滑到最下方,原本的<footer>悬动块就会与这个占位块完美重叠。且不会对其他页面产生影响。代码如下:
唯一缺点是不符合语义化,增加了无实质内容的空标签。

2、谷歌的F12,这才是检查的利器呐。善用善用!!!~



补上:任务4总结。

任务名称:CSS=TASK4

成果链接:https://kattemchen.github.io/Task/mytask4/mytask4.html

任务耗时:2018.4.24~4.28(4天)

技能脑图:

官网脑图:

自己脑图:


任务总结:

延期一天,主要是刚刚加入修真院,办入学手续,个人事务。

主要学习position的属性、表单的用法,涉及imput、buttom等知识。


一、先说一下涉及到的position的用法和属性:static为默认,用的少。这里就不详细说了。然后是,

relative:生成相对定位的元素,相对于其正常位置进行定位。元素的位置通过left、right、top、button属性进行规定,可以通过z-index进行层次分级。元素仍保持其未定位前的形状,原本所占的空间仍将保留。如果没有定位偏移量,对元素本身没有任何影响


absolute:生成绝对定位元素。使元素脱离文档流,并相对于其包含块进行定位,包含块可能是文档中的另一个元素或者是初始包含块,元素原先在正常文档流中所占的空间会会被后面元素占据;元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框;绝对定位元素的包含块由离它最近的 'position' 属性为 'absolute'、'relative' 或者 'fixed' 的祖先元素创建。只要父级元素设置了position并且不是static(默认既是static),那么设定了absolute的子元素即以此为包含块(最近的)。如果都没有定义,那么就相对于整个文档body定位(注意不是相对于浏览器窗口定位):这里的父类就是指踏上一个的大盒子。往上找,没找到就是指浏览器窗口。相对定位一般都是配合绝对定位元素使用。


fixed:生成绝对定位元素,相对于浏览器窗口的定位。通常配合z-index一起来使用。比如说网页上悬挂的聊天图标或者广告就是用了fixed。


2、关于标签:<input type="text" name ="username"placehoder="请输入用户名" >


type text:定义了input的输入类型为文本输入;常用的还有submit、password等;
username:只有设置了对应的名称,才能在提交表单的时候传递他们的值;
placerhoder:交互有关。提示。



二、最后加一波,关于定位的小结。

垂直居中的方法集合:

1.不知道自己高度和父容器高度的情况下, 利用绝对定位只需要以下三行:

parentElement{   position:relative;    }

childElement{   position: absolute;  top: 50%;  transform: translateY(-50%); }


2.若父容器下只有一个元素,且父元素设置了高度,则只需要使用相对定位即可;
   parentElement{        height:xxx;    }  

 .childElement {      position: relative;      top: 50%;      transform: translateY(-50%);    }


3、对于块级元素的话(display:bilock):先把箱子高度限制住,可以通过padding:auto去实现;


4、对于单行明确父级高度的元素:line-height;

对于多行文本:插入display:table-cell  +  vertical-align:middle;


Flex 布局:

不考虑兼容老式浏览器的话,用Flex布局简单直观,一劳永逸:

parentElement{    display:flex;/*Flex布局*/    display: -webkit-flex; /* Safari */    align-items:center;/*指定垂直居中*/ }


水平居中设置方法集合:

1、行内元素

设置 text-align:center

2、定宽块状元素

设置 左右 margin 值为 auto

3、不定宽块状元素

a:在元素外加入 table 标签(完整的,包括 table、tbody、tr、td),该元素写在 td 内,然后设置 margin 的值为 auto

b:给该元素设置 displa:inine 方法

c:父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left:50%



补上,任务5总结:


任务总结:

任务名称:CSS=TASK5

成果链接:https://kattemchen.github.io/Task/mytask5/task5/mytask5.html

任务耗时:2018.4.29-5.1(3天)


技能脑图:


官网脑图:


个人脑图:


任务总结:


CSS的任务5主要用到了background的相关属性,以及主要学习了非常有用的弹性盒子模型!!~~flex布局。

最重要的是对之前的知识进行了一次较为系统性的复习,也拓展性的看了一下BFC的相关知识。无延期。

1、理了一理之前的知识,尤其是position的,也总结了一下昨天涉及的定位方案:


  • 普通流 (normal flow)

在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在 HTML 文档中的位置决定。

  • 浮动 (float)

在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。

  • 绝对定位 (absolute positioning)

在绝对定位布局中,元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响,而元素具体的位置由绝对定位的坐标决定。

2、拓展学习了BFC 概念

Formatting context(格式化上下文) 是 W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

那么 BFC 是什么呢?

BFC 即 Block Formatting Contexts (块级格式化上下文),它属于上述定位方案的普通流。

具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。

通俗一点来讲,可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论如何翻江倒海,都不会影响到外部。

3、触发 BFC的条件

只要元素满足下面任一条件即可触发 BFC 特性:


  • body 根元素
  • 浮动元素:float 除 none 以外的值
  • 绝对定位元素:position (absolute、fixed)
  • display 为 inline-block、table-cells、flex
  • overflow 除了 visible 以外的值 (hidden、auto、scroll)

    4、关于flex布局:常规的知识这里就不写了
    (适用场景参考师兄的简书:https://www.jianshu.com/p/4e7e7e890b9a)
    (1)最常用的垂直居中套路(container中设置):
    display:flex;
    justfy-content:center;
    aligen-items:center;
    (2)响应式布局:
  • 左边定宽(或者不定宽),右边自适应。比如任务5的最后一行信息。
  • 注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。这是许多人忽略的坑,包括我自己。所以划重点。



返回列表 返回列表
评论

    分享到