博客列表 >理解绝对定位/固定定位

理解绝对定位/固定定位

Sinan学习博客
Sinan学习博客原创
2023年02月11日 20:58:42356浏览

理解绝对定位/固定定位

1. 实例演示绝对定位与固定定位,并描述联系与区别

1.1 绝对定位

  • position:absolute;绝对定位
  • position:relative;搭配使用,可以指定绝对定位元素的参考容器。
  • 绝对定位默认是以浏览器视口为参考容器进行定位的

举例说明:

  1. 设置2个li,父容器是ul
  2. 将html,body,ul这3个容器的border都设为5px,颜色分别为:红、黄、蓝
  3. 将li:2 设置为绝对定位:position:absolute;

代码如下:

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>绝对定位</title>
  8. <style>
  9. *{padding:0;margin:0;box-sizing:border-box;}
  10. html{
  11. border: 5px solid red;
  12. width:700px;
  13. /* position: relative; */
  14. /*margin:50px;*/
  15. }
  16. body{
  17. border: 5px solid yellow;
  18. width:500px;
  19. position: relative;
  20. padding:50px;
  21. }
  22. ul{
  23. border: 5px solid blue;
  24. width:300px;
  25. height:300px;
  26. /* position: relative; */
  27. }
  28. ul li{
  29. list-style: none;
  30. }
  31. ul li:first-child{
  32. background-color: lightblue;
  33. }
  34. ul li:first-child + *{
  35. background-color: violet;
  36. /*将 li:2 设置为 position:absolute;top:10;right:100xp;*/
  37. position: absolute;
  38. top:10px;
  39. right: 100px;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <ul>
  45. <li>Li:1</li>
  46. <li>Li:2</li>
  47. </ul>
  48. </body>
  49. </html>

示例1:

将 li:2 设置为 position:absolute;top:10;right:100xp; ,其它参考容器没有设置position:relative;

当未给 li:2 的任意容器ul,body,html设置position:relative;时 li:2 的定位参考容器是浏览器视口。

示例2:

当给 li:2 的任意容器ul,body,html设置position:relative;时 li:2 的定位参考容器是设置了position:relative;的容器。

当给 li:2 的任意容器ul,body,html设置position:relative;时 li:2 的定位参考容器是设置了position:relative;的容器,且参考容器的如果设置了border宽度,定位会从边框内沿开始计算。

1.2 固定定位

  • position:fixed;固定定位
  • 固定定位是以浏览器视口为参考容器进行定位的
  • 其它父容器设置positive:relative;对他没影响
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>绝对定位</title>
  8. <style>
  9. * {
  10. padding: 0;
  11. margin: 0;
  12. box-sizing: border-box;
  13. }
  14. html {
  15. border: 5px solid red;
  16. width: 700px;
  17. }
  18. body {
  19. border: 5px solid yellow;
  20. width: 500px;
  21. min-height:2000px;
  22. }
  23. ul {
  24. border: 5px solid blue;
  25. width: 300px;
  26. height: 300px;
  27. }
  28. ul li {
  29. list-style: none;
  30. }
  31. ul li:first-child {
  32. background-color: lightblue;
  33. }
  34. ul li:first-child + * {
  35. background-color: violet;
  36. position: fixed;
  37. top: 10px;
  38. right: 100px;
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <ul>
  44. <li>Li:1</li>
  45. <li>Li:2</li>
  46. </ul>
  47. </body>
  48. </html>

设置body的最小高度为min-height:2000px;使页面出现滚动条,拖动滚动条,固定元素LI:2 不会随着内容滚动。

绝对定位、固定定位的联系与区别

绝对定位、固定定位二者都可以用于定位元素在页面中的任意位置。
区别:

  1. 绝对定位可以用 position:relative 改变参考容器,固定定位只能定位于视口。
  2. 固定定位元素不会随内容滚动,绝对定位可以。

2. 实例演示flex必会的容器与项目属性

2.1容器属性 flex-flow

  • flex-flow 属性是 flex-direction 和 flex-wrap 的简写。
  • flex-flow: 1.设置轴向 2.设置是否换行

示例2.1

  1. <div class="container">
  2. <div class="item">item1</div>
  3. <div class="item">item2</div>
  4. <div class="item">item3</div>
  5. </div>
  6. <style>
  7. .container {
  8. width: 450px;
  9. height: 50px;
  10. display: flex;
  11. border: 1px solid #999;
  12. margin: 50px auto;
  13. /*设置轴向是主轴,不允许换行*/
  14. flex-flow: row nowrap;
  15. }
  16. .container > .item {
  17. background-color: orange;
  18. border: 1px solid black;
  19. padding: 10px;
  20. }
  21. </style>

2.2 容器属性 place-content

设置子项目在容器主轴上的排列方式。

  • place-content:start;主轴默认排列 靠左排列
  • place-content:center;居中排列
  • place-content:end;靠右排列
  • place-content:space-between;两端对齐
  • place-content:space-around;分散对齐
  • place-content:space-evenly;平均对齐

    示例2.2






2.3 容器属性 place-items

设置子项目在容器交叉轴上的排列方式。

  • place-items:start;默认排列 靠上排列
  • place-items:center;居中排列
  • place-items:end;靠下排列

    示例2.3



2.4 项目属性 flex

  • flex: 0 1 auto;简写flex:initial;项目不放大,可收缩
  • flex: 1 1 auto;简写flex:auto;完全响应式,放大,收缩均可。
  • flex: 0 0 auto;简写flex:none;完全不响应式,不放大,不收缩。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议