前端【3】--CSS布局,CSS实现横向布局,盒子模型

news2025/1/20 8:12:52

盒子分类

1、块级盒子

2、内联级盒子

3、内联块级盒子

4、弹性盒子 

5、盒子内部分区

方法一:使用 float 普通盒子实现横向布局

方法二:使用 display: inline-block 内联块级元素实现横向布局

方法三:使用弹性盒子 flexbox(推荐)

1、父级属性:

 2、子级属性:

示例:


往期文章:

前端【2】html添加样式、CSS选择器-CSDN博客

盒子分类

1、块级盒子

块级元素布局:块级元素的特性,独占一行,竖向排列

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>块级元素</title>
    <style>
        div {
            width: 200px;
            height: 100px;
            background-color: aquamarine;
            margin: 10px 0; /* 上下间距 */
        }
    </style>
</head>
<body>
 <!-- 块级元素:独占一行,竖着布局对宽度高度支持 display:block -->
    <div>块级元素 1</div>
    <div>块级元素 2</div>
    <p>段落文本</p>
    <h1>标题</h1>
</body>
</html>

常见块级标签:div、p、h、ul、ol、li 

2、内联级盒子

内联元素的特性:不独占一行,对宽高不支持,行内元素连续排列。

<body>
<!-- 内联级元素 不独占一行 对宽度高度不支持 display: inline -->
    <span>内联元素 1</span>
    <span>内联元素 2</span>
    <a href="#">超链接</a>
</body>

常见的有span、a、img、 

3、内联块级盒子

内联块级元素的特性:不独占一行,但支持宽高设置,连续排列。 

 <!-- 内联块级级元素 不独占一行 对宽度高度支持 display:inline-block -->
     <img src="material/蒲公英.png" alt="">
     <img src="material/蒲公英.png" alt="">
     <img src="material/蒲公英.png" alt="">

4、弹性盒子 

弹性盒子(Flexbox)的特性:子元素默认横向排列,可灵活控制布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>弹性盒子</title>
    <style>
        .container {
            display: flex; /* 弹性盒子 */
            width: 600px;
            height: 200px;
            background-color: yellow;
            justify-content: space-between; /* 子元素之间平均分布 */
            align-items: center; /* 垂直方向居中 */
        }
        .container div {
            width: 150px;
            height: 100px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div class="container">
        <div>子元素 1</div>
        <div>子元素 2</div>
        <div>子元素 3</div>
    </div>
</body>
</html>

5、盒子内部分区

CSS页面布局(超详解)_css布局-CSDN博客----推荐博客~~

每个元素的盒子由以下四个部分组成:

1. 内容区 (Content)

  • 元素的实际内容(如文字、图片等)所在的区域。
  • 它的大小由 widthheight 属性决定。

2. 内边距 (Padding)

  • 内容与边框之间的距离。
  • 使用 padding 属性设置,可以单独设置上下左右的内边距。

3. 边框 (Border)

  • 环绕内容区和内边距的边界。
  • 使用 border 属性设置,定义边框的宽度、样式和颜色。

4. 外边距 (Margin)

  • 元素与其他元素之间的距离。
  • 使用 margin 属性设置,可以单独设置上下左右的外边距。

这里放一张名图:

 浏览器默认给外边距和内边距设置一定的初值,可以对margin和padding的值来改变其样式,其代码如下:

*{              /*通用选择器,选择所有元素*/
    margin:0;  /*外边距清0*/
    padding:0; /*内边距清0*/
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒子模型示例</title>
    <style>
        .box {
            width: 200px;                /* 内容区宽度 */
            height: 100px;               /* 内容区高度 */
            background-color: lightblue; /* 内容区背景色 */

            padding: 20px;               /* 内边距 */
            border: 10px solid blue;     /* 边框 */
            margin: 30px auto;           /* 外边距:上下30px,左右居中 */
        }

        body {
            background-color: #f5f5f5;   /* 页面背景色 */
        }
    </style>
</head>
<body>
    <div class="box">内容区</div>
</body>
</html>

 


在前端布局开发中,我们经常需要对元素进行横向布局。实现横向布局的方法有很多,从传统的 float 到现代的 flexbox,每种方式都有其特点和适用场景。本文将对三种常见方法进行详细介绍,分析它们的优缺点,并推荐最佳实践。


方法一:使用 float 普通盒子实现横向布局

通过为子元素设置 float 属性可以实现横向布局:

  • float: left; 子元素左浮动。
  • float: right; 子元素右浮动

存在的问题:父级元素高度坍塌:使用 float 后,父级元素的高度不会被子元素撑开,可能导致后续元素向上移动。

解决方法

  1. 设置父级高度:手动为父级元素设置固定高度,如 height: 150px;。但固定高度难以灵活适配内容。
  2. 清除浮动
    • 给父级元素添加 overflow: hidden;,使父级高度随子级内容变化。

无法解决的问题:

1、子级元素均分 父级元素需要计算设置宽度 ,但不一定能均分

2、子级元素想要在父级元素内均匀分布需要计算设置 margin,但不一定能均匀分布

3、书写比较繁琐,代码冗余

方法二:使用 display: inline-block 内联块级元素实现横向布局

将子元素设置为 inline-block,让其表现为块状元素,同时可以像文本一样在一行内排列。

存在的问题:空白间隙--inline-block 布局的子元素之间若存在换行符,会被浏览器解析为空白符,导致子元素之间有多余间隙。

解决方法

  1. 移除换行符:将子元素标签紧贴书写。
    <div class="parent"><div class="child"></div><div class="child"></div></div>
    
  2. 设置 font-size 为 0:在父级元素上设置 font-size: 0;,清除空白符影响。

无法解决的问题:

1、子级元素均分 父级元素需要计算设置宽度 ,但不一定能均分

 2、子级元素想要在父级元素内均匀分布需要计算设置 margin,但不一定能均匀分布

 3、书写比较繁琐,代码冗余

方法三:使用弹性盒子 flexbox(推荐)

  flexbox 是一种强大且灵活的现代布局方式,通过为父级元素设置 display: flex,即可实现横向布局,且能够轻松解决 floatinline-block 布局中的许多问题。 

1、父级属性

  • flex-direction:定义子元素排列方向。
    • row:从左到右排列(默认)。
    • row-reverse:从右到左排列。
    • column:纵向从上到下排列。
    • column-reverse:纵向从下到上排列。
  • flex-wrap:定义子元素是否换行。
    • nowrap:不换行(默认)。
    • wrap:自动换行。
  • justify-content:定义子元素在水平方向的分布方式。
    • flex-start:从起点开始排列。(需要结合flex-direction 来看)
    • flex-end:从终点开始排列。
    • center:居中排列。
    • space-between:代表空白元素均匀分布在元素中间-------经常用到
    • space-around:子元素之间及首尾均分空隙。
    • space-evenly:所有间隙(子元素之间及首尾)均等。
  • align-items:定义子元素在垂直方向上的对齐方式。
    • stretch(默认填满)、flex-start(顶端对齐)flex-end(底部对齐)center、baseline(基线对齐)

 2、子级属性

  • order设置子元素排列顺序,值越小越靠前。
  • flex(简写属性):
    • flex-grow:拉伸因子 根据每个属性的拉伸因子采用求和均分按比例将空余i部分分配给每个元素
    • flex-shrink:压缩因子 ,前提是子元素和>父级元素宽/高,原理与grow一致定义子元素在超出父级宽度时的压缩比例。
    • flex-basis:定义子元素的初始尺寸。

示例:

/* 父容器 .top 样式 */
.top {
    width: 800px; /* 设置父容器宽度 */
    background-color: palegreen; /* 背景颜色为淡绿色 */
    display: flex; /* 启用弹性布局 */
    flex-direction: row; /* 主轴方向为水平方向 */
    justify-content: space-between; /* 子元素在主轴方向均匀分布 */
}

/* 左侧子容器 .left 样式 */
.left {
    flex-grow: 3; /* 拉伸因子,分配更多剩余空间 */
    order: 3; /* 排列顺序较低 */
    background-color: powderblue; /* 背景颜色为淡蓝色 */
    width: 200px; /* 固定宽度 */
    height: 100px; /* 固定高度 */
}

/* 中间子容器 .middle 样式 */
.middle {
    flex-grow: 1; /* 拉伸因子,占用较少的剩余空间 */
    order: 1; /* 排列顺序最高 */
    background-color: yellow; /* 背景颜色为黄色 */
    width: 200px; /* 固定宽度 */
    height: 100px; /* 固定高度 */
}

/* 右侧子容器 .right 样式 */
.right {
    order: 2; /* 排列顺序居中 */
    background-color: orange; /* 背景颜色为橙色 */
    width: 200px; /* 固定宽度 */
    height: 130px; /* 固定高度 */
}

/* 底部容器 .bottom 样式 */
.bottom {
    width: 800px; /* 宽度与父容器一致 */
    height: 200px; /* 固定高度 */
    background-color: rgb(168, 51, 70); /* 背景颜色为深红色 */
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go Map 源码分析(一)

Go语言中的map是通过哈希表实现的&#xff0c;其底层结构和实现机制如下&#xff1a; 一、hash 结构 hmap结构体&#xff1a;是map的头部结构&#xff0c;主要字段及含义如下&#xff1a; count&#xff1a;表示当前哈希表中的元素数量&#xff0c;与len()函数相对应。flags…

【大数据2025】Yarn 总结

分布式资源管理系统讲解总结 一、引言 围绕分布式资源管理系统展开&#xff0c;重点涵盖 Yarn 的简介、原理、资源调度策略以及运维和管理&#xff0c;旨在让学员全面掌握相关知识。Yet Another Resource Negotiator 二、Yarn 诞生背景 在 Hadoop 1.X 中仅有 HDFS 和 MapRe…

【AI日记】25.01.19

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;自由宪章阅读原因&#xff1a;作者哈耶克&#xff0c;诺贝尔经济学奖得主&#xff0c;之前读过他的 《通往奴役…

5.最长回文子串--力扣

给你一个字符串 s&#xff0c;找到 s 中最长的 回文子串。 示例 1&#xff1a; 输入&#xff1a;s “babad” 输出&#xff1a;“bab” 解释&#xff1a;“aba” 同样是符合题意的答案。 示例 2&#xff1a; 输入&#xff1a;s “cbbd” 输出&#xff1a;“bb” 原题如上&…

GCPAAS/DashBoard:完全免费的仪表盘设计,基于Vue+ElementUI+G2Plot+Echarts,开源代码,简单易用!还在等什么呢

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 GCPAAS/DashBoard&#xff0c;一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器&#xff0c;具备仪表盘目录管理…

Linux——线程条件变量(同步)

Linux——多线程的控制-CSDN博客 文章目录 目录 文章目录 前言 一、条件变量是什么&#xff1f; 1、死锁的必要条件 1. 互斥条件&#xff08;Mutual Exclusion&#xff09; 2. 请求和保持条件&#xff08;Hold and Wait&#xff09; 3. 不可剥夺条件&#xff08;No Preemption&…

“AI 辅助决策系统:决策路上的智慧领航员

在当今瞬息万变的时代&#xff0c;无论是企业的运营管理&#xff0c;还是个人在生活中的重大抉择&#xff0c;都需要精准、高效的决策。然而&#xff0c;信息的繁杂和未来的不确定性&#xff0c;常常让决策变得困难重重。这时&#xff0c;AI 辅助决策系统宛如一位智慧的领航员&…

某讯一面,感觉问Redis的难度不是很大

前不久&#xff0c;有位朋友去某讯面试&#xff0c;他说被问到了很多关于 Redis 的问题&#xff0c;比如为什么用 Redis 作为 MySQL 的缓存&#xff1f;Redis 中大量 key 集中过期怎么办&#xff1f;如何保证缓存和数据库数据的一致性&#xff1f;我将它们整理出来&#xff0c;…

DDD - 微服务落地的技术实践

文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…

闪豆多平台视频批量下载器

1. 视频链接获取与解析 首先&#xff0c;在哔哩哔哩网页中随意点击一个视频&#xff0c;比如你最近迷上了一个UP主的美食制作视频&#xff0c;想要下载下来慢慢学。点击视频后&#xff0c;复制视频页面的链接。复制完成后&#xff0c;不要急着关闭浏览器&#xff0c;因为接下来…

【STM32-学习笔记-14-】FLASH闪存

文章目录 FALSH闪存一、FLASH简介二、FLASH基本结构三、FLASH解锁四、使用指针访问存储器五、FLASH擦除以及编程流程Ⅰ、程序存储器全擦除1. 读取FLASH_CR的LOCK位2. 检查LOCK位是否为13. 设置FLASH_CR的MER 1和STRT 1&#xff08;如果LOCK位0&#xff09;4. 检查FLASH_SR的B…

微信消息群发(定时群发)-UI自动化产品(基于.Net平台+C#)

整理 | 小耕家的喵大仙 出品 | CSDN&#xff08;ID&#xff1a;lichao19897314&#xff09; 关联源码及工具下载https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/…

FPGA产业全景扫描

随着芯片种类日益丰富、功能日益强大&#xff0c;人们不禁好奇&#xff1a;一块FPGA是如何从最初的概念一步步呈现在我们面前的&#xff1f; FPGA设计、FPGA原型验证/仿真、FPGA板级调试和应用&#xff0c;是FPGA从概念到应用的必经之路。本文将围绕这几个核心环节&#xff0c…

SW - 钣金零件保存成DWG时,需要将折弯线去掉

文章目录 SW - 钣金零件保存成DWG时&#xff0c;需要将折弯线去掉概述笔记备注END SW - 钣金零件保存成DWG时&#xff0c;需要将折弯线去掉 概述 如果做需要弯折的切割件&#xff0c;最好做成钣金零件。 最近做了几个小钣金(将钣金展开&#xff0c;建立新草图&#xff0c;在2…

git系列之revert回滚

1. Git 使用cherry-pick“摘樱桃” step 1&#xff1a; 本地切到远程分支&#xff0c;对齐要对齐的base分支&#xff0c;举例子 localmap git pull git reset --hard localmap 对应的commit idstep 2&#xff1a; 执行cherry-pick命令 git cherry-pick abc123这样就会将远程…

Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩

一、前言&#xff1a; 这个博客的实战场景&#xff1a;给了一组学生数据&#xff0c;这些数据中&#xff0c;有全市20个社区&#xff0c;1-9年级的学生各科成绩。要求按照各社区统计1-9年级的所有学生各科平均值。下面首先介绍会用到的一些函数&#xff0c;然后再简单说明实战…

【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验

一、背景&#xff1a;当“审判”成为科学 1.1 虚拟场景——法庭审判 想象这样一个场景&#xff1a;有一天&#xff0c;你在王国里担任“首席审判官”。你面前站着一位嫌疑人&#xff0c;有人指控他说“偷了国王珍贵的金冠”。但究竟是他干的&#xff0c;还是他是被冤枉的&…

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章&#xff1a;三层架构和MVC 三层架构&#xff1a; 开发服务器端&#xff0c;一般基于两种形式&#xff0c;一种 C/S 架构程序&#xff0c;一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序&#xff0c;B/S 架构又分成了三层架构三层架构&#xff1a; 表现…

通过idea创建的springmvc工程需要的配置

在创建的spring mvc工程中&#xff0c;使用idea开发之前需要配置文件包括porm.xml、web.xml、springmvc.xml 1、porm.xml 工程以来的spring库&#xff0c;主要包括spring-aop、spring-web、spring-webmvc&#xff0c;示例配置如下&#xff1a; <project xmlns"http:/…

二、点灯基础实验

嵌入式基础实验第一个就是点灯&#xff0c;地位相当于编程界的hello world。 如下为LED原理图&#xff0c;要让相应LED发光&#xff0c;需要给I/O口设置输出引脚&#xff0c;低电平&#xff0c;二极管才会导通 2.1 打开初始工程&#xff0c;编写代码 以下会实现BLINKY常亮&…