欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 前端【3】--CSS布局,CSS实现横向布局,盒子模型

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

2025/2/5 16:54:04 来源:https://blog.csdn.net/qq_73704268/article/details/145189861  浏览:    关键词:前端【3】--CSS布局,CSS实现横向布局,盒子模型

盒子分类

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); /* 背景颜色为深红色 */
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com