-webkit-box —— flex布局的前世(流体布局)

本文深入解析Flex布局的基础概念,包括容器、项目、主轴与侧轴的定义,以及如何通过属性控制布局方向、排列方式和空间分配。同时,对比了新旧版本属性的区别,帮助读者掌握Flex布局的精髓。

本来想找点牛掰的话开个头的,奈何文采有限,思来想去都不知道该怎么说。。。直接上正文吧(叹气)。
Flex(Flexible Box,弹性布局)基础1.容器:flex布局元素称之为flex容器,简称容器。2.项目:Flex容器里的成员统称为Flex项目,简称项目。 3.主轴、侧轴:默认情况下主轴为x轴,侧轴为y轴。(注:项目永远排列在主轴的正方向上)4.版本1) -webkit-box-: 老版本,需要关注,移动端内核低,更新速度慢 2)-webkit-flex-/flex: 最终标准老版本(-webkit-box):新版本(-webkit-flex- / flex):1.容器1.容器的布局方向 (控制主轴是哪一根,侧轴是另外一根): -webkit-box-orient 2.容器的排列方向(控制主轴的方向):-webkit-box-direction3.富裕空间的管理1.容器1.容器的布局方向 2.容器的排列方向3.富裕空间的管理1. 水平轴/x轴:horizontal2. 垂直轴/y轴:vertical1.正方向(从左往右):normal2.反方向(从右往左):reverse 控制主轴的选取、主轴的方向:flex-direction1. 从左往右的x轴:row2. 从右往左的x轴:row-reverse3. 从上往下的y轴:column4. 从下往上的y轴:column-reverse注意点A.老版本(-webkit-box):通过两个属性,四个属性值控制了“主轴的选取”以及“主轴的方向”新版本(flex):通过一个属性,四个属性值控制了“主轴的选取”以及“主轴的方向”B. 只决定富裕空间的位置,不会分配空间1.主轴富裕空间:-webkit-box-pack2.侧轴富裕空间:-webkit-box-algin1.1.主轴是x轴C.使用此元素:容器必须是block;块元素才能运用此样式,否则无效1.1.1.富裕空间在右边:start1.1.2. 富裕空间在左边:end1.1.3. 富裕空间在两边:center1.1.4. 富裕空间在项目之间:justify1.2.主轴是y轴1.2.1.富裕空间在下边:start1.2.2. 富裕空间在上边:end1.2.3.富裕空间在两边:center1.2.4.富裕空间在项目之间:justify2.1.侧轴是x轴2.2.侧轴是y轴2.1.1.富裕空间在右边:start2.1.2. 富裕空间在左边:end2.1.3. 富裕空间在两边:center2.2.1.富裕空间在下边:start2.2.2. 富裕空间在上边:end2.2.3.富裕空间在两边:center1.主轴富裕空间:justify-content2. 侧轴富裕空间:align-items1.1.在主轴的正方向:flex-start1.2. 在主轴的反方向:flex-end1.3. 在两边(所有项目集中于容器x轴中间):center1.4. 在项目之间:space-between1.5. 在项目两边(每一个项目的两边都有富裕空间):space-around2.1.在侧轴的正方向:flex-start2.2. 在侧轴的反方向:flex-end2.3. 在两边(所有项目集中于容器y轴中间):center2.4. 基线对齐:baseline2.5.等高布局:stretch3. 弹性空间分配:flex-grow3.1. 将主轴上的富裕空间按比例分配到项目上,默认值:0 不可继承3. 弹性空间分配:-webkit-box-flex3.1. 将主轴上的富裕空间按比例分配到项目上,默认值:0 不可继承4.新增 flex-wrap :当容器排列多行/多列时,管理项目在侧轴上的堆砌,以及侧轴的方向。 align-content :多行多列时,富裕空间的管理(将所有行、所有列当做一个总体),只有在flex-warp为warp或者warp-reverse时,改该属性才会生效。 flex-flow :为 flex-direction 和 flex-warp 的简写;控制主轴和侧轴的位置以及方向。1.容器2.项目1. 项目排序:order;越大越往后2. align-self : 单个项目富裕空间管理。3. flex-shrink :收缩因子,按比例收缩,只有当flex-warp为nowarp时,才会生效。D. 项目收缩时,最小不会隐藏项目中的内容当容器中有项目因为内容无法满足时,先 (总容量-特殊项目),然后将剩下的容量,进行比列分配。E.Fire Fox 当中,当-webkit-box-orient:horizontal 时 end 与 start 的顺序相反F.-webkit-box-flex:当设定有 非0 值时,随着容器的变小,项目可能会消失

*** 其实 -webkit-box 的话也可以算是flex布局的前世了,flex也是由 -webkit-box 一步一步的进化,然后抛弃了自身而来的。假期无聊,就认真整理了一下这两个东西,感觉还不错。
*** 整理不易,给个三连吧~ 亲~
*** svg好像出问题了,附上图片在这里插入图片描述

针对这个Vue项目进行响应式布局调整,主要目标是让页面在不同设备上都能自适应显示:<template> <div class="family"> <!-- 顶部导航栏 --> <NavBar /> <!-- 首页内容区域 --> <div class="content-banner"> <hotel-reservation class="hotel-reservation"></hotel-reservation> </div> <div class="banner-text"> <p class="text" :class="{ textEn: $i18n.locale === &#39;en&#39; }">{{ $t(&#39;Family&#39;) }}</p> <!-- <span class="top1" >Wedding Banquet & Conference</span> --> </div> <div class="content-wrapper"> <div class="title-box"> <p class="title-zh" :class="{ textEn: $i18n.locale === &#39;en&#39; }">{{ $t(&#39;trip2&#39;) }}</p> </div> <!-- 一起脉动 --> <div class="content-box"> <div class="text-box"> <p class="content margin-bottom-20" :class="{ textEn: $i18n.locale === &#39;en&#39; }"> {{ $t(&#39;text28&#39;) }} </p> <p class="more":class="{ textEn: $i18n.locale === &#39;en&#39; }">{{ $t(&#39;more7&#39;) }}</p> </div> <div class="img-box"> <img src="@/assets/wedding/cup.png" alt="" /> </div> </div> <!-- 专业策划 --> <div class="content-box"> <div class="img-box"> <img src="@/assets/wedding/table.png" alt="" /> </div> <div class="text-box"> <p class="title-zh text-center" :class="{ textEn: $i18n.locale === &#39;en&#39; }">{{ $t(&#39;Professional&#39;) }}</p> <p class="content margin-top-20" :class="{ textEn: $i18n.locale === &#39;en&#39; }"> {{ $t(&#39;text20&#39;) }} </p> <p class="content"> </p> <p class="more div-center" :class="{ textEn: $i18n.locale === &#39;en&#39; }">{{$t(&#39;more8&#39;)}}</p> </div> </div> <!-- 婚宴进行中 --> <div class="content-box"> <div class="text-box"> <p class="title-zh text-center" :class="{ textEn: $i18n.locale === &#39;en&#39; }">{{ $t(&#39;progress&#39;) }}</p> <p class="content margin-top-20" :class="{ textEn: $i18n.locale === &#39;en&#39; }"> {{ $t(&#39;text21&#39;) }} </p> <p class="more div-center" :class="{ textEn: $i18n.locale === &#39;en&#39; }">{{ $t(&#39;more9&#39;) }}</p> </div> <div class="img-box"> <img src="@/assets/wedding/flower.png" alt="" /> </div> </div> </div> <!-- 底部导航栏 --> <Footer /> </div> </template> <script> export default { name: "family", data() { return { }; }, }; </script> <style scoped> .content-banner { width: 100vw; height: 62rem; margin: 0 auto; background-image: url("@/assets/wedding/flower.png"); background-size: 100% 100%; position: relative; } .hotel-reservation { width: 120rem; height: 12rem; margin: 0 auto; position: relative; top: 45rem; } .content-wrapper { width: 120rem; margin: 0 auto; } .title-box { text-align: center; margin: 6rem 0; } .content-box { display: flex; justify-content: space-between; margin-bottom: 10rem; } .title-en{ font-size: 3rem; font-weight: bold; line-height: 2em; font-family: "Times New Roman", Times, serif; } .textEn { font-family: "Times New Roman", Times, serif !important; } .banner-text { position: absolute; top: 10rem; left: 20%; padding: 1rem 24rem; font-size: 3.2rem; line-height: 2em; font-weight: bold; color: #fff; text-align: center; background-color: rgba(1, 1, 1 1.5); } .text { margin-top: 2rem; font-family: "FangSong"; font-size: 10rem; line-height: 2em; text-align: left; padding: 0 4rem; text-align: justify; -webkit-text-justify: inter-word; text-justify: inter-word; } .top1{ font-family: "Times New Roman", Times, serif; font-size: 6rem; font-weight: bold; } .title-zh { font-size: 4.6rem; /* font-weight: bold; */ color: rgb(202, 171, 98); text-align: left; } .content { width: 60rem; font-size: 2rem; line-height: 2; font-family: "Fangsong"; text-align: justify; } .img-box img { width: 50rem; height: 30rem; } .more { width: 15rem; font-size: 2rem; line-height: 2em; color: rgb(202, 171, 98); text-align: center; cursor: pointer; background-color: rgb(238, 235, 235); } .text-box{ text-align: left; } /* 通用属性 */ /* 文本居中 */ .text-center { text-align: left; } /* div居中 */ .div-center { margin: 5rem auto; text-align: center; } /* 上外边距2rem */ .margin-top-20 { margin-top: 2rem; } /* 下外边距2rem */ .margin-bottom-20 { margin-bottom: 2rem; } /* 页面修改区域 */ /* 响应式调整 */ @media screen and (max-width: 1024px) { .content-banner { height: 70rem; } .hotel-reservation { width: 160rem; top: 54rem; } .content-wrapper { width: 160rem; } .title-en { font-size: 4.8rem; } .title-zh { font-size: 5.6rem; } .content { width: 74rem; font-size: 3rem; } .img-box{ width: 54rem; height: 42rem; } .img-box img { width: 54rem; height: 42rem; } .more { width: 20rem; font-size: 2.4rem; } } @media screen and (max-width: 768px) { .content-banner { height: 82rem; background-image: url("@/assets/wedding/flower.png"); } .hotel-reservation { width: 160rem; top: 66rem; } .content-wrapper { width: 160rem; } .content-box { flex-direction: column; } .img-box { order: 2; } .img-box img { width: 100rem; height: auto; } .text-box { order: 1; } .title-en { font-size: 6rem; } .title-zh { font-size: 6.2rem; } .content { width: 160rem; font-size: 4rem; } .img-box { width: 160rem; height: 90rem; } .more { width: 30rem; font-size: 3.2rem; margin-bottom: 5rem; margin-left: 130rem; } } </style>
最新发布
07-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值