Blogger Information
Blog 21
fans 0
comment 1
visits 11195
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
定位及其flex
手机用户1620888567
Original
420 people have browsed it

一、定位 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>
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:很好。继续加油
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post