前端CSS基础10(浮动)

server/2024/11/9 16:45:33/

前端CSS基础10(浮动)

  • 浮动
    • 元素浮动后的特点
    • 浮动后的特点
    • 浮动后的影响及解决
  • 浮动布局小练习

浮动

CSS中的浮动是一种布局技术,常用于实现元素的排列和定位。通过使用float属性,可以让元素在页面中左浮动或右浮动,使得其他内容围绕该元素布局。

在 CSS 中,可以使用 float 属性来使元素浮动。浮动的元素会脱离正常文档流,可以向左或向右移动,并尽可能靠近其相邻的浮动元素。
float 属性的常见取值包括:

  • left:元素向左浮动。
  • right:元素向右浮动。
  • none:默认值

元素浮动后的特点

浮动前:如以下代码,2号浮动前

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>css">.outer{width: 400px;height: 400px;background-color:aqua;padding: 10px;}.box{font-size: 20px;   padding: 10px;}.box1{background-color:yellow;}.box2{background-color:antiquewhite;/* float: left;*/} .box3{background-color:blue;}span{background-color: brown;font-size: 40px;vertical-align: middle;}img{height: 200px;float: left;margin-right: 0.5em;}.text::first-letter{font-size: 80px;float: left;}</style>
</head>
<body><div class="outer"><div class="box box1">1</div><div class="box box2">2</div><div class="box box3">3</div></div>
</body>
</html>

在这里插入图片描述
浮动2后:
在这里插入图片描述
浮动3后
在这里插入图片描述

浮动后的特点

CSS 元素浮动后具有以下特点:

  • 脱离文档流:浮动元素会脱离正常文档流,不再占据原本的空间,而是向左或向右移动,允许其他内容环绕在其周围。(浮空)
  • **元素重叠:**浮动元素会尽可能靠近相邻的浮动元素,导致元素重叠。这通常会影响页面布局,需要通过清除浮动或其他方法来处理重叠的情况。
  • 不会独占一行,可以与其他元素共用一行。
  • **高度塌陷:**父元素的高度可能因为子元素浮动而无法被正常撑开,造成高度塌陷的问题。可以使用清除浮动的技术解决这个问题。
  • **文本环绕:**浮动元素可以使文本环绕在其周围,创造出独特的设计效果。
  • 浮动清除:为了避免浮动元素导致的布局问题,通常会使用清除浮动技术,包括清除浮动的伪元素、clear 属性等方法。
  • 不管浮动前是什么元素,浮动后,默认宽和高都是被内容撑开(尽可能小),而且可以设置宽和高。
  • 可以正常的设置四个方向的margin和padding。

浮动后的影响及解决

影响:

  • 对兄弟的影响:后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面;对前面的兄弟无影响。
  • 对父元素的影响:不能撑起来父元素的高度,导致父元素高度塌陷;但是父元素的宽度依然束缚浮动的元素。

解决方案:

  • 方案一:在所有浮动元素的最后面,添加一个块级元素,并给该块级元素设置clear:both;

  • 方案二:给浮动的父元素,设置伪元素,通过伪元素清除浮动,如下:(推荐使用)

css">        .clearfix::after{content: '';display: block;clear: both;}

clear 属性用于指定元素哪些方向的浮动元素是不允许靠近的。它只会对前面有浮动元素的元素生效。

以下是 clear 属性的属性值及功能:

clear: left;: 表示元素的左侧不允许存在浮动元素。如果左侧有浮动元素,这个元素将被清除浮动,并显示在浮动元素下方。

clear: right;: 表示元素的右侧不允许存在浮动元素。如果右侧有浮动元素,这个元素将被清除浮动,并显示在浮动元素下方。

clear: both;: 表示元素两侧都不允许存在浮动元素。即使左右两侧都有浮动元素,这个元素也会被清除浮动,并显示在所有浮动元素下方。

clear: none;: 默认值,表示元素两侧都可以存在浮动元素,不会清除任何浮动
布局中的一个原则:设置浮动的时候,兄弟元素要么全都浮动,要么全都不浮动。

浮动布局小练习

  • 块元素共用一行就是浮动,不浮动的块元素就是独占一行。
  • 块元素本来就是独占一行,想让几个块元素并行则用到浮动。
  • 每用到浮动,就在父元素使用浮动消除,浮动消除代码如下:使用以下代码,只需要在使用浮动元素的父类元素加上一个class="clearfix"的类就行。
css">        .clearfix::after{content: '';display: block;clear: both;}

写布局的代码,写代码前先分好块
在这里插入图片描述
在这里插入图片描述
块里面套块
块块并排(多块占用一行)用浮动,一个块单独占一行不用浮动。记得父元素的浮动消除
实现代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>css">*{margin: 0px;padding: 0px;}.leftfix{float: left;}.rightfix{float: right;}.clearfix::after{content: '';display: block;clear: both;}.container{width:960px;margin:0 auto;text-align: center;}.loge{width:200px;}.banner1{width:540px;margin:0px 10px;}.banner2{width:200px;}.loge,.banner1,.banner2{height: 80px;background-color: #ccc;line-height: 80px;}.menu{height: 30px;background-color: #ccc;margin-top: 10px;line-height: 30px;}.item1,.item2{width: 368px;height: 198px;border: 1px solid #ccc;line-height:198px;margin-right: 10px;}.content{margin-top:10px;}.item3,.item4,.item5,.item6{width: 178px;height: 198px;border: 1px solid #ccc;margin-right: 10px;line-height: 198px;}.bottom{margin-top: 10px;}.item7,.item8,.item9{width: 188px;height: 128px;border: 1px solid #ccc;}.item7,.item8{margin-bottom: 10px;}.foot{width: 960px;height: 60px;background-color: #ccc;margin-top: 10px;line-height: 58px;}</style>
</head>
<body><!-- 整体 -->
<div class="container "><!-- 头部 --><div class="page-header clearfix"><div class="loge leftfix">loge</div><div class="banner1 leftfix">banner1</div><div class="banner2 leftfix">banner2</div></div><!-- 菜单 --><div class="menu">菜单</div><!-- 内容区 --><div class="content clearfix"><!-- 内容区左 --><div class="left leftfix "><!-- 内容区上半部分 --><div class="top clearfix"><div class="item1 leftfix">栏目一</div><div class="item2 leftfix">栏目二</div></div><!-- 内容区下半部分 --><div class="bottom clearfix"><div class="item3 leftfix">栏目三</div><div class="item4 leftfix">栏目四</div><div class="item5 leftfix">栏目五</div><div class="item6 leftfix">栏目六</div></div></div><!-- 内容区右 --><div class="right rightfix"><div class="item7">栏目七</div><div class="item8">栏目八</div><div class="item9">栏目九</div></div> </div><!-- 页脚 --><div class="foot">页脚</div></div></body>
</html>

之前不太了解的点

        *{margin: 0px;padding: 0px;}

在CSS中,*{ margin: 0px; padding: 0px; }的作用是移除所有HTML元素的外边距(margin)和内边距(padding)。

外边距(margin)是指元素周围的空白区域,用于控制元素与其他元素之间的间距。而内边距(padding)是指元素内容与边框之间的空白区域,用于控制元素内部内容的间距。

通过将marginpadding都设置为0,可以消除所有元素的外边距和内边距,使页面布局更加紧凑。这在某些情况下可能是有用的,例如当你想要创建一个自定义的布局或者去除默认的浏览器样式时。


http://www.ppmy.cn/server/19454.html

相关文章

ElasticSearch集群

我们ES集群主要解决的是这两个问题&#xff1a;海量数据存储问题、单点故障问题 海量数据存储问题&#xff1a;单机的ES&#xff0c;数据存储能力是有上限的 单点故障问题&#xff1a;如果单机上的Elasticsearch节点发生故障&#xff0c;整个系统会停止服务&#xff0c;导致数据…

C语言项目实战——扫雷

目录 1.前言 2.完整流程 2.1规划书 2.2代码部分 2.2.1文件的结构设计 2.2.2变量的创建 2.2.3菜单的基本实现 2.2.4初始化期棋盘 2.2.5输出完整棋盘 2.2.6埋雷的实现 2.2.7查询周围雷的数量 2.2.8扫雷的实现 2.2.9完整代码 3.总结 1.前言 哈喽大家好吖&#xff0c;今…

STM32 DAP

STM32 DAP DAP&#xff08;Debug Access Port&#xff09;是一种调试访问端口&#xff0c;通常与调试接口一起使用&#xff0c;例如JTAG或SWD。DAP的作用是提供对目标设备内部的调试、测试和编程访问权限&#xff0c;允许开发人员通过调试工具与目标设备进行通信&#xff0c;并…

机器人系统开发ros2-基础实践01-学会自定义一个机器人动作aciton实体类

您之前在了解操作教程中了解了action 。与其他通信类型及其各自的接口&#xff08;主题/消息和服务/srv&#xff09;一样&#xff0c;您也可以在包中自定义操作。本教程向您展示如何定义和构建可与您将在下一个教程中编写的action服务器和action 客户端一起使用的操作。 需要理…

详解MyBatis配置文件开发与注解式开发

首先呢&#xff0c;五一快来啦&#xff01;提前祝各位宝子们五一玩得开心&#xff0c;然后讲解一下MyBatis框架呀!!! 一.框架介绍 MyBatis 的主要特点 二.MyBatis工作流程 1. 初始化和配置 2. 创建 SqlSessionFactory 3. 获取 SqlSession 4. 映射器绑定 5. 执行操作 6.…

数据输出(进制、小数位,左对齐右对齐

#include <stdio.h> int main() {int a041; printf("%d\n",a);//33printf("%o\n",a);//41 %o输出八进制&#xff0c;开头不加0printf("%x\n",a);//21 %x输出十六进制&#xff0c;开头不加0Xprintf("%#o\n",a);//…

4G+北斗太阳能定位终端:一键报警+倾覆报警 双重保障船舶安全

海上作业环境复杂多变&#xff0c;海上航行充满了各种不确定性和风险&#xff0c;安全事故时有发生&#xff0c;因此海上安全与应急响应一直是渔业和海运行业关注的重点。为了提高海上安全保障水平&#xff0c;4G北斗太阳能定位终端应运而生&#xff0c;它集成了一键报警和倾覆…

网络安全实训Day22

网络空间安全实训-渗透测试 CSRF 定义&#xff1a;跨站伪造请求攻击 攻击者透过诱骗受害者点击攻击者提前构造的恶意链接&#xff0c;从而以受害者的身份向网站服务器发起请求&#xff0c;达到攻击的目的 通过CSRF在网站后台创建管理员 1.搭建创建管理员账号的站点 1.将对方网…