前端学习 day4 : 盒子模型,浮动,定位

wuchangjian2021-11-16 20:26:36编程学习

1.居中问题

text-align是让块元素中的内容在块元素的范围内水平居中

如果设置块元素中的内容的属性line-height的高度等于块元素高度的话,那么该内容垂直居中

2.盒子边框的设置

2.1        边框的设置细节

border-top        上边框        

border-right        右边框

border-bottom        下边框

border-left        左边框

border        全边框设置

设置顺序为: 粗细 : 1px 样式:solid 实心 颜色:red 红色

边框的样式还有:dashed 点线,dotted 双线

2.2        表格边框设置时遇到的问题

当设置表格边框时,因为每个单元格都有个边框,所以当设置cellspacing为0也就是单元格之间的距离为0时,两个单元格的边框会重合,这时候显示的边框就会成为我们之前设置的宽度的二倍,所以需要解决一下这个问题.

方式一:

表格只写右上两个边框,每一个单元格写左下两个边框

方式二:

利用边框合并代码:

table,td{
border:1px solid red ;
//边框合并
border-collapse:collapse ;

3.盒子内边距的设置

3.1        如何设置

内容到盒子边框的距离

padding-top        上边距

padding-right        右边距

padding-left        左边距

padding-bottom        下边距

padding        所有边距

3,2        设置内边距遇到的问题

设置完内边距之后,会把盒子撑大,所以设置之前需要好好思考盒子的大小设置

4.盒子外边距的设置

4.1           如何设置

一个盒子的边框到另一个盒子的边框的距离

margin-top        上边框        和内边框一样

关键词        margin

4.2        设置外边框时遇到的问题

相邻情况时:

当两个相邻的盒子分别设置了外边距时,此时看谁设置的值大就听谁的,我说你离我十米远,那你说离我二十米远,那咱两就离二十米远

嵌套情况时:

当两个盒子嵌套时,子盒子设置了上外边距但是并不会生效,此时的解决办法有:

            为父盒子设置这些属性即可解决
            /* 1 加边框解决 transparent 是透明 */
            border: 0.1px solid transparent;
            /* 2 设置超出隐藏解决 */
            /* overflow: hidden; */
            /* 3 设置内边距解决 */
            /* padding-top: 1px; */

5.扩展小知识

5.1        圆角的设置

border-radius : 50% ;        如果这个盒子是个正方形,那么加上这句代码就变成一个圆形

border-radius就是让边框的拐角变圆

6.浮动

6.1        标准流

这个单词很多人翻译为文档流,字面翻译普通流或者标准流都可以。

html语言当中另外一个相当重要的概念----------标准流!或者普通流。普通流实际上就是一个网页内标签元素正常从上到下,从左到右排列顺序的意思,比如块级元素会独占一行,行内元素会按顺序依次前后排列;按照这种大前提的布局排列之下绝对不会出现例外的情况叫做普通流布局。

前面我们说过,网页布局的核心,就是用CSS来摆放盒子位置。如何把盒子摆放到合适的位置? 

CSS的定位机制有3种:普通流(标准流)、浮动和定位。

6.2        浮动

 

 如何设置浮动:

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

在CSS中,通过float属性来定义浮动,其基本语法格式如下:

选择器{float:属性值;}

6.3        浮动带来的影响 

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

浮动首先创建包含块的概念。就是说,浮动的元素总是找离它最近的父级元素对齐。但是不会超出内边距的范围。

 浮动的元素排列位置,跟上一个元素(块级)有关系。如果上一个元素有浮动,则A元素顶部会和上一个元素的顶部对齐;如果上一个元素是标准流,则A元素的顶部会和上一个元素的底部对齐。

 

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

2. 元素添加浮动后,元素会具有行内块元素的特性。元素的大小完全取决于定义的大小或者默认的内容多少浮动根据元素书写的位置来显示相应的浮动。

总结:

   1、浮动后的元素会漂浮在其他元素上边

    2、浮动后的元素是不占原来的位置

    3、浮动后的元素不能超出父元素的范围

    4、浮动后的元素在同一水平线上显示

    5、浮动后的元素会自动的转化为行内块元素

    6、浮动后的元素不能超出父元素的内边距和边框

6.4        清除浮动

6.4.1        为什么要清除浮动

我们前面说过,浮动本质是用来做一些文字混排效果的,但是被我们拿来做布局用,则会有很多的问题出现,但是,你不能说浮动不好

由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响,为了解决这些问题,此时就需要在该元素中清除浮动。

准确地说,并不是清除浮动,而是清除浮动后造成的影响

如果浮动一开始就是一个美丽的错误,那么请用正确的方法挽救它。

6.4.2        清除浮动本质

清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0的问题

 

 6.4.3        清除浮动的方法

其实本质叫做闭合浮动更好一些, 记住,清除浮动就是把浮动的盒子圈到里面,让父盒子闭合出口和入口不让他们出来影响其他元素。

在CSS中,clear属性用于清除浮动,其基本语法格式如下:

选择器{clear:属性值;}

 

1、额外标签法

W3C推荐的做法是通过在浮动元素末尾添加一个空的标签例如

<div style=”clear:both”></div>,或则其他标签br等亦可。

优点: 通俗易懂,书写方便

缺点: 添加无意义的标签,结构化语义化较差

2、父级添加overflow属性方法

可以给父级添加: overflow为 hidden|auto|scroll  都可以实现。

优点: 代码简洁

缺点: 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素

3、伪元素清除浮动

在父元素中使用after伪元素清除浮动

:after 方式为空元素的升级版,好处是不用单独加标签了

使用方法:

clearfix:after {  
content: "."; 
display: block; 
height: 0; 
clear: both; 
visibility: hidden;  
}
.clearfix {*zoom: 1;}   /* IE6、7 专有 */

优点: 符合闭合浮动思想 结构语义化正确

缺点: 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

代表网站: 百度、淘宝网、网易等

注意: content:"." 里面尽量跟一个小点,或者其他,尽量不要为空,否则再firefox 7.0前的版本会有生成空格。

在父元素中使用before和after双伪元素清除浮动

4、双伪元素清除浮动

使用方法:

.clearfix:before,.clearfix:after { 
  content:"";
  display:table;  /* 这句话可以出发BFC BFC可以清除浮动,BFC我们后面讲 */
}
.clearfix:after {
 clear:both;
}
.clearfix {
  *zoom:1;
}

7.定位

7.1        什么是定位

如果,说浮动, 关键在一个 “浮” 字上面, 那么 我们的定位,关键在于一个 “位” 上。定位是我们CSS算是数一数二难点的了,但是,你务必要学好它,我们CSS离不开定位,特别是后面的js特效,天天和定位打交道。不要抵触它,反而要爱上它,它可以让我们工作更加轻松哦!

7.2        相对定位

相对定位是将元素相对于它在标准流中的位置进行定位,当position属性的取值为relative时,可以将元素定位于相对位置。

对元素设置相对定位后,可以通过边偏移属性改变元素的位置,但是它在文档流中的位置仍然保留。如下图所示,即是一个相对定位的效果展示:

 

注意:

1. 相对定位最重要的一点是,它可以通过边偏移移动位置,但是原来的所占的位置,继续占有

2. 其次,每次移动的位置,是以自己的左上角为基点移动(相对于自己来移动位置

就是说,相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它。(相对定位不脱标)

如果说浮动的主要目的是 让多个块级元素一行显示,那么定位的主要价值就是 移动位置, 让盒子到我们想要的位置上去。

7.3        绝对定位

[注意]如果文档可滚动,绝对定位元素会随着它滚动,因为元素最终会相对于正常流的某一部分定位。

当position属性的取值为absolute时,可以将元素的定位模式设置为绝对定位。

注意: 绝对定位最重要的一点是,它可以通过边偏移移动位置,但是它完全脱标,完全不占位置。

1、父级没有定位

若所有父元素都没有定位,以浏览器为准对齐(document文档)。

2、父级有定位

绝对定位是将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。

子绝父相

这个“子绝父相”太重要了,是我们学习定位的口诀,时时刻刻记住的。

这句话的意思是子级是绝对定位的话,父级要用相对定位。

首先,绝对定位是将元素依据最近的已经定位绝对、固定或相对定位)的父元素(祖先)进行定位。

就是说,子级是绝对定位,父亲只要是定位即可(不管父亲是绝对定位还是相对定位,甚至是固定定位都可以),就是说,子绝父绝,子绝父相都是正确的。

绝对定位的盒子水平/垂直居中,普通的盒子是左右margin改为auto就可,但是对于绝对定位就无效了,定位的盒子也可以水平或者垂直居中,有一个算法:

首先left 50%父盒子的一半大小

然后走自己外边距负的一半值就可以了margin-left。

7.4        固定定位

固定定位是绝对定位的一种特殊形式,类似于正方形是一个特殊的矩形。它以浏览器窗口作为参照物来定义网页元素。当position属性的取值为fixed时,即可将元素的定位模式设置为固定定位。

当对元素设置固定定位后,它将脱离标准文档流的控制,始终依据浏览器窗口来定义自己的显示位置。不管浏览器滚动条如何滚动也不管浏览器窗口的大小如何变化,该元素都会始终显示在浏览器窗口的固定位置。

固定定位有两点:

1、固定定位的元素跟父亲没有任何关系,只认浏览器。

2、固定定位完全脱标,不占有位置,不随着滚动条滚动。

记忆法:就类似于孙猴子,无父无母,好不容易找到一个可靠的师傅(浏览器),就听的师傅的,别的都不听。

ie6等低版本浏览器不支持固定定位。

就比如那些小广告

相关文章

java.lang.IllegalStateException:在提交响应后无法转发

开始尝试在转发之后放置return;声明,无效,即ÿ...

利用STM32cubeMX实现神经网络的移植

利用STM32cubeMX实现神经网络的移植

介绍了简单的神经网络移植,可以在stm32上运行神经网络,根...

[前端学习笔记4]HTML基本结构~

<!-- 文档声明,声明当前网页的版本 --><!doc...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。