【web前端开发】CSS浮动

简介: CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。元素的水平方向浮动,意味着元素只能靠左或者靠右。一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。浮动元素之后的元素将围绕它。浮动元素之前的元素将不会受到影响。如果图像是左浮动,下面的文本流将环绕在它右边:

1.浮动


CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。

元素的水平方向浮动,意味着元素只能靠左或者靠右。

一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

浮动元素之后的元素将围绕它。浮动元素之前的元素将不会受到影响。

如果图像是左浮动,下面的文本流将环绕在它右边:


2.伪元素


伪元素:通过CSS模拟出标签的效果

伪元素 作用

::before 在父元素内容前加一个伪元素

::after 在父元素内容最后加一个伪元素

必须要有content属性

伪元素默认是行内元素


3.标准流


块级元素独占一行->垂直布局

行内元素/行内块元素 一行可以显示多个 水平布局


4.行内块元素的问题


接下来讲一下行内块元素的会出现的问题:

 Title

 </code></div><div><code>    div{</code></div><div><code>      width: 100px;</code></div><div><code>      height: 60px;</code></div><div><code>      display: inline-block;</code></div><div><code>    }</code></div><div><code>    .one{</code></div><div><code>      background-color: skyblue;</code></div><div><code>    }</code></div><div><code>    .two{</code></div><div><code>      background-color: grey;</code></div><div><code>    }</code></div><div><code>  


2.png2.png2.png

2.png

这个是div换行写的效果

23.png

这个是不换行写的效果

24.png

如果想要换行写且要两个盒子之间没有空格,就需要用到浮动


5.浮动的作用


 Title

 </code></div><div><code>    div{</code></div><div><code>      width: 100px;</code></div><div><code>      height: 60px;</code></div><div><code>      display: inline-block;</code></div><div><code>    }</code></div><div><code>    .one{</code></div><div><code>      background-color: skyblue;</code></div><div><code>      /*设置浮动*/</code></div><div><code>      float: left;</code></div><div><code>    }</code></div><div><code>    .two{</code></div><div><code>      background-color: grey;</code></div><div><code>      /*设置浮动*/</code></div><div><code>      float: left;</code></div><div><code>    }</code></div><div><code>  

显示效果:

25.png


6.浮动的特点


1.浮动会脱离标准流(俗称"脱标"),在标准流中不占位置

示例:
   Title

 </code></div><div><code>    .one{</code></div><div><code>      width: 100px;</code></div><div><code>      height: 100px;</code></div><div><code>      background-color: skyblue;</code></div><div><code>    }</code></div><div><code>    .two{</code></div><div><code>      width: 200px;</code></div><div><code>      height: 200px;</code></div><div><code>      background-color: grey;</code></div><div><code>    }</code></div><div><code>    .three{</code></div><div><code>      width: 300px;</code></div><div><code>      height: 300px;</code></div><div><code>      background-color: greenyellow;</code></div><div><code>    }</code></div><div><code>  

这是不加浮动的显示效果,下面看看加了浮动的

在上面代码的基础上,给one这个类选择器加一个浮动

.one{

     width: 100px;

     height: 100px;

     background-color: skyblue;

     /*增加浮动*/

     float: left;

效果:

27.png

可以看到第二个跑到了第一个div的位置,就这就是浮动的脱标现象,相当于是飞起来了.

但是蓝色的div盒子并没有把灰色div盒子的内容遮盖掉,虽然是脱标,但算是一种半脱标.

浮动的元素比标准流多半个级别,可以覆盖标准流中的元素 这也是浮动的第二个特点

此时如果再给第二个div增加浮动,会是什么效果呢

示例:

   .two{

     width: 200px;

     height: 200px;

     background-color: grey;

     /*增加浮动*/

     float: left;

效果

28.png

第二个div是紧靠着第一个div对齐的,浮动找浮动下一个浮动元素会在上一个元素的左右浮动 ->浮动的第三个特点

浮动的元素都是靠着最上面对齐的,这也叫顶对齐 如果不想顶对齐,也可以给盒子增加外边距实现不对齐

浮动的显示效果:

一行可以显示多个

可以设置宽高

浮动后的元素具有行内块元素的特点,但是浮动的元素之间换行写不会有缝隙


7.清除浮动


这里的清除浮动并不是把浮动的代码给清除了,而是其它元素会受到浮动的影响,我们不想让其它元素受到浮动的影响,因此我们需要清除浮动

示例:

  Title

</div><div>    .one{</div><div>      width: 500px;</div><div>      height: 300px;</div><div>      background-color: pink;</div><div>      margin: 0 auto;</div><div>    }</div><div>    .two{</div><div>      width: 100%;</div><div>      height: 100px;</div><div>      background-color: greenyellow;</div><div>    }</div><div>    .three{</div><div>      /*浮动*/</div><div>      float: left;</div><div>      width: 300px;</div><div>      height: 300px;</div><div>      background-color: skyblue;</div><div>      margin: 0 auto;</div><div>    } </div><div>  

效果:

29.png

如果我想要的是绿色的盒子就在蓝色的盒子下面这个位置显示

那么如果将粉色div的高度去除掉,那么就出现以下效果:

30.png

此时按下F12检查,我们发现第一个div的长和宽为500 * 0

31.png

蓝色的div已经脱标了.因此绿色的div就跑到上面去了.这就是受到了浮动的影响

父子级关系,父元素没有高度,子元素浮动,后面的标准流盒子就会受到影响

最简单的办法就是给父元素设置高度,但是通常情况下,不会这么写

下面给大家介绍其它清除浮动的方法

方法1:额外标签

方法有两步:1.给父元素内容的最后加一个块级元素 2.给增加的这一个块级元素增加设置: clear:both

示例:

在刚才的代码上进行修改

  Title

</div><div>    .one{</div><div>      width: 500px;</div><div>      /*height: 300px;*/</div><div>      background-color: pink;</div><div>      margin: 0 auto;</div><div>    }</div><div>    .two{</div><div>      width: 100%;</div><div>      height: 100px;</div><div>      background-color: greenyellow;</div><div>    }</div><div>    .three{</div><div>      float: left;</div><div>      width: 300px;</div><div>      height: 300px;</div><div>      background-color: skyblue;</div><div>    }</div><div>    /*清除浮动*/</div><div>    .clearfix{</div><div>      clear: both;</div><div>    }</div><div>  

效果:

32.png

这个方法不止清除了浮动,也让粉色重新显示出来了33.png这种方法是增加的行内元素,把原来的盒子撑开了

缺点: 增加了额外的元素,会使HTML结构变得复杂


方法2:单伪元素


这个方法是使伪元素代替了额外的标签

基本写法:

.clearfix::after{

     content: '';

     display: block;

     clear: both;

   }

补充写法(为了兼容性):

   .clearfix::after{

     content: '';

     display: block;

     clear: both;

  /*在网页中看不到伪元素*/

     height: 0;

     visibility: hidden;

   }

直接让父元素调用这个伪类选择器即可

原理是和额外标签法是一样的

2.png


方法3:双伪元素


与单伪元素写法类似

写法:

.clearfix::after,

   .clearfix::before{

     content: '';

     display: table;

   }

/*真正清除浮动的标签*/

   .clearfix::after{

     clear: both;

   }

这里的 .clearfix::before 是为了解决外边距塌陷问题

然后让父类引用伪类选择器即可

单伪元素和双伪元素这两种清除浮动的写法,不需要背,直接拿来用即可


方法4:overflow


清除浮动还有一种特别简单的写法: 直接给父元素设置 overflow:hidden

这里就不跟大家演示了,很简单.可以自行去尝试一下

相关文章
|
2月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
69 3
|
2月前
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
2月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
46 6
|
2月前
|
前端开发
CSS 浮动属性讲解和使用
本文介绍了CSS中的浮动(float)属性,包括其基本功能、属性选项及其在网页布局中的应用。浮动使元素脱离文档流,向左或右排列,周围元素随之调整。文章还详细讲解了清除浮动的方法,如使用clear属性、设置父元素高度、利用overflow属性、伪元素等,以解决因浮动导致的布局问题。最后,强调了浮动在创建复杂布局时的作用,并预告后续内容。
39 2
|
2月前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
2月前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
2月前
|
Web App开发 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用CSS3,打造炫酷视觉效果!
【10月更文挑战第31天】前端开发面临复杂布局的挑战,本文介绍了几种提升开发效率和代码质量的工具和技术。基础的HTML和CSS可以应对大部分布局需求,而Firefox开发者工具、VS Code、Vue、React等则能应对更复杂的布局,帮助开发者构建高性能、用户友好的网页应用。
35 4
|
2月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
42 3
|
2月前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
67 2
|
Web App开发 前端开发 JavaScript