CSS3:flex&box-sizing

简介: 本文介绍了CSS中的Flex布局及其相关属性,如`flex-direction`、`flex-wrap`、`justify-content`等,并通过代码示例展示了如何使用这些属性来控制容器内的项目排列方式。同时,还讲解了`align-items`属性用于定义子元素在交叉轴上的对齐方式,以及`box-sizing`属性的不同取值对元素尺寸计算的影响。

前言

在现代网页设计中,CSS Flexbox 布局为开发者提供了一种强大而灵活的方式来控制元素的排列和对齐。Flexbox 特别适合用于构建响应式布局,使得元素在不同屏幕尺寸下都能保持良好的显示效果。本文将深入探讨 Flexbox 的基本概念以及相关属性,包括 flex-direction、flex-wrap、justify-content 等。通过具体的代码示例,您将学习如何利用这些属性来精确控制容器内项目的排列方式。

flex布局

<template>
  <div class="container">
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <!--   order 越小 排在 越前面  默认值为1 -->
    <div class="box" style="order: -1;">4</div>
  </div>
</template>
<script>
export default {
  name: 'app',
  data() {
    return {
    }
  }
}
</script>
<style scoped>
.container {
  margin-left: 100px;
  margin-top: 200px;
  width: 600px;
  border: 1px solid black;
  height: 300px;
  display: flex;
  /*   flex-direction   和 flex-wrap 的合并 复合属性 */
  /* flex-flow: column wrap; */
  /* align-content  和align-items 的区别 
    align-items  适用于 单行  有上对齐 居中 和下对齐
    align-conten 可以设置很多属性 eg: space-between
*/
  /*  这个设置 的是 整个单行  */
  /* align-items: flex-end; */
  /* justify-content: ; */
  /* justify-content: space-around; */
  /* 放在末尾的位置 */
  /* justify-content: flex-end; */
  /*  满了(位置不够)之后会换行 设置nowarp 则 不换行 */
  /* flex-wrap: wrap; */
  /*  反转显示方向 */
  /* flex-direction: row-reverse; */
  /* 超出屏幕滚动 */
  /* overflow: scroll;
  &::-webkit-scrollbar {
    display: none;
  } */
  .box {
    /*   放在子类使用  设置的值 为上中下*/
    /* align-self: flex-end; */
    width: 100px;
    height: 100px;
    background-color: aqua;
  }
}
</style>


flex2

nowrap   默认值  不 换行
.func_btn {
    margin-top: 20px;
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
}
flex-direction
flex-wrap
flex-flow
justify-content    // 左右
align-items
align-content
align-items(定义项目在竖直方向上对齐方式)  // 上下
//父级
.xya_strip{
  justify-content: space-between;
  padding: 0rpx 30rpx;
}
//子级
.xya_strip view{
  width: 100% !important;
}
      .status-boxes{
        display: flex;
        justify-content: space-between;
      }
/* 对齐方式 */
justify-content: center;     /* 居中排列 */
justify-content: start;      /* 从行首开始排列 */
justify-content: end;        /* 从行尾开始排列 */
justify-content: flex-start; /* 从行首起始位置开始排列 */
justify-content: flex-end;   /* 从行尾位置开始排列 */
justify-content: left;       /* 一个挨一个在对齐容器得左边缘 */
justify-content: right;      /* 元素以容器右边缘为基准,一个挨着一个对齐, */
/* 基线对齐 */
justify-content: baseline;
justify-content: first baseline;
justify-content: last baseline;
/* 分配弹性元素方式 */
justify-content: space-between;  /* 均匀排列每个元素
                                   首个元素放置于起点,末尾元素放置于终点 */
justify-content: space-around;  /* 均匀排列每个元素
                                   每个元素周围分配相同的空间 */
justify-content: space-evenly;  /* 均匀排列每个元素
                                   每个元素之间的间隔相等 */
justify-content: stretch;       /* 均匀排列每个元素
                                   'auto'-sized 的元素会被拉伸以适应容器的大小 */
/* 溢出对齐方式 */
justify-content: safe center;
justify-content: unsafe center;
/* 全局值 */
justify-content: inherit;
justify-content: initial;
justify-content: unset;
<template>
  <div id="app">
    <!-- <router-view /> -->
    <div class="main">
      <div class="box1" style="background:red;height:50px;width:50px;">
        box1
      </div>
      <div class="box2" style="background:blue;height:50px;width:50px;">
        box1
      </div>
      <div class="box3" style="background:green;height:50px;width:50px;">
        box1
      </div>
      <div class="box4" style="background:yellow;height:50px;width:50px;">
        box1
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: "App"
};
</script>
<style scope lang="scss">
.main {
  width: 190px;
  //  如果给出高度 溢出去的 会 和第一行有间距
  height: 210px;
  border: 1px solid black;
  display: flex;
  flex-wrap: wrap;
  flex-shrink: 0;
}
html,
body,
#app {
  margin: 0;
  padding: 0;
  height: 100%;
}
</style>


align-items

定义方块放的位置

<style>
        .box00 {
            height: 400px;
            width: 400px;
            border: 4px solid #000;
            display: flex;
            /* align-items: center; */
            align-items: end;
        }
        .box1 {
            height: 100px;
            width: 100px;
            border: 1px solid #000;
            flex: 1;
        }
        .box2 {
            height: 100px;
            width: 100px;
            border: 1px solid #000;
            flex: 1;
        }
    </style>
</head>
<body>
    <div class="box00">
        <div class="box1">box1</div>
        <div class="box2">box2</div>
    </div>
</body>



box-sizing

默认值,标准盒子模型。[width](https://developer.mozilla.org/zh-CN/docs/Web/CSS/width)[height](https://developer.mozilla.org/zh-CN/docs/Web/CSS/height) 只包括内容的宽和高,不包括边框(border),内边距(padding),外边距(margin)。注意:内边距、边框和外边距都在这个盒子的外部。比如说, 在浏览器中的渲染的实际宽度将是 370px。.box {width: 350px; border: 10px solid black;}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 160px;
            height: 80px;
            padding: 20px;
            border: 8px solid red;
            background: yellow;
        }
        .content-box {
            /* 会向外面借大小  默认 */
            box-sizing: content-box;
            /* Total width: 160px + (2 * 20px) + (2 * 8px) = 216px
     Total height: 80px + (2 * 20px) + (2 * 8px) = 136px
     Content box width: 160px
     Content box height: 80px */
        }
        .border-box {
            /*  规定了 大小 就不会改变了  宽高 固定  只会 向里面 借 大小 */
            box-sizing: border-box;
            /* Total width: 160px
     Total height: 80px
     Content box width: 160px - (2 * 20px) - (2 * 8px) = 104px
     Content box height: 80px - (2 * 20px) - (2 * 8px) = 24px */
        }
    </style>
</head>
<body>
    <div class="content-box">Content box</div>
    <br>
    <div class="border-box">Border box</div>
</body>
</html>



相关文章
|
6月前
|
前端开发 算法 Java
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
227 2
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
455 1
移动端的打开方式,打开F12之后,就可以看到手机样式设计,移动端的初始化使用normalize.css代码库录到,box-sizing: border-box; 定宽度为多少就是多少,代码库,移动端
移动端的打开方式,打开F12之后,就可以看到手机样式设计,移动端的初始化使用normalize.css代码库录到,box-sizing: border-box; 定宽度为多少就是多少,代码库,移动端
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
数据可视化 前端开发 搜索推荐
FLEX组件可视化设计器CSS3代码生成器
FLEX组件可视化设计器CSS3代码生成器
259 4
|
前端开发 容器
你不知道的css——1. 外在盒子、内在盒子,宽度和高度的计算,box-sizing属性
你不知道的css——1. 外在盒子、内在盒子,宽度和高度的计算,box-sizing属性
257 3
你不知道的css——1. 外在盒子、内在盒子,宽度和高度的计算,box-sizing属性
|
编解码 前端开发 容器
CSS Flex布局实战案例:构建响应式卡片组件
【7月更文挑战第17天】通过上述步骤,我们成功地使用CSS Flex布局构建了一个响应式的卡片组件。Flexbox不仅简化了布局代码,还让我们能够轻松实现复杂的布局效果,如响应式设计。在实战中,掌握Flexbox将大大提高前端开发的效率和网页布局的质量。希望这个案例能够帮助你更好地理解和应用Flexbox布局。
|
前端开发
css的flex布局中使用margin:auto智能分配剩余空间
css的flex布局中使用margin:auto智能分配剩余空间
182 1
|
前端开发
css flex布局两个元素水平居中垂直居中
css flex布局两个元素水平居中垂直居中
442 1
|
编解码 前端开发 C++
CSS【详解】布局 display ( 含 flex 布局,grid 布局,table 布局,float 布局,响应式布局 等)
CSS【详解】布局 display ( 含 flex 布局,grid 布局,table 布局,float 布局,响应式布局 等)
1088 0

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    456
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    354
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    338
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    227
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    455
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    627
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    945
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    239
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    784
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    423