CSS浮动、定位详解、标签嵌套显示隐藏、CSS初始化

1.浮动

元素的浮动属性float
Float:left/right;

元素的浮动是指设置了浮动属性的元素会脱离标准文档流的控制,移动到其父元素中指定位置的过程。

浮动可以理解为:在一个游泳中,标准流是我们在池底放盒子,浮动就相当于放的这个盒子“飘起来了”。“飘起来了”的盒子会遮住池底盒子。

在CSS中,通过float属性来定义浮动,其基本语法格式如下:
选择器{float:属性值;}


float属性值.png

浮动的特点:

1)浮动找浮动,不浮动找不浮动。浮动脱离标准流,不占位置,会影响标准流。浮动只有左右浮动。

2)浮动的盒子中上对齐,并且左浮动与右浮动位置相反的。

3)浮动只会影响当前盒子以下的内容,以上的内容不会影响。
总结:浮动的出现,使得页面的布局更加灵活,但是一般情况能够不使用浮动的话,尽可能的不要使用浮动(浮动相对于SEO来说不太友好,因为它脱离标准流)。

4)如果一个div没有设置高,这个div中的所有的元素都浮动了,那么这个div的高是0;

5) 元素添加浮动后,元素会具有行内块元素的特性。元素的大小完全取决于定义的大小或者默认的内容多少。

6)浮动的元素A排列位置,跟上一个元素(块级)有关系。如果上一个元素有浮动,则A元素顶部会和上一个元素的顶部对齐;如果上一个元素是标准流,则A元素的顶部会和上一个元素的底部对齐。
浮动根据元素书写的位置来显示相应的浮动。

7)一个父盒子里面的子盒子,如果其中一个子级有浮动的,则其他子级都需要浮动。这样才能一行对齐显示。

这个地方稍微提一下版心的概念和布局流程

版心:

“版心”是指网页中主体内容所在的区域。
一般在浏览器窗口中水平居中显示,常见的宽度值为960px、980px、1000px等。

布局流程:

为了提高网页制作的效率,布局时通常需要遵守一定的布局流程,具体如下:
1、确定页面的版心(可视区)。
2、分析页面中的行模块,以及每个行模块中的列模块。
3、运用盒子模型的原理,通过DIV+CSS布局来控制网页的各个模块。

注意:在制作网页的过程中,如果涉及到了页面的宽高的问题,最好用width和height去解决,再用padding,最后才考虑margin。例如边框合并问题

因为margin在布局中会存在兼容性的问题

1)ie6的双边距bug。(使用了浮动,浮动之后用margin-left)

2)边距合并现象:(只出现块级元素:不包括行内元素以及行内块级元素)

3)父子元素之前的边框合并现象:
如果父子元素之间没有边框,那么给子元素设置一个margin-top,那么父元素也会拥有这个属性。
解决方法:
A)给父元素设置边框。
B)给父元素一个属性:overflow:hidden.

4)如果给页面的第一个div设置浮动,页面的第二个div不浮动,但是有margin-top,那么将来第一个浮动的div会加上第二个div的margin-top显示。

如果两个同级的div上下排序,上面div有下margin,下面的div有上margin,就会出现边距的合并现象,两者之间的取值是按最大值来计算。

1   <style type="text/css">
2       div {
3           width: 200px;
4           height: 200px;
5           background: red;
6       }
7       .tom {
8            margin-bottom: 50px; 
9       }
10          .jerry {
11              margin-top: 100px;
12              background: blue;
13          }
14      </style>
15  </head>
16  <body>
17      <div class="tom"></div>
18      <div class="jerry"></div>
2)边框合并问题.png

3)父子元素之前的边框合并现象.png

4).png
浮动的清除

浮动的影响

如果在一个大的没有设置高的div中有两个小的div,那么这个大的div的高就是这两个小div之和,但是一旦两个小的div都浮动了,那么大的div就没有高了---------浮动之后div不会撑开父容器。

去除浮动的影响

设置具体的高度。(可以用尽量用)
但是,有时间页面上的某些容器,不能直接设置高度,那么高度不能确定,必须使用清除浮动。

①clear 浮动清除

clear:left   clear:right   clear:both

19      <div class="father">
20          <div class="son1"></div>
21          <div class="son2"></div>
22          <div class="clear"></div>
23      </div>
24   .father {
25          width: 600px;
26          background: blue;
27          border: 1px solid #000;
28          /* height: 100px; */
29        }
30        .son1, .son2 {
31          width: 100px;
32          height: 100px;
33          background: red;
34          float: left;
35        }
36        .clear {
37          clear: both;
38        }

总结:这种方法操作起来比较简单,但是如果一旦页面上要清除浮动的元素较多,那么会造成结构混乱(但是也不推荐使用)。

②使用overflow:hidden清除浮动:

39  <style type="text/css">
40        .father {
41          width: 600px;
42          background: blue;
43          border: 1px solid #000;
44          overflow: hidden;/*清除子元素的浮动*/
45        }
46        .son1, .son2 {
47          width: 100px;
48          height: 100px;
49          background: red;
50          float: left;
51        }
52        .nav {
53          width: 600px;
54          height: 60px;
55          background: purple;
56        }
57        /*浮动以后的子元素,不会撑开父容器*/
58      </style>
59  </head>
60  <body>
61      <div class="father">
62          <div class="son1"></div>
63          <div class="son2"></div>
64      </div>
65      <div class="nav"></div>
66  </body>

总结:这样清除也很方便,但是不推荐使用。如果页面一旦出现了定位,那么定位可能会受到影响

③使用伪元素来清除:

67       .clearfix:after {
68              content:"";
69              height: 0;
70              line-height: 0;
71              visibility: hidden;
72              display: block;
73              clear: both;
74        }
75        .clearfix {
76              zoom: 1;/*兼容ie浏览器*/
77        }

总结:使用伪元素来清除浮动,虽然代码比较多,但是是现在使用的最多方法。


伪元素来清除浮动.png
overflow属性
Hidden: 超出部分隐藏。
Scroll: 滚动条(超出的部分会显示在滚动条之内)
Auto: 如果内容超出会显示滚动条,如果没有那么会自动隐藏。(一般会使用Auto)

2.定位position

position 属性指定了元素的定位类型。元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有不同的工作方式,这取决于定位方法。

定位的分类, position 属性的四个值:

1)static:(静态)
默认情况下浏览器中所有的盒子都是静态的,(用来清除定位的)
HTML元素的默认值,即没有定位,元素出现在正常的流中。
静态定位的元素不会受到 top, bottom, left, right影响。

2)absolute(绝对定位)
a)如果盒子没有父盒子,那么在绝对定位的时候这个位置是相对于body的。
b)如果盒子有父盒子,那么在绝对定位的时候这个位置还是相对于body的。
c)如果盒子有父盒子并且父盒子有定位,那么这个时候我们的盒子定位是相对于父盒子的。
absolute 定位使元素的位置与文档流无关,因此不占据空间。
absolute 定位的元素和其他元素重叠。

3) fixed 固定定位  Position: fixed;
固定定位是否占据页面的位置:不占。
表现:不管页面到了哪里,图片永远都停留在屏幕的同一位置。
注意: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持.
Fixed定位使元素的位置与文档流无关,因此不占据空间。
Fixed定位的元素和其他元素重叠。

4) relative 相对定位
相对定位元素的定位是相对其正常位置,相对于自己原来的位置(想当年)。
可以移动的相对定位元素的内容和相互重叠的元素,它原本所占的空间不会改变。
相对定位元素经常被用来作为绝对定位元素的容器块。

一般情况下定位的使用:

1)父元素中使用子元素定位
2)并且遵守一个约定:父元素使用相对定位,子元素使用绝对定位。
定位.png

3.CSS标签嵌套显示影藏

常见行内元素和块级元素

行内元素:span,u,b,i,strong
块级元素:h1,h2,h3--h6,div,p
标签嵌套原则:
1)行内元素可以嵌套行内元素,但是不能嵌套块级元素
2)块级元素可以嵌套行内元素。
3)少数块级元素不可以嵌套其它的块行元素:
在p标签中不可以使用div。
在h标签中最好不要用div。
标签的显示和隐藏
Overflow:hidden;隐藏超出父容器的内容
Display:none;   隐藏元素
Visibility:      隐藏元素
Display会完全隐藏原来的div是不占位置的
Visibility也会隐藏原来的div但是div还是会占据着自己的位置不放,屏幕上显示的是空白。

Display:none;------->Display:block;
   隐藏                     显示

4.初始化CSS

html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldset, legend, img ,input,button{ margin:0; padding:0; }

顺带提一下图片和文字共存时, 图片的居中设置

vertical-align: middle;垂直居中。
如果在文字和图片中设置这个属性,那么它们之间的对齐方式是:以两者的中线为标准对齐。
Vertical-align不适用于块级元素。只适合行内元素:
Vertical-align跟inline-block是更配
Margin是盒子模型的一部分,但是我们在计算盒子宽度的时候,一般不将这个计算在内,为的是因为方便计算。

总结一下脱离标准流的方法:

1.浮动
2.定位(但是相对定位没有脱离标准流,绝对定位和固定定位脱离标准流)

CSS相关文章

《CSS简介,语法,选择器分类使用,属性设置》
《CSS盒子模型、内外边距、边框、行高、背景》
《CSS浮动、定位详解、标签嵌套显示隐藏、CSS初始化》
《CSS精灵图、滑动门详解》


我是楚简约,感谢您的阅读,

喜欢就点个赞呗,“❤喜欢”,

鼓励又不花钱,你在看,我就继续写~

非简书用户,可以点右上角的三个“...”,然后"在Safari中打开”,就可以点赞咯~


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,722评论 1 92
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 927评论 0 2
  • 当在这一个页面上实现布局和定位有几种不同的技术。使用哪种技术,很大程序上取决于内容和目标页面,因为有很多技术比别人...
    lulu_c阅读 1,033评论 0 5
  • 三十岁的生日,一个月前已经过了。这段时间,一直在思考,三十岁应该代表着什么? 以前,在年纪还小时候,好像从没想过三...
    Yolanda_竹影阅读 723评论 0 0
  • 清明节放假,大家都回家扫墓了。 宿舍里剩我一个人,有些无聊,于是去网吧打发 时间。 游戏 玩得正起兴,突然窗口弹出...
    异次元读物阅读 610评论 1 9