前段基础css(2)

 

一、标准文档流

宏观的将,我们的web页面和ps等设计软件有本质的区别,web网页的制作,是个“流”,从上而下,像 “织毛衣”。而设计软件 ,想往哪里画东西,就去哪里画。

标准文档流下,有一些现象,比如空白折叠现象、高矮不齐底边对齐现象等。

标准文档流等级森严,标签分为两种等级:行内元素和块级元素。

1、行内元素和块级元素的区别:

行内元素:

    a、与其他行内元素并排;

    b、不能设置宽、高,默认的宽度,就是文字的宽度;

块级元素:

    a、独占一行,不能与其他任何元素并列;

    b、能接受宽、高。如果不设置宽度,那么宽度将默认变为父级的100%;

2、标签的分类

在以前的HTML知识中,我们已经将标签分过类,当时分为了:文本级、容器级。

a、从HTML的角度来讲,标签分为:

    文本级标签:p、span、a、b、i、u、em;

    容器级标签:div、h系列、li、dt、dd;

         PS:为甚么说p是文本级标签呢?因为p里面只能放文字&图片&表单元素,p里面不能放h系列和ul,p里面也不能放p。

  b、现在,从CSS的角度讲,CSS的分类和上面的很像,就p不一样:

    行内元素:除了p之外,所有的文本级标签,都是行内元素。p是个文本级,但是是个块级元素;

    块级元素:所有的容器级标签都是块级元素,还有p标签;

3、块级元素和行内元素的相互转换

我们可以通过display属性将块级元素和行内元素进行相互转换。display即“显示模式”。

a、块级元素转换为行内元素,通过设置:display: inline;

b、行内元素转换为块级元素,通过设置:display: block;

4、脱离标准流

标准流里面的限制非常多,导致很多页面效果无法实现,如果我们现在就要并排、并且就要设置宽高,那该怎么办呢?办法是:移民!脱离标准流!

  css中一共有三种手段,使一个元素脱离标准文档流:

    (1)浮动

    (2)绝对定位

    (3)固定定位

二、浮动

浮动是css里面布局最多的一个属性,也是很重要的一个属性。float:表示浮动的意思,有如下属性值:

    none: 表示不浮动,默认;

    left: 表示左浮动;

    right:表示右浮动;

那么浮动如果大家想学好,一定要知道它的四大特性:

    (1)浮动的元素脱标(就是脱离了标准文档流),标签一旦设置浮动,就能够并排,并且不区分行内、块状元素,也就能够设置宽高;

    (2)浮动的元素互相贴靠;

    (3)浮动的元素由"字围"效果;

    (4)收缩的效果(即一个浮动元素,如果没有设置width,那么就自动收缩为文字的宽度(这点跟行内元素很像));

注意:关于浮动,我们初期一定要遵循一个原则,永远不是一个盒子单独浮动,要浮动就一起浮动,另外,有浮动,一定要清除浮动。

三、清除浮动

先来看如下两段html和css代码:

html代码:

  1. <div class="father">
  2. <div class="box1"></div>
  3. <div class="box2"></div>
  4. <div class="box3"></div>
  5. </div>
  6. <div class="father2"></div>

  css代码:

  1. .father{
  2. width: 1126px;
  3. }
  4. .box1{
  5. width: 200px;
  6. height: 500px;
  7. float: left;
  8. background-color: red;
  9. }
  10. .box2{
  11. width: 300px;
  12. height: 200px;
  13. float: left;
  14. background-color: green;
  15. }
  16. .box3{
  17. width: 400px;
  18. float: left;
  19. height: 100px;
  20. background-color: blue;
  21. }
  22. .father2{
  23. width: 1126px;
  24. height: 600px;
  25. background-color: purple;
  26. }

效果发现:如果不给父盒子一个高度,那么浮动子元素是不会填充父盒子的高度,那么此时.father2的盒子就会跑到第一个位置上,影响页面布局。

  那么我们知道,浮动元素确实能实现我们页面元素并排的效果,这是它的好处,同时它还带来了页面布局极大的错乱!!!所以我们要清除浮动。

  我们有多种清除浮动的方法,在这里给介绍四种:

    a、给父盒子设置高度;

    b、内墙法(给浮动元素的后面加一个空的块级标签,再给该标签设置clear:both属性);

    c、伪元素清除法(常用);

    d、overflow:hidden(常用);

应用:伪元素清除浮动的写法如下:

给浮动元素的父盒子,也就是不浮动的元素,添加一个clearfix类,然后作如下设置:

  1. .clearfix:after{
  2. content: ".";
  3. display: block;
  4. height: 0;
  5. clear: both;
  6. visibility: hidden
  7. }

关于overflow:

overflow属性规定当内容溢出元素框时发生的事情。

描述

visible

默认值,内容不会被修剪,会呈现在元素框之外

hidden

内容会被修剪,超出元素框之外的部分不可见

scroll

不管内容是否超出元素框都出现滚动条

auto

如果内容超出元素框,则浏览器会显示滚动条以便查看其余内容

inherit

规定继承父元素的overflow属性的值

逐渐演变成overflow:hidden清除法,

  其实它是一个BFC区域:具体参见:https://blog.csdn.net/riddle1981/article/details/52126522

四、margin中的坑

1、margin塌陷问题

当给两个标准流下的兄弟盒子设置垂直方向上的margin时,那么以较大的为准,那么我们称这种现象为塌陷。记住这种现象,在布局垂直方向盒子的时候要注意margin的用法。水平方向上没有塌陷现象。

  当我们给两个标准流下的兄弟盒子设置浮动之后,就不会出现margin塌陷的问题。

2、margin:0 auto;

  当一个div元素设置margin:0 auto;时就会使盒子居中,我们知道margin:0 auto;表示上下外边距离为0,左右为auto的距离,那么auto是什么意思呢?若设置margin-left:auto;我们发现盒子尽可能大的右边有很大的距离,没有什么意义。若设置margin-right:auto;我们发现盒子尽可能大的左边有很大的距离,当两条语句并存的时候,我们发现盒子尽可能大的左右两边有很大的距离,此时我们发现盒子就居中了。

  注意:

    (1)使用margin: 0 auto;时,水平居中盒子必须有width,要有明确width值;

    (2)如果给盒子设置浮动、或者固定定位、或者绝对定位,那么margin: 0 auto;失效;

    (3) margin:0 auto;使盒子居中,而不是居中文本,文字水平居中使用text-align: center;

3、善于使用父级的padding,而不是margin

  另外我们一定要知道margin属性是描述兄弟盒子的关系,而padding描述的是父子盒子的关系。

  先看如下两段代码:

  css代码:

  1. .father{
  2. width:300px;
  3. height:300px;
  4. background-color:blue;
  5. }
  6. .son{
  7. width:100px;
  8. height:100px;
  9. background-color:orange;
  10. margin-top:30px;
  11. }

  html代码:

  1. <div class=”father”>
  2. <div class=”son”></div>
  3. </div>

  运行上面代码发现两个盒子整体下移了30px,其实我们是想让子盒子下移30px,父盒子不要动,但是因为父盒子没有设置border,所以父盒子也掉下来了,一旦给父亲设一个border就好了,那么问题来了,我们不可能在页面中无缘无故的去给盒子加一个border,所以此时的解决方法只有一种,就是使用父盒子的padding,让子盒子向下走。

五、字体图标的使用

  阿里巴巴的矢量图标库:http://www.iconfont.cn/

前端CSS(2)的更多相关文章

  1. 前端CSS编程之道-LESS

    由于前端css编写繁琐,最近开始学习LESS,用LESS编写文件.less文件可以直接编译成我们要的.css文件 学习Less 我下面是我练习时的截图,希望小伙伴也能动手自己写一下,而不是复制粘贴模式 ...

  2. 扯一扯前端css的整体架构设计:(2)base基础类的那些事儿

    周一下午在实验室写了第一篇博文,有几个人捧场,那咱就得接着下去啊.然后我觉得现在写的内容更多的偏向于谈一下我对于前端css架构的理解和前端经验的一个小总结,所以就把标题里原来的[项目总结]给删掉了.但 ...

  3. Web前端-CSS必备知识点

    Web前端-CSS必备知识点 css基本内容,类选择符,id选择符,伪类,伪元素,结构,继承,特殊性,层叠,元素分类,颜色,长度,url,文本,字体,边框,块级元素,浮动元素,内联元素,定位. 链接: ...

  4. WEB前端 CSS(非布局)

    目录 WEB前端 CSS CSS引入方式 CSS结构 CSS选择器 直接选择器 组合选择器 分组选择器 也叫并集选择器 属性选择器 伪类选择器 伪元素选择器 CSS选择器是一个查找的过程,高效的查找影 ...

  5. 前端 CSS 目录

    前端 CSS 介绍 前端 CSS语法 前端 CSS 注释

  6. {前端CSS} 语法 Css的几种引入方式 css选择器 选择器的优先级 CSS属性相关 背景属性 边框 CSS盒子模型 清除浮动 overflow溢出属性  定位(position)z-index

    前端CSS CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观. 当浏览器读到一个样式表,它就会按照这个样式表来对文 ...

  7. 前端CSS - 相对定位,绝对定位,固定定位

    前端CSS - 相对定位,绝对定位,固定定位 1.1 相对定位 position:relative 相对定位,就是微调元素位置的.让元素相对自己原来的位置,进行位置的微调. 也就是说,如果一个盒子想进 ...

  8. 前端 CSS 继承性和层叠性

    CSS有两大特性:继承性和层叠性 前端 CSS的继承性 前端 CSS层叠性 CSS选择器优先级 前端 CSS 优先级 样式设置important

  9. day 45 前端CSS

      前端CSS   CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观. 当浏览器读到一个样式表,它就会按照这个样式 ...

  10. 前端——CSS选择器

    目录 前端CSS CSS三种引入方式 CSS标签选择器 基本选择器 1.元素选择器 2.类选择器 3.id选择器 4.通用选择器 组合选择器 1.后代选择器 空格 2.儿子选择器 > 3.毗邻选 ...

随机推荐

  1. HDU 1005 Number Sequence:矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 题意: 数列{f(n)}: f(1) = 1, f(2) = 1, f(n) = ( A*f(n ...

  2. 存储过程之rowtype 使用

    CREATE OR REPLACE PROCEDURE "DYLYLQX_SC_BA_1" (YWID IN VARCHAR2, FLAG OUT VARCHAR2) IS V_R ...

  3. 通过在classpath自动扫描方式把组件纳入spring容器中管理。

    前面的例子我们都是使用xml的bean定义来配置组件,如果组件过多很臃肿.spring2.5引入了组件自动扫描机制,在指定目录下查找标注了@Component.@Service.@Controller ...

  4. MySQL-计算当月重新激活客户_20161013

    13号的草稿 12号的明天补充更新,最近太忙了. 客户留存率是衡量客户价值经常用的指标,可以反映客户的活跃程度,在互联网企业,尤其是现在手机端流量已经超过PC端流量,在安卓和IOS设备上在线时长的数据 ...

  5. Flashback Database 闪回数据库

    一.  Flashback Database 说明 Flashback Database 功能非常类似与 RMAN 的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于 Fl ...

  6. LINUX socket网络编程

    1. 网络中进程之间如何通信 进 程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进 程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如 U ...

  7. JavaScript高级程序设计学习笔记第八章--BOM

    1.间歇调用和超时调用: 超时调用:需要使用 window 对象的 setTimeout()方法,它接受两个参数:要执行的代码和以毫秒表示的时间(即在执行代码前需要等待多少毫秒).其中,第一个参数可以 ...

  8. hadoop学习路线(转)

    刚刚入门hadoop,如何去学习hadoop.google一篇学习路线图,与童鞋们共勉: 转自:http://blog.csdn.net/zhoudaxia/article/details/88017 ...

  9. windows7如何打开远程桌面&nbsp;-…

    单位的机器,刚装上了windows7旗舰版(当然不是花银子滴),想打开远程桌面连接,这样从别的机器登录也方便.可是问题来了,windows7对安全的设置比较高,不像windows XP那么随便一点就可 ...

  10. Matcher的group()/group(int group)/groupCount()用法介绍

    直接上代码: package com.dajiangtai.djt_spider.util; import java.util.regex.Matcher;import java.util.regex ...