css:浮动

网页的本质上就是摆放盒子,把盒子摆到相应的位置上

css提供了三种传统的布局方式:

普通流(标准流):标签按默认方式排列,最基本的布局方式

浮动

定位

实际开发中,一个网页基本包含了三种这种布局方式

浮动

按照默认的标签布局方式,div只能占一行,也就是说不能出现两个div在同一行的情况

但是我们学了行内块模式,可以把块转化为行内块

display: inline-block;

可以看见虽然在一行,但是块与块的距离没办法调整,实际开发中,我们对横向块分布的距离是要精确到像素的

使用标准流难以让我们的盒子按想要的位置摆放

但是浮动可以,浮动最典型的应用就算让多个块级元素在一行内排列显示

所以我们网页布局的第一准则:多个块级元素纵向排列用标准流,横向排列找浮动

float: left/right/none/inherit;

盒子浮动的规则是:

  • left - 元素浮动到其容器的左侧
  • right - 元素浮动在其容器的右侧
  • none - 元素不会浮动(将显示在文本中刚出现的位置)。默认值。
  • inherit - 元素继承其父级的 float 值

如果给两个图片都施加left浮动,就会黏在一起

如果对他们施加了圆角边框会这样

如果一个left一个right就会紧挨父容器的左/右

浮动最典型的特性:脱离了标准流的控制。浮动的盒子不再保留原先位置

当菠萝吹雪放在草草的上面的时候,对菠萝吹雪施加float会使菠萝吹雪上浮,菠萝吹雪有了z轴,下面的曹操就会向上移动,占据原来菠萝吹雪的位置,呈现的效果就是和菠萝吹雪叠起来了

但是当草草放在上面的时候,对菠萝吹雪施加浮动,菠萝吹雪是不会向上顶端对齐的,因为他已经脱离标准流了

也就是说并不是所有的浮动都会盖在标准流上面,当标准流还是标准流的时候,它自己独占一行,他后面的浮动不可以盖在它上面;浮动的盒子只会影响后面的标准流,不会影响前面的标准流

一般防止出现这种问题,如果一个盒子里有很多盒子,其中一个盒子浮动了,就应该让剩下的兄弟盒子一起浮动

元素顶部对齐

浮动的元素对齐都是顶端对齐:

按上沿对齐捏

浮动的元素具有行内块的特性

当我们对行内元素施加了浮动以后,这个盒子就具有行内块元素的特性

平常你对span施加宽和高是没有作用的

  .x span {margin-top: 100px;background-color: aquamarine;width: 200px;height: 100px;}

但是如果给他施加浮动:

  .x span {margin-top: 100px;background-color: aquamarine;width: 200px;height: 100px;float: left;}

有宽高了!

其他元素也是这样的,如果没有宽的值会继承父亲的宽,但是变成行内块元素以后,就是行内块元素的属性,宽就是内部文字的宽

浮动元素经常和标准流的父级搭配使用

如果我们想要这样的效果怎么做:

可以看到盒子并不像我们写的盒子一样在最左和最右对齐,也不能保证大盒子在中间对齐

但是我们可以把浮动的盒子放在标准流的盒子里,让浮动的盒子在父级内浮动,就可以出现这样的效果了:

 .xy {background-color: azure;width: 700px;/* height: 500px; */margin: 0 auto;}//把x和y包进同一个盒子里

这样就又可以在正中间,又可以保持和body边框的间距

做个小demo:

放小米官网做排版

妈呀真是de死我了死bug

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}li {list-style: none;}.box {width: 1226px;height: 644px;background-color: beige;margin: 0px auto;overflow: hidden;}.box .left {width: 234px;height: 460px;background-color: rgba(105, 101, 101, .6);float: left;}.box .right {width: 992px;height: 460px;background-color: blueviolet;float: left;text-align: center;}.box .right .png1 {width: 992px;height: 460px;display: block;}.box .bottom {margin-top: 474px;background-color: cadetblue;width: 1226px;height: 170px;/* float: right */}.box .bottom .bottom-l {width: 234px;height: 170px;background-color: blue;float: left;}.box .bottom .bottom-r>div {width: 316px;height: 170px;background-color: gold;float: right;display: block;margin: 0px 10px 0px 0px;}.box .bottom .bottom-r>div img {width: 316px;height: 170px;}.box .bottom .bottom-r .last {margin-right: 0px;}</style>
</head><body><div class="box"><div class="left"></div><div class="right"><img src="027dedf7486746ca8b768923c28b76c5.png" alt="" class="png1"></div><div class="bottom"><div class="bottom-l"> </div><div class="bottom-r"><div class="last"><img src="1ac77590368ff636d0b4f6a988133f55.png" alt="耳机"></div><div><img src="8dede2520f8dfff9c9b690af498cafe8.jpg" alt="电视"></div><div><img src="6b67117bc92924fb2ff0e7ad2be86084.png" alt="手机"></div></div></div></div>
</body></html>

妹写完,就是做了个分区,和浮动的练习

常见网页布局格式

使用标准流父级

对大盒子细分:

做的更细就是这种:

我们尝试布局一下,大概就是:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;.top {height: 50px;background-color: grey;text-align: center;}.banner {width: 980px;height: 150px;background-color: grey;margin: 15px auto;text-align: center;}.box {width: 980px;height: 300px;margin: 0px auto;background-color: deeppink;}.box li {width: 233.75px;height: 300px;background-color: grey;float: left;margin-right: 15px;text-align: center;}.box .last {margin-right: 0px;}.footer {height: 200px;background-color: grey;margin-top: 15px;text-align: center;}</style>
</head>
<section></section><body><div class="top">top</div><div class="banner">banner</div><div class="box"><ul><li></li><li></li><li></li><li class="last"></li></ul></div><div class="footer">fooer</div>
</body></html>

清除浮动

有时候你的页面的父盒子的大小其实不是固定的:在网页里打开不同的文章,盒子的长度和文章的长度相搭配

所以这种情况下我们是不能给父盒子高度的

但是如果不给父盒子高度,又想让子盒子在同一行,就要加浮动

而加了浮动会导致父盒子的高度变为0,下面的标准流再接上来,会影响布局

这时候我们就需要清除浮动

清除浮动的本质是清除浮动元素造成的影响,适用于没给具体高度的父盒子;清除浮动以后,父级会根据浮动的盒子自动检测高度,父级有了高度,就不会影响下面的标准流了

如何清除浮动:

额外标签法也称隔墙法,是w3c推荐的做法

父级添加overflow属性

父级添加after属性

父级添加双伪元素

第一种:额外标签法

在最后一个浮动的元素后面加一个额外的标签(一定要是块级元素,因为行内元素没有高),对这个标签施加clear:both;来控制父盒子的高度既能被撑开,也不会影响下面的标准流

 .extern {clear: both;}

添加新的子盒子,父盒子也会被自动加长:

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

缺点:添加了许多无意义的标签,结构化差

第二种:给父元素添加overflow

.box {overflow: hidden;width: 980px;/* height: 300px; */margin: 0px auto;background-color: deeppink;}

效果也是一样的

之前我们用这个代码解决了父子元素的塌陷问题

缺点是无法显示溢出父盒子的部分

第三种:after伪元素法

给父盒子起一个类名clearfix,然后施加这个声明

.clearfix::after {content: "";display: block;height: 0;clear: both;visibility: hidden;}.clearfix {zoom: 1;}

大意是用css施加了一个元素堵在最后面,也是一个额外标签的作用

算是额外标签法的升级版,因为是用css写的,不是用结构写的,所以优于额外标签法

缺点:下面那段代码是需要照顾低版本浏览器的

双伪元素清除浮动

  .clearfix::before,.clearfix::after {content: "";display: table;}.clearfix:after {clear: both;}.clearfix {*zoom: 1;}

和上面是一个作用,区别是在前面也堵了一个标签,更符合闭合浮动的概念

总结:为什么清除浮动?

父级没有高度

子盒子浮动

影响下面的标准流布局

rz命令我恨你

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/472318.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++入门--引用与指针,const与引用,NULL与nullptr

1.引用与指针&#xff1a; 1.1引用的介绍&#xff1a; 引用相当于一个变量的别名&#xff0c;向函数传参后或者在main函数中可以直接对这个变量进行操作。 1.2引用的返回&#xff1a; 函数返回的时候是生成了一个临时变量&#xff0c;这个变量具有常性&#xff0c;是不能对这…

单片机智能家居火灾环境安全检测

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 在现代社会&#xff0c;火灾安全始终是人们关注的重点问题。随着科技的不…

SpringBoot3全面复习

Springboot3 Spring Boot 3是Spring Boot框架的一个主要版本&#xff0c;它基于Spring Framework 6构建&#xff0c;引入了对最新Java版本&#xff08;如Java 17及以上&#xff09;的支持&#xff0c;并提供了许多新特性和改进。Spring Boot 3旨在简化Spring应用的初始搭建以及…

海思3403对RTSP进行目标检测

1.概述 主要功能是调过live555 testRTSPClient 简单封装的rtsp客户端库&#xff0c;拉取RTSP流&#xff0c;然后调过3403的VDEC模块进行解码&#xff0c;送个NPU进行目标检测&#xff0c;输出到hdmi&#xff0c;这样保证了开发没有sensor的时候可以识别其它摄像头的视频流&…

哈佛商业评论 | 未来商业的技术趋势:百度李彦宏谈技术如何变革商业

在《哈佛商业评论》的HBR IdeaCast节目中&#xff0c;百度联合创始人、首席执行官兼董事长李彦宏分享了他对人工智能&#xff08;AI&#xff09;和其他技术趋势的见解。这期节目讨论了百度如何将生成式AI融入业务&#xff0c;以及这些技术如何重塑我们的生活和工作方式。让我们…

插入排序——希尔排序

插入排序——希尔排序 7.5 插入排序——希尔排序概念和思路参考程序希尔排序的特性总结复杂度稳定性 7.5 插入排序——希尔排序 概念和思路 我们都知道&#xff0c;直接插入排序的时间复杂度为 O ( n 2 ) O(n^2) O(n2)&#xff0c;但当数据无限接近有序或本身就是有序的时候&a…

Python小试牛刀:第一次爬虫,获取国家编码名称

使用场景&#xff1a; 需要初始化国家&#xff08;地区表&#xff09;&#xff0c;字段有国家名称、国家编码等等。 解决方案&#xff1a; 使用requests发送请求&#xff0c;使用bs4解析得到的HTML&#xff0c;打开F12&#xff0c;查看元素&#xff0c;&#xff08;可以Ctrl…

Java中的集合类与线程安全的讨论

1.ArrayList ArrayList是线程不安全的&#xff0c;可以在单线程中使用&#xff0c;在多线程中可以根据代码选择合适的时机进行加锁&#xff0c;实现线程安全的操作&#xff0c;但对代码能力要求较高。 2.Collections.synchronizedList(new ArrayList) 返回的List中的关键操作…

【数据结构】线性表——栈与队列

写在前面 栈和队列的关系与链表和顺序表的关系差不多&#xff0c;不存在谁替代谁&#xff0c;只有双剑合璧才能破敌万千~~&#x1f60e;&#x1f60e; 文章目录 写在前面一、栈1.1栈的概念及结构1.2、栈的实现1.2.1、栈的结构体定义1.2.2、栈的初始化栈1.2.3、入栈1.2.4、出栈…

A030-基于Spring boot的公司资产网站设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

企业生产环境-麒麟V10(ARM架构)操作系统部署kafka高可用集群

前言&#xff1a;Apache Kafka是一个分布式流处理平台&#xff0c;由LinkedIn开发并捐赠给Apache软件基金会。它主要用于构建实时数据流管道和流应用。Kafka具有高吞吐量、可扩展性和容错性的特点&#xff0c;适用于处理大量数据。 以下是Kafka的一些核心概念和特性&#xff1…

供应链管理、一件代发系统功能及源码分享 PHP+Mysql

随着电商行业的不断发展&#xff0c;传统的库存管理模式已经逐渐无法满足市场需求。越来越多的企业选择“一件代发”模式&#xff0c;即商家不需要自己储备商品库存&#xff0c;而是将订单直接转给供应商&#xff0c;由供应商直接进行发货。这种方式极大地降低了企业的运营成本…

机器学习 ---线性回归

目录 摘要&#xff1a; 一、简单线性回归与多元线性回归 1、简单线性回归 2、多元线性回归 3、残差 二、线性回归的正规方程解 1、线性回归训练流程 2、线性回归的正规方程解 &#xff08;1&#xff09;适用场景 &#xff08;2&#xff09;正规方程解的公式 三、衡量…

Unity类银河战士恶魔城学习总结(P127 Stat ToolTip属性提示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了把鼠标放到属性上面就会显示属性的作用 UI_StatToolTip.cs 这段代码实现了一个UI提示框&#xff08;ToolTip&#xff09;功能…

C/C++语言基础--initializer_list表达式、tuple元组、pair对组简介

本专栏目的 更新C/C的基础语法&#xff0c;包括C的一些新特性 前言 initializer_list表达式、tuple元组、pair对组再C日常还是比较常用的&#xff0c;尤其是对组在刷算法还是挺好用的&#xff0c;这里做一个简介&#xff1b;这三个语法结合C17的结构化绑定会更好用&#xff…

Python_爬虫1_Requests库入门

目录 Requests库 7个主要方法 Requests库的get()方法 Response对象的属性 爬取网页的通用代码框架 理解requests库的异常 HTTP协议及Requests库方法 HTTP协议 HTTP协议采用URL作为定位网络资源的标识。 HTTP协议对资源的操作 理解PATCH和PUT的区别 HTTP协议与Requse…

视频流媒体播放器EasyPlayer.js RTSP播放器视频颜色变灰色/渲染发绿的原因分析

EasyPlayer.js RTSP播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式&#xff0…

[JAVA]有关MyBatis环境配置介绍

什么是MyBatis环境配置&#xff1f; MyBatis是基于JDBC对数据库进行操作&#xff0c;在我们进行数据操作时&#xff0c;我们需要告诉MyBatis我们连接哪个数据库&#xff0c;ip地址&#xff0c;数据库名称&#xff0c;用户名密码等。以此来进行环境配置。 首先&#xff0c;MyB…

微搭低代码入门05循环

目录 1 for 循环2 while 循环3 do...while 循环4 break 语句5 循环展示组件总结 在编程中&#xff0c;循环是一种非常强大的控制结构&#xff0c;它允许我们重复执行一段代码直到满足某个条件为止。在微搭中&#xff0c;我们一般用循环来处理我们数据库返回的结果。 在微搭中&a…

11.13机器学习_线性回归

十 集成学习方法之随机森林 机器学习中有一种大类叫集成学习&#xff08;Ensemble Learning&#xff09;&#xff0c;集成学习的基本思想就是将多个分类器组合&#xff0c;从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话&#xff1a;三个…