首页 > 其他分享 >8. CSS弹性布局基础

8. CSS弹性布局基础

时间:2024-05-29 21:32:36浏览次数:27  
标签:容器 flex 布局 示例 弹性 项目 对齐 CSS

第8章 弹性布局基础

CSS3引入了一个强大的布局模块——弹性布局(Flexbox),它提供了一种更加高效、直观的方式来排列和对齐元素,使复杂布局的实现变得更加简单。本章将详细介绍弹性布局的基本概念和属性,并通过具体示例帮助读者掌握如何使用弹性布局。

8.1 弹性布局简介

弹性布局(Flexbox)是一种一维布局模型,主要用于在一个方向上(水平或垂直)排列子元素。它能够让我们更轻松地创建各种复杂的布局,包括居中对齐、等宽列和灵活的项目排列。

特点
  • 简化对齐和分布:无论容器内的元素有多少,弹性布局都能让它们均匀分布或对齐。
  • 响应式设计:弹性布局能够根据容器的尺寸自动调整子元素的尺寸和排列方式,适合创建响应式设计。
  • 灵活的项目尺寸:子元素可以按比例缩放或扩展,以填满容器的剩余空间。
8.2 弹性容器与弹性项目

弹性布局的核心概念是弹性容器(flex container)和弹性项目(flex item)。

  • 弹性容器:设置了 display: flex;display: inline-flex; 的元素。
  • 弹性项目:弹性容器内的直接子元素。
示例
<div class="flex-container">
    <div class="flex-item">Item 1</div>
    <div class="flex-item">Item 2</div>
    <div class="flex-item">Item 3</div>
</div>
.flex-container {
    display: flex; /* 将容器设为弹性容器 */
}

.flex-item {
    padding: 10px;
    background-color: #f0f0f0;
    margin: 5px;
    border: 1px solid #ccc;
}
8.3 弹性布局的基本属性
弹性容器的属性
  1. flex-direction:定义主轴的方向(弹性项目的排列方向)。

    • 取值:row(默认值),row-reversecolumncolumn-reverse

    • 示例:

      .flex-container {
          flex-direction: row; /* 水平排列,默认值 */
      }
      
  2. flex-wrap:定义弹性项目是否换行。

    • 取值:nowrap(默认值),wrapwrap-reverse

    • 示例:

      .flex-container {
          flex-wrap: wrap; /* 允许弹性项目换行 */
      }
      
  3. justify-content:定义主轴上的对齐方式。

    • 取值:flex-start(默认值),flex-endcenterspace-betweenspace-aroundspace-evenly

    • 示例:

      .flex-container {
          justify-content: space-between; /* 项目在主轴上均匀分布 */
      }
      
  4. align-items:定义交叉轴上的对齐方式。

    • 取值:stretch(默认值),flex-startflex-endcenterbaseline

    • 示例:

      .flex-container {
          align-items: center; /* 项目在交叉轴上居中对齐 */
      }
      
  5. align-content:定义多根轴线的对齐方式。如果只有一根轴线,该属性不起作用。

    • 取值:stretch(默认值),flex-startflex-endcenterspace-betweenspace-around

    • 示例:

      .flex-container {
          align-content: space-around; /* 多根轴线均匀分布 */
      }
      
弹性项目的属性
  1. order:定义项目的排列顺序,数值越小,排列越靠前。

    • 示例:

      .flex-item {
          order: 1; /* 默认值为0 */
      }
      
  2. flex-grow:定义项目的放大比例。

    • 示例:

      .flex-item {
          flex-grow: 1; /* 项目将填满剩余空间 */
      }
      
  3. flex-shrink:定义项目的缩小比例。

    • 示例:

      .flex-item {
          flex-shrink: 1; /* 项目可以缩小以适应容器 */
      }
      
  4. flex-basis:定义在分配多余空间之前,项目的默认大小。

    • 示例:

      .flex-item {
          flex-basis: 100px; /* 项目的初始大小 */
      }
      
  5. align-self:允许单个项目在交叉轴上对齐方式与其他项目不同。

    • 取值:auto(默认值),flex-startflex-endcenterbaselinestretch

    • 示例:

      .flex-item {
          align-self: flex-end; /* 项目在交叉轴上对齐到底部 */
      }
      
8.4 简单弹性布局示例

以下示例展示了如何使用弹性布局属性创建一个简单的响应式布局。

示例1:水平排列项目
<div class="flex-container">
    <div class="flex-item">Item 1</div>
    <div class="flex-item">Item 2</div>
    <div class="flex-item">Item 3</div>
</div>
.flex-container {
    display: flex; /* 将容器设为弹性容器 */
    flex-direction: row; /* 项目水平排列 */
    justify-content: space-around; /* 项目在主轴上均匀分布 */
    align-items: center; /* 项目在交叉轴上居中对齐 */
    height: 200px; /* 容器高度 */
    border: 1px solid #ccc; /* 容器边框 */
}

.flex-item {
    padding: 20px;
    background-color: #f0f0f0;
    border: 1px solid #ccc;
    margin: 5px;
    flex-grow: 1; /* 项目将填满剩余空间 */
}
示例2:垂直排列项目
<div class="flex-container-vertical">
    <div class="flex-item">Item 1</div>
    <div class="flex-item">Item 2</div>
    <div class="flex-item">Item 3</div>
</div>
.flex-container-vertical {
    display: flex; /* 将容器设为弹性容器 */
    flex-direction: column; /* 项目垂直排列 */
    justify-content: center; /* 项目在主轴上居中对齐 */
    align-items: flex-start; /* 项目在交叉轴上靠左对齐 */
    height: 300px; /* 容器高度 */
    border: 1px solid #ccc; /* 容器边框 */
}

.flex-item {
    padding: 20px;
    background-color: #f0f0f0;
    border: 1px solid #ccc;
    margin: 5px;
    flex-grow: 1; /* 项目将填满剩余空间 */
}

标签:容器,flex,布局,示例,弹性,项目,对齐,CSS
From: https://blog.csdn.net/imdeity/article/details/139306153

相关文章

  • 第三方css动画库
    https://animate.style///安装npminstallanimate.css--save//引入import'animate.css';//使用<h1class="animate__animatedanimate__bounce">Ananimatedelement</h1>//样式名称必须加animate__animated之后    ......
  • vite配置自动引入全局scss变量文件
    全局自动引入scss变量文件当定义了全局的scss变量文件并且而其他很多页面都需要使用的时候,都需要显式的使用@import或者@use引用一遍全局scss文件,很是麻烦。使用以下配置这样能有效避免造成大量重复工作,可以在任何scss文件中任意使用全局变量。定义全局scss变量文件配置vi......
  • CSS3 超实用属性:pointer-events (可穿透图层的鼠标事件)
    1、是什么pointer-events 直译为指针事件,该属性指定在什么情况下某个DOM可以成为鼠标事件的target。简而言之,就是允许/禁止DOM的鼠标事件(click事件、hover事件、mouse事件等鼠标事件)2、具体属性分析用法分析:pointer-events:auto|none|visiblePainted|visibleFill|......
  • css通过子元素选择父元素的实现示例
    在CSS中,直接通过子元素选择其父元素并不直接支持,因为CSS的选择器是从上到下(从父元素到子元素)进行选择的,而不是相反。但是,你可以使用其他方法或技术来间接实现这一效果,比如使用JavaScript、jQuery或其他脚本语言,或者通过调整你的HTML结构和CSS样式来达到类似的效果。不过,我可以给......
  • css 特殊进度条
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=......
  • css实现按钮文案垂直水平居中,按钮左侧图标相对文字固定距离展示
    需求css实现按钮文案垂直水平居中,按钮左侧图标相对文字固定距离展示,效果如图: 实现方案一:使用margin-right来实现按钮和左侧图标的间距<divclass="download-btn"><divclass="btn-content":class="{'left-icon':showLeftIcon}"><div......
  • css画箭头,三角形
    箭头.arrow{border:solidblack;border-width:01px1px0;display:inline-block;padding:4px;}//向上.up{transform:rotate(-135deg);-webkit-transform:rotate(-135deg);}//向下.down{transform:rotate(45deg);-webkit-transform:r......
  • css中px和em的区别
    px和em是用来表示元素大小的单位,在CSS中经常被使用。px(pixel)是像素单位,表示屏幕上的一个点。它是一个绝对单位,表示一个固定的大小。例如,一个宽度为200px的元素将始终显示为200个像素宽。em是相对单位,根据继承它的父元素的字体大小来计算实际的大小。默认情况下......
  • css04 CSS Combinators
    https://www.w3schools.com/css/css_combinators.aspCSSCombinatorsAcombinatorissomethingthatexplainstherelationshipbetweentheselectors.ACSSselectorcancontainmorethanonesimpleselector.Betweenthesimpleselectors,wecanincludeaco......
  • css05 CSS Pseudo-classes
    https://www.w3schools.com/css/css_pseudo_classes.asp WhatarePseudo-classes?Apseudo-classisusedtodefineaspecialstateofanelement.Forexample,itcanbeusedto:StyleanelementwhenausermousesoveritStylevisitedandunvisitedlinks......