CSS弹性布局

CSS弹性布局

一、概念

​ 弹性盒子是 CSS3 的一种新的布局模式。

​ CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。

​ 引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间

​ 弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

​ 弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

弹性容器内包含了一个或多个弹性子元素。

注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

#box1{width: 800px;height: 600px;background-color: gray;display: flex;              /*将div设置为弹性容器*/		   	}

二、弹性容器属性

2.1 flex-direction属性

顺序指定了弹性子元素在父容器中的位置。

语法:

flex-direction: row | row-reverse | column | column-reverse
  • row:横向从左到右排列(左对齐),默认的排列方式。
  • row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。
  • column:纵向排列。
  • column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。

示例1:子元素水平排列

#box1{width: 800px;height: 600px;background-color: gray;display: flex;              /*将div设置为弹性盒模型对象*/	flex-direction: row;        /*默认,子元素水平排列*/}

在这里插入图片描述

示例2:子元素水平反向排列

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	flex-direction: row-reverse;        /*子元素水平反向排列*/}

在这里插入图片描述

示例3:子元素纵向排列

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	flex-direction: column;              /*子元素纵向排列*/}

在这里插入图片描述

示例4:子元素纵向反向排列

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	flex-direction: column-reverse;     /*子元素纵向反向排列*/}

在这里插入图片描述

2.2 justify-content 属性

应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。

语法:

justify-content: flex-start | flex-end | center | space-between | space-around
  • flex-start:

    弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的main-start外边距边线被放置在该行的main-start边线,而后续弹性项依次平齐摆放。

  • flex-end:

    弹性项目向行尾紧挨着填充。第一个弹性项的main-end外边距边线被放置在该行的main-end边线,而后续弹性项依次平齐摆放。

  • center:

    弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。

  • space-between:

    弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。否则,第1个弹性项的外边距和行的main-start边线对齐,而最后1个弹性项的外边距和行的main-end边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。

  • space-around:

    弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。

示例1:头部对齐

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	justify-content: flex-start;        /*头部对齐*/}

在这里插入图片描述

示例2:尾部对齐

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	justify-content: flex-end;          /*尾部对齐*/}

在这里插入图片描述

示例3:居中对齐

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	justify-content: center;            /*居中对齐*/}

在这里插入图片描述

示例4:平均分布1

	#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	justify-content: space-between;     /*平均分布1*/}

在这里插入图片描述

示例4:平均分布2

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	justify-content: space-around;      /*平均分布2*/}

在这里插入图片描述

2.3 align-items 属性

设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。

语法:

align-items: flex-start | flex-end | center | baseline | stretch
  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照’min/max-width/height’属性的限制。 默认值,如果弹性子元素没有高度或高度为auto,将占满整个容器的高度

示例1:侧轴(纵轴)方向头部对齐

	#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	align-items: flex-start;            /*侧轴(纵轴)方向头部对齐*/}

在这里插入图片描述

示例2:侧轴(纵轴)方向尾部对齐

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	align-items: flex-end;              /*侧轴(纵轴)方向尾部对齐*/}

在这里插入图片描述

示例3:侧轴(纵轴)方向居中对齐

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                      /*将div设置为弹性盒模型对象*/	align-items: center;                /*侧轴(纵轴)方向居中对齐*/}

在这里插入图片描述

示例4:按文本的基线对齐

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                        /*将div设置为弹性盒模型对象*/				align-items: baseline;                /*侧轴(纵轴)方向按子元素内文本基线对齐*/ }

在这里插入图片描述

示例5:stretch(默认值)

#box1{width: 800px;height: 600px;background-color: gray;display: flex;             /*将div设置为弹性盒模型对象*/				align-items: stretch;      /*默认值,如果弹性子元素没有高度或高度为auto,将占满整个容器的高度*/ }

在这里插入图片描述

2.4 flex-wrap 属性

用于指定弹性盒子的子元素换行方式。

语法:

flex-flow:  nowrap|wrap| wrap-reverse
  • nowrap - 默认, 弹性容器为单行。该情况下弹性子项可能会溢出容器。
  • wrap - 弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行
  • wrap-reverse -反转 wrap 排列。

示例1:不换行,子元素的宽度会被压缩

#box1{width: 800px;height: 600px;background-color: gray;display: flex;             /*将div设置为弹性盒模型对象*/				flex-wrap: nowrap;         /*默认值,不换行*/ }

在这里插入图片描述

示例2:换行

#box1{width: 800px;height: 600px;background-color: gray;display: flex;             /*将div设置为弹性盒模型对象*/				flex-wrap: wrap;           /*换行*/ }

在这里插入图片描述

示例3:反转 wrap 排列

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				flex-wrap: wrap-reverse;           /*反转 wrap 排列*/ }

在这里插入图片描述

2.5 align-content 属性

用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。

align-content: flex-start | flex-end | center | space-between | space-around | stretch
  • stretch - 默认。各行将会伸展以占用剩余的空间。
  • flex-start - 各行向弹性盒容器的起始位置堆叠。
  • flex-end - 各行向弹性盒容器的结束位置堆叠。
  • center -各行向弹性盒容器的中间位置堆叠。
  • space-between -各行在弹性盒容器中平均分布。
  • space-around - 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。

示例1:各行向弹性盒容器的起始位置堆叠

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				flex-wrap: wrap;align-content: flex-start;         /*各行向弹性盒容器的起始位置堆叠*/}

在这里插入图片描述

示例2:各行向弹性盒容器的结束位置堆叠

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				flex-wrap: wrap;align-content: flex-end;           /*各行向弹性盒容器的结束位置堆叠*/}

在这里插入图片描述

示例3:各行向弹性盒容器的中间位置堆叠

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				flex-wrap: wrap;align-content: center;            /*各行向弹性盒容器的中间位置堆叠*/}

在这里插入图片描述

示例4:各行在弹性盒容器中平均分布1

在这里插入图片描述

示例5:各行在弹性盒容器中平均分布2

#box1{width: 800px;height: 600px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				flex-wrap: wrap;align-content: space-around;       /*各行在弹性盒容器中平均分布*/}

在这里插入图片描述

三、弹性子元素属性

3.1 order属性

子元素排序,用整数值来定义排列顺序,数值小的排在前面。可以为负值。

语法:

order:<integer>

示例:

#box1{width: 800px;height: 200px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				}#box1 div{width:200px;height: 60px; line-height: 60px;text-align: center;			}#item1{background-color: red;order:6                           /*排序顺序,数字越小顺序越靠前*/				}#item2{background-color: yellow;order:5                           /*排序顺序,数字越小顺序越靠前*/		}#item3{background-color: blue;order:4                           /*排序顺序,数字越小顺序越靠前*/			}#item4{background-color: green;order:3                           /*排序顺序,数字越小顺序越靠前*/}#item5{background-color: pink;order:2                           /*排序顺序,数字越小顺序越靠前*/}#item6{background-color: firebrick;order:1                           /*排序顺序,数字越小顺序越靠前*/}</style><body><div id='box1'><div id='item1'>1</div><div id='item2'>2</div><div id='item3'>3</div><div id='item4'>4</div><div id='item5'>5</div><div id='item6'>6</div></div></body>

在这里插入图片描述

3.2 margin属性

设置"margin"值为"auto"值,自动获取弹性容器中剩余的空间。所以设置垂直方向margin值为"auto",可以使弹性子元素在弹性容器的两上轴方向都完全集中。

示例1:margin-right,自动获取弹性容器右侧的空间

#item1{background-color: red;												margin-right: auto;               /*自动获取弹性容器右侧的空间*/}

在这里插入图片描述

示例2:margin-left,自动获取弹性容器左侧的空间

#item1{background-color: red;												margin-left: auto;               /*自动获取弹性容器左侧的空间*/}

在这里插入图片描述

示例3:margin-top:自动获取弹性容器上侧的空间

#item1{background-color: red;												margin-top:auto                       /*自动获取弹性容器上侧的空间*/}

在这里插入图片描述

示例4:margin-bottom:自动获取弹性容器下侧的空间

#item1{background-color: red;												margin-bottom:auto;                       /*自动获取弹性容器下侧的空间*/}

在这里插入图片描述

示例4:margin:自动获取弹性容器上下左右侧的空间

#item1{background-color: red;												margin:auto                       /*自动获取弹性容器上下左右侧的空间*/}

在这里插入图片描述

3.3 align-self属性

用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式。

语法:

align-self: auto | flex-start | flex-end | center | baseline | stretch
  • auto:如果’align-self’的值为’auto’,则其计算值为元素的父元素的’align-items’值,如果其没有父元素,则计算值为’stretch’。
  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与’flex-start’等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为’auto’,则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照’min/max-width/height’属性的限制。

3.4 flex-grow属性

用于设置或检索弹性盒的扩展比率

语法:

flex-grow: number|initial|inherit;

number:一个数字,规定项目将相对于其他灵活的项目进行扩展的量。默认值是 0(扩展)。

#box1{width: 800px;                      /*弹性容器的总宽度*/height: 200px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				}
#box1 div{width:100px;                       /*每个子元素的宽度*/height: 60px; line-height: 60px;text-align: center;			}
#item1{background-color: red;												flex-grow: 2;    /*扩展的空间为剩余空间*1/5,即(800-100*3)*2/5=200,实际宽度为100+200=300px   */}
#item2{background-color: yellow;flex-grow: 2;    /*扩展的空间为剩余空间*1/5,即(800-100*3)*2/5=200,实际宽度为100+200=300px  */			}
#item3{background-color: blue;flex-grow: 1;    /*扩展的空间为剩余空间*1/5,即(800-100*3)*1/5=100,实际宽度为100+100=200px  */     		}

在这里插入图片描述

3.5 flex-shrink属性

用于设置或检索弹性盒的收缩比率。。

**注意:**如果元素不是弹性盒对象的元素,则 flex-shrink 属性不起作用。

语法:

flex-shrink: number|initial|inherit;

number:一个数字,规定项目将相对于其他灵活的项目进行收缩的量。默认值是 0

示例:

#box1{width: 800px;                      /*弹性容器的总宽度*/height: 200px;background-color: gray;display: flex;                     /*将div设置为弹性盒模型对象*/				}#box1 div{width:300px;                       /*每个子元素的宽度*/height: 60px; line-height: 60px;text-align: center;			}#item1{background-color: red;												flex-shrink: 2;    /*收缩的空间为所有子元素空间之和减弹性容器空间,即300*3-800=100px,该子元素收缩空间为100*2/5=40px,该子元素实际宽度为300-40=260px*/}#item2{background-color: yellow;flex-shrink: 2;    /*收缩的空间为所有子元素空间之和减弹性容器空间,即300*3-800=100px,该子元素收缩空间为100*2/5=40px,该子元素实际宽度为300-40=260px*/}			#item3{background-color: blue;flex-shrink: 1;    /*收缩的空间为所有子元素空间之和减弹性容器空间,即300*3-800=100px,该子元素收缩空间为100*1/5=20px,该子元素实际宽度为300-20=280px*/}     		

在这里插入图片描述

3.6 flex属性

用于指定弹性子元素如何分配空间。

语法:

flex:none | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]
  • none:none关键字的计算值为: 0 0 auto
  • [ flex-grow ]:定义弹性盒子元素的扩展比率。
  • [ flex-shrink ]:定义弹性盒子元素的收缩比率。
  • [ flex-basis ]:定义弹性盒子元素的默认基准值。

示例1:flex-grow

#item1{background-color: red;												flex:2                         /*占2/5的空间*/          }
#item2{background-color: yellow;flex:2                        /*占1/5的空间*/    		}
#item3{background-color: blue;flex:1                        /*占1/5的空间*/         		}

在这里插入图片描述

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

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

相关文章

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏17(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言制作木板UI直接复制和工具一样的即可检查背包是否有指定数量的空插槽 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇…

实战过程记录:濒临宕机的业务系统仅优化1个SQL即恢复!!

记录一次真实Oracle系统SQL问题的案例 问题现像&#xff1a; 某客户业务的应用人员找到我&#xff0c;说是重要的业务系统出问题了&#xff0c;今天早上开始就很卡&#xff0c;现在卡到几乎无法工作。 问题的现象如下&#xff1a; 前台窗口查询啥都半天没有返回结果&#xff…

极致日志记录:Pino 为你带来的性能与便利性

微信搜索“好朋友乐平”关注公众号。 1. Pino Pino 是一个非常快速且简洁的 Node.js 日志库&#xff0c;其设计宗旨在于提供最小的开销以及高性能的日志记录功能。Pino 项目受到 Bunyan 日志库的启发&#xff0c;但其在性能上做了大量优化&#xff0c;因此在处理大量日志时&am…

【Linux】调试工具gdb:初识

前言 今天来记录并学习一下gdb的使用 背景 程序的发布方式有两种&#xff0c;debug模式和release模式Linux gcc/g出来的二进制程序&#xff0c;默认是release模式要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项 使用 gdb FileName 退出&#x…

效果炸裂!OpenAI首个视频生成模型发布,1分钟流畅高清,网友:整个行业RIP

刚刚&#xff0c;奥特曼发布OpenAI首个视频生成模型Sora。 完美继承DALLE 3的画质和遵循指令能力&#xff0c;能生成长达1分钟的高清视频。 AI想象中的龙年春节&#xff0c;红旗招展人山人海。 有紧跟舞龙队伍抬头好奇官网的儿童&#xff0c;还有不少人掏出手机边跟边拍&…

java 调用智谱ai 大模型的完整步骤(国内的 AI 大模型 对话)

要使用java 调用智谱AI的API进行异步调用&#xff0c;您需要遵循以下步骤&#xff1a; 1. **获取API密钥**&#xff1a; - 您需要从智谱AI平台获取一个API密钥&#xff08;API Key&#xff09;&#xff0c;这个密钥将用于所有API请求的身份验证。 2. **SDK源…

【MySQL/Redis】如何实现缓存一致

目录 不实用的方案 1. 先写 MySQL , 再写 Redis 2. 先写 Redis &#xff0c; 再写MySQL 3. 先删 Redis&#xff0c;再写 MySQL 实用的方案 1. 先删 Redis&#xff0c;再写 MySQL, 再删 Redis 2. 先写 MySQL , 再删 Redis 3. 先写MySQL&#xff0c;通过BinLog&#xff0…

ClickHouse--10--临时表、视图、向表中导入导出数据

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.临时表1.1 特征1.2 创建一个临时表 2.视图2.1 普通视图2.2 物化视图 3.向表中导入导出数据3.1 案例 1.临时表 1.1 特征 ClickHouse 支持临时表&#xff0c;临时表…

智能汽车行业产业研究报告:毫米波雷达优势明显,核心壁垒是芯片、天线阵列、波形设计

今天分享的是智能汽车系列深度研究报告&#xff1a;《智能汽车行业产业研究报告&#xff1a;毫米波雷达优势明显&#xff0c;核心壁垒是芯片、天线阵列、波形设计》。 &#xff08;报告出品方&#xff1a;国泰君安证券&#xff09; 报告共计&#xff1a;67页 毫米波雷达被广泛…

Flume(二)【Flume 进阶使用】

前言 学数仓的时候发现 flume 落了一点&#xff0c;赶紧补齐。 1、Flume 事务 Source 在往 Channel 发送数据之前会开启一个 Put 事务&#xff1a; doPut&#xff1a;将批量数据写入临时缓冲区 putList&#xff08;当 source 中的数据达到 batchsize 或者 超过特定的时间就会…

【前端web入门第六天】01 CSS浮动

⭐️第六天目标 解决布局问题如多个div标签在同一行的问题 简单来说,就是可以两个标签,一个在左边,另一个在右边. &#x1f449;相关知识 标准流浮动flex布局❗️ ❗️ ❗️ 标准流是先导,浮动和flex布局都可以解决问题,但是浮动在目标开发领域较为落后,主流的解决办法是flex…

OpenCV Mat实例详解 一

OpenCV中的Mat是一个类&#xff0c;它用存储图像信息。由两部分数据组成&#xff1a;矩阵头和像素值矩阵。矩阵头包含矩阵尺寸、存储方法、存储地址等信息&#xff0c;而像素值矩阵则存储实际的像素值数据。 Mat类在OpenCV中有十分重要的作用&#xff0c;图像信息的载入、保存、…

UI设计常见风格(1):一文读懂九个,教你如何辨识。

Hello&#xff0c;我是大千UI工场&#xff0c;设计风格是我们新开辟的栏目&#xff0c;上次讲了毛玻璃风格、辨识方法、应用场景、运用方法等&#xff0c;很受大家欢迎&#xff0c;本次带来常见的风格及辨识&#xff0c;让大家有个总览&#xff0c;以后会逐个讲解的&#xff0c…

【Java】零基础蓝桥杯算法学习——动态规划例题

例题&#xff1a;2023年第十四届蓝桥杯Java软件开发B组E题 蜗牛 参考解答&#xff1a; 参考代码示例&#xff1a; import java.util.Scanner; public class Main {static int N 100010;static int[] arr new int[N];static int[] a new int[N]; //传送带的起始坐标static …

【实战】一、Jest 前端自动化测试框架基础入门(一) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(一)

文章目录 一、前端要学的测试课1.前端要学的测试2.前端工程化的一部分3.前端自动化测试的例子4.前端为什么需要自动化测试&#xff1f;5.课程涵盖内容6.前置技能7.学习收获 二、Jest 前端自动化测试框架基础入门1. 自动化测试背景及原理前端自动化测试产生的背景及原理 2.前端自…

开什么店最稳定轻松?适合一个人开的实体店推荐

在创业的道路上&#xff0c;很多人都希望找到一种稳定轻松的开店方式。 作为一名资深的鲜奶吧创业者&#xff0c;我将分享我的经验和见解&#xff0c;希望能给那些想开实体店的朋友们一些启示&#xff01;&#xff01; 我开鲜奶吧已经有 5 年时间了&#xff0c;目前经营的是鲜…

MIT-BEVFusion系列八--onnx导出1 综述及相机网络导出

目录 综述export-camera.py加载模型加载数据生成需要导出成 onnx 的模块Backbone 模块VTransform 模块 生成 onnx使用 pytorch 原生的伪量化计算方法导出 camera.backbone.onnx导出 camera.vtransform.onnx 综述 bevfusion的各个部分的实现有着鲜明的特点&#xff0c;并且相互…

Harris关键点检测以及SAC-IA粗配准

一、Harris关键点检测 C #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/common/io.h> #include <pcl/keypoints/harris_3d.h> #include <pcl/visualization/pcl_visualizer.h> #include …

摸索设计模式的魅力:从策略模式看软件设计的智慧-灵活应对变化的艺术

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、案例场景1.1 一坨坨代码实现1.2 存在的问题 二、使用策略模式解决问题2.1 使用策略模式重构代码2.2 克服了问题 三、模式讲解3.1 结构图及说明3.2 实现步骤和注意事项3.3 适用场景 四、优势和局限性4.1 优势4.2 局…

JSP原理简述

JSP动态网页技术&#xff0c;可以定义html&#xff0c;css&#xff0c;js等静态内容&#xff0c;还可以定义java代码等动态内容。 注意导入坐标时&#xff0c;JSP的scope标签是provided&#xff0c;和servlet一样&#xff0c;否则会报错。 JSP本质上就是一个Servlet&#xff0c…