博客列表 >定位及其flex

定位及其flex

手机用户1620888567
手机用户1620888567原创
2023年02月10日 07:51:03419浏览

一、定位 position: relative/absolute

1、position: relative是相对自己原来位置
2、position: relative是相对父标签位置,父标签必须是非staic状态才能起作用,父一般设置为relative 这个不输入坐标是不会产生变化。
例子:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div class="bg" >
  11. S=a
  12. <span class="p">2</span >
  13. <button class="g">关闭</button>
  14. </div>
  15. <style>
  16. /* 初始化 */
  17. * {
  18. margin: 0;
  19. padding: 0;
  20. box-sizing: border-box;
  21. }
  22. body {
  23. border: 0px ;
  24. }
  25. div {
  26. margin:0px auto;
  27. position: relative;
  28. }
  29. .bg {
  30. background:yellow ;
  31. width: 200px;
  32. height: 200px;
  33. text-align: center;
  34. line-height: 200px;
  35. }
  36. /*这个是以父标签div为参考点,所以用absolute,并且需要设置父标签为relative这个种不设置定位坐标不会产生变化,能保持父标签维持原样*/
  37. .g {
  38. position: absolute;
  39. top: 0px;
  40. left: 0px;
  41. }
  42. /*这个相对自己原来位置所以用relative*/
  43. .p{
  44. position: relative;
  45. top: -5px;
  46. }
  47. </style>
  48. </body>
  49. </html>

效果图如下:

二、flex布局 也称为“弹性布局”,只能横排,或者竖排属于一维度布局

1、flex弹性布局优缺点

●操作方便,布局极为简单,移动端应用很广泛
●PC端浏览器支持情况较差
●IE 11或更低版本,不支持或仅部分支持

2、建议:

1.如果是PC端页面布局,我们还是传统布局。
2.如果是移动端或者不考虑兼容性问题的PC端页面布局,我们还是使用flex弹性布局

3、注意事项及其名称

●当我们为父盒子设为 flex布局以后,子元素的float. clear 和vertical align属性将失效。
●伸缩布局 =弹性布局=伸缩盒布局=弹性盒布局=flex布局
●采用Flex布局的元素,称为Flex容器( flex container) , 简称”容器”。它的所有子元素自动成为容
器成员,称为Flex项目( flex item) ,简称”项目”。

4、flex原理

●总结flex布局原理:
就是通过给父盒子添加flex属性,来控制子盒
子的位置和排列方式

5、flex布局父项常见属性及其使用

以下由6个属性是对父元素设置的
●flex-direction :设置主轴的方向
●justify-content :设置主轴上的子元素排列方式
●flex-wrap: 设置子元素是否换行
●align-content :设置侧轴上的子元素的排列方式(多行)
●align-items :设置侧轴上的子元素排列方式(单行)
●flex- flow :复合属性,相当于同时设置了flex-direction和flex -wrap

5.1、flex-direction



div {
/给父级添加flex属性/
display: flex;
width: 800px;
height: 300px ;
background-color: pink ;
/默认的主轴是x轴行row可以通过上表进行调整,下面默认可以省略/
flex-direction: row ;
}

5.2、justify-content

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <style>
  11. div {
  12. display: flex;
  13. width: 800px;
  14. height: 300px;
  15. background-color:rgb(0, 0, 255);
  16. /*默认的主轴是x轴row */
  17. flex-direction: row ;
  18. /* justify-content: 是设置主轴上子元素的排列方式
  19. /* justify-content: flex-start; */
  20. /* justify- content: flex-end; */
  21. /*让我们子元素居中对齐*/
  22. /* justify- content: center; */
  23. /*平分剩余空间*/
  24. /* justify-content: space-around; */
  25. /* 先两边贴边, 在分配剩余的空间*/
  26. justify-content: space-between;
  27. }
  28. div span {
  29. width: 150px;
  30. height: 100px ;
  31. background-color: green;
  32. }
  33. </style>
  34. <div>
  35. <span>1</span>
  36. <span>2</span>
  37. <span>3</span>
  38. <span>2</span>
  39. </div>
  40. </body>
  41. </html>

5.3、flex-wrap

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <style>
  11. div {
  12. display: flex;
  13. width: 800px;
  14. height: 300px;
  15. background-color:rgb(0, 0, 255);
  16. /*默认的主轴是x轴row */
  17. flex-direction: row ;
  18. justify-content: space-between;
  19. /* flex布局中, 默认的子元素是不换行的, 如果装不开,会缩小子元素的宽度,放到父元素里面
  20. */
  21. /* flex-wrap: nowrap; */
  22. flex-wrap: wrap ;
  23. }
  24. div span {
  25. width: 150px;
  26. height: 100px ;
  27. background-color: green;
  28. }
  29. </style>
  30. <div>
  31. <span>1</span>
  32. <span>2</span>
  33. <span>3</span>
  34. <span>2</span>
  35. <span>3</span>
  36. <span>2</span>
  37. <span>3</span>
  38. <span>2</span>
  39. </div>
  40. </body>
  41. </html>

5.4、align-items

实现主轴侧轴都居中
![]

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <style>
  11. div {
  12. display: flex;
  13. width: 800px;
  14. height: 300px;
  15. background-color:rgb(0, 0, 255);
  16. /*默认的主轴是X轴row
  17. */
  18. justify-content: center;
  19. /*我们需要一个侧轴居中*/
  20. align-items: center;
  21. }
  22. div span {
  23. width: 150px;
  24. height: 100px ;
  25. background-color: green;
  26. }
  27. </style>
  28. <div>
  29. <span>1</span>
  30. <span>2</span>
  31. <span>3</span>
  32. </div>
  33. </body>
  34. </html>

5.5、align-content 多行

设置子项在侧轴上的排列方式并且只能用于子项出现换行的情况(多行) , 在单行下是没有效果的。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <style>
  11. div {
  12. display: flex;
  13. width: 800px;
  14. height: 300px;
  15. background-color:rgb(0, 0, 255);
  16. /*默认的主轴是X轴row
  17. */
  18. flex-wrap: wrap;
  19. justify-content: center;
  20. /*我们需要一个侧轴居中*/
  21. align-items: center;
  22. align-content: space-around;
  23. }
  24. div span {
  25. width: 150px;
  26. height: 100px ;
  27. background-color: green;
  28. }
  29. </style>
  30. <div>
  31. <span>1</span>
  32. <span>2</span>
  33. <span>3</span>
  34. <span>1</span>
  35. <span>2</span>
  36. <span>3</span>
  37. <span>1</span>
  38. <span>2</span>
  39. <span>3</span>
  40. </div>
  41. </body>
  42. </html>

5.6、flex-flow

flex-flow属性是flex-direction和flex-wrap属性的复合属性

6、flex布局子项常见属性

flex布局子项常见属性
●flex子项目占的份数
●align-self 控制子项自2在侧轴的排列方试
●order属性定 义子项的排列顺序(前后顺序)

6.1、flex属性

flex属性定义好项目分配剩余空间,用flex来表示占多少份数。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <style>
  10. section {
  11. display: flex;
  12. width:60%;
  13. height:150px;
  14. background-color:red;
  15. margin: 0 auto;
  16. }
  17. section div:nth-child(1) {
  18. width: 100px;
  19. height: 150px;
  20. background-color:red;
  21. }
  22. section div:nth-child(2) {
  23. flex:1;
  24. background-color:green;
  25. }
  26. section div:nth-child(3) {
  27. width: 100px;
  28. height:150px;
  29. background-color:blue;
  30. }
  31. </style>
  32. <body>
  33. <section>
  34. <div></div>
  35. <div></div>
  36. <div></div>
  37. </section>
  38. <p>
  39. </p>
  40. </body>
  41. </html>

6.2、align-self 控制子项自2在侧轴的排列方试

可以控制单独一个项目侧轴,原来的都是一起控制的

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <style>
  10. section {
  11. display: flex;
  12. width:60%;
  13. height:150px;
  14. background-color:red;
  15. margin: 0 auto;
  16. }
  17. section div:nth-child(1) {
  18. width: 100px;
  19. height: 50px;
  20. background-color:yellow;
  21. }
  22. section div:nth-child(2) {
  23. flex:1;
  24. background-color:green;
  25. height:50px;
  26. }
  27. section div:nth-child(3) {
  28. width: 100px;
  29. height:50px;
  30. background-color:blue;
  31. align-self: flex-end;
  32. }
  33. </style>
  34. <body>
  35. <section>
  36. <div></div>
  37. <div></div>
  38. <div></div>
  39. </section>
  40. <p>
  41. </p>
  42. </body>
  43. </html>

6.2、order默认是0越小越靠前

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <style>
  10. section {
  11. display: flex;
  12. width:60%;
  13. height:150px;
  14. background-color:red;
  15. margin: 0 auto;
  16. }
  17. section div:nth-child(1) {
  18. width: 100px;
  19. height: 50px;
  20. background-color:yellow;
  21. order: 3;
  22. }
  23. section div:nth-child(2) {
  24. flex:1;
  25. background-color:green;
  26. height:50px;
  27. order: -1;
  28. }
  29. section div:nth-child(3) {
  30. width: 100px;
  31. height:50px;
  32. background-color:blue;
  33. align-self: flex-end;
  34. }
  35. </style>
  36. <body>
  37. <section>
  38. <div></div>
  39. <div></div>
  40. <div></div>
  41. </section>
  42. <p>
  43. </p>
  44. </body>
  45. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议