Flex布局

  1. Flex布局简介
        Felx在项目开发时,运用起来对于页面的布局是很方便的,比如较经典的布局中盒子居中,就可以用flex布局进行快速解决。
        如下面的简单操作,只需要在父级盒子中添加flex布局和设置jusitify-content和align-items值为center即可,快速进行盒装水平和垂直居中。
<div id="item">
	<div id="children">
		I am inner Div
	</div>
</div>
#item {
	width: 200px;
	height: 200px;
	background-color: red;
	display: flex;
	justify-content: center;
	align-items: center;
}
#children {
	width: 100px;
	height: 100px;
	background-color: cyan;
}

效果如下图所示
    值得注意的是,当盒设置flex布局时,子元素的float、clear和vertical-align属性将失效。
    flex布局中包含容器属性和项目属性,其中容器属性设置在父级盒子中,项目属性作用在子级盒子中。
    ①容器属性包含:

  • flex-direction:决定项目的排列方向。属性值为row(水平) | row-reverse(水平的反方向) | column(垂直方向) | column-reverse(垂直的反方向)
  • flex-wrap:决定项目如何换行。属性值为nowrap(不换行) | wrap(向下换行) | wrap-reverse(往上换行)
  • flex-flow:以上两个属性的简写。默认值为 row nowrap
  • justify-content:项目在主轴上的对齐方式。flex-start | flex-end | content | space-between(贴边两边对齐) | space-around(不贴边两边对齐)
  • align-items:项目在交叉轴上的对齐方式。felx-start | flex-end | center | baseline | stretch
  • align-centent:多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。flex-start | center | stretch | space-between | space-around

    ②项目属性:

  • order:定义项目的排列顺序,数值越小,排列越靠前,默认为0 。属性值是 整形integer。
  • flex-grow:定义项目的放大比列,默认为0,即如果存在剩余空间,也不放大。属性值是number类型。
  • flex-shrink:定义香满园的缩小比例,默认为1 。即空间不足,该项目将会缩小。属性值是number类型,负值无效。注意:当值为0,其他为1,则值为0的不缩小。
  • flex-basis:在分配多余空间前,项目占据的主轴空间默认值为auto,即项目本来大小。属性值可为px值。
  • align-self:允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。属性值suto | flex-start | flex-end | center | baseline | stretch。
  • flex:简写模式 none | [ | ] 。快捷值auto(1 1 auto)、none(0 0 auto)
  1. flex 布局的几个问题
    2.1 flex在兼容上的问题
        Flex布局除了chrome浏览器外,其他手机浏览器都没有兼容,所以需要进行兼容处理。
.box{
    display: -webkit-box;/*布局方式 相当于display:flex*/
  -webkit-box-align: center;/*box的对齐方式 align-items:center;*/
}
.box2{
    display: -webkit-box;
    -webkit-box-orient: vertical;/*排列方式flex-direction: column*/
  -webkit-box-pack: justify;/*box2的纵向排列方式 justify-content: space-between;*/
    -webkit-box-flex:1; /*box2的伸缩比例 flex:auto;*/
}

    Box布局在W3C中已经列入标准,加上前缀的话,会被各个浏览器支持。
    通过测试,在chrome、安卓、ios上样式和排列都是正常的。

### 使用CSS Flex布局实现响应式设计 Flex布局的核心在于其弹性和适应能力,能够轻松应对不同设备和窗口尺寸的变化。以下是具体实现方式: #### 1. 创建Flex容器 要启用Flex布局,需将父级元素的`display`属性设置为`flex`或`inline-flex`。这会使得该容器内的所有直接子元素成为弹性项目(flex items)。 ```css .container { display: flex; } ``` 此操作定义了一个基本的Flex容器[^1]。 #### 2. 设置主轴与交叉轴的行为 通过调整`flex-direction`属性,可以改变主轴的方向,默认情况下为主水平方向(row)。如果希望垂直排列,则可将其设为`column`。 ```css .container { display: flex; flex-direction: column; /* 或者 row */ } ``` #### 3. 控制换行行为 当内容超出容器宽度时,可以通过`flex-wrap`属性决定是否允许换行以及如何换行。 ```css .container { display: flex; flex-wrap: wrap; /* 允许换行 */ } ``` 这样,在较小屏幕上,项目将会自动换到下一行显示[^2]。 #### 4. 自动居中对齐 利用`justify-content`控制沿主轴方向上的对齐方式;而`align-items`则负责管理交叉轴上的位置关系。例如让所有的子项都位于中心区域: ```css .centered-boxes { display: flex; justify-content: center; /* 主轴居中 */ align-items: center; /* 交叉轴居中 */ } ``` 对于单个项目单独处理的情况,还可以借助`margin:auto;`达到同样的效果[^3]。 #### 5. 结合@media查询优化特定断点下的表现 为了进一步增强页面在各种分辨率下的可用性,应该引入媒体查询来微调某些关键参数比如字体大小或者间距等。下面的例子展示了怎样根据不同屏幕尺寸动态修改`.item`类别的宽度比例。 ```css /* 默认状态 */ .item { flex-basis: calc(25% - 20px); } /* 针对小型移动设备 */ @media only screen and (max-width: 768px){ .item{ flex-basis:calc(50%-20px); } } /* 对于平板电脑之类的中间级别终端 */ @media only screen and (min-width: 769px)and(max-width: 1024px){ .item{ flex-basis:calc(33.33%-20px); } } ``` 以上代码片段说明了如何基于不同的视窗宽度应用差异化的样式规则[^5]。 综上所述,通过合理配置这些核心属性并配合媒体查询技术,就可以构建既美观又实用的响应式界面设计方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值