博客列表 >定位的类型与应用场景和使用条件

定位的类型与应用场景和使用条件

刚哥哥
刚哥哥原创
2020年12月22日 19:09:581969浏览

定位主要用于页面布局,将盒子按要求摆放。以及制作一些广告为等特定场景;

通过position属性进行定位:

基本语法:
  1. position(定位属性):static(属性值);偏移参数(具体放哪里由偏移参数决定)
  2. top: 20px;
  3. right:20px;
  4. bottom:20px;
  5. left:20px;

详细介绍:

position的常用属性值有:

1、static:遵循文档流, 静态的;(默认值),
top、left、right、bottom等属性不会被应用。
2、relative: 遵循文档流,(相对定位),

  1. 参照自身在文档流中的位置,通过 toprightbottomleft 等属性进行偏移,偏移时不影响文档流中的任何元素。

特点:

  1. 它是相对于自己原来的位置来移动(移动位置是以自已原来位置作为参考点)
  2. 原来在标准流的位置继续占有,后面的盒子不会向上移动到它原来的位置。即不脱离文档流。

3、absolute: 对象脱离文档流,(绝对定位),

  1. 使用toprightbottomleft 等属性进行偏移,盒子的偏移位置不影响文档流中的任何元素,其 margin(外边距)不与其它任何 margin(外边距)折叠。

特点:

  1. 如果没有祖先元素或者祖先元素没有使用定位,则以浏览器的 document文档为参考系。
  2. 如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定 位祖先元素为参考系移动位置。
  3. 绝对定位不再占有原先默认的位置,即脱离文档流,空出之前占有的 位置。

z-index 属性设置 定位的盒子的层叠优先级。

4、fixed: 对象脱离文档流,(固定定位),

  1. 使用toprightbottomleft 等属性以浏览器可视窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。
  2. 应用场景:广告位、返回顶部、登录框等元素定位。

特点:

  1. 以浏览器的可是窗口为参照;
  2. 不会随着滚动条滚动;
  3. 与父元素没有任何关系;
  4. 不占有之前的位置,即脱离文档流;

应用场景

什么场景用相对定位什么场景用绝对定位?

答:父元素使用相对定位,子元素使用绝对定位;

  1. 子元素使用绝对定位不会占有位置(脱离文档流),可以放到父盒子里面的任何一个地方,不会影响其它的兄弟元素。
  2. 父盒子需要加定位限制子盒子在父盒子内显示。
  3. 父盒子布局时,必需占有位置,因为不占有位置的话(脱离文档流),会影响下面盒子的布局,因此父元素只能用相对定位。

定位的前提条件

  1. 必须给 父元素加定位属性,父元素用相对定位(position:relative),这样父元素不会脱离文档流,不会影响后面的元素。
  2. 给子元素加定位属性,子元素用绝对定位(position:absolute),通过topleftrightbottom值进行偏移定位。
  3. 为什么要满足这两个条件呢?由于绝对定位是以父元素为参考,如果父元素没有定位,它往上找,如果到html根元素都没有设置定位属性,就会以html元素为参考,进行定位。

演示代码

  1. <title>定位演示代码</title>
  2. <style>
  3. .fbox{
  4. width:200px;
  5. height:200px;
  6. background-color: lawngreen;
  7. border: 1px red solid;
  8. /* 给父级盒子设置定位属性,给子级盒子作定位参考,relative相对定位,不脱离文档流,不影响后面的盒子 */
  9. position: relative;
  10. }
  11. .ebox{
  12. width:60px;
  13. height:60px;
  14. background-color: violet;
  15. border: 1px yellow solid;
  16. /* 给盒子设置定位属性,absolute=绝对定位 */
  17. position:absolute;
  18. top:50px;
  19. /* left:50px;
  20. right:50px;
  21. bottom:20px; */
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <!-- 创建一个父级盒子 -->
  27. <div class="fbox">
  28. <!-- <p>父级盒子</p> -->
  29. <div class="ebox">
  30. <p>儿子</p>
  31. </div>
  32. </div>
  33. </body>

固定定位演示

  1. <title>蒙版效果</title>
  2. <style>
  3. * {
  4. margin: 0;
  5. padding: 0;
  6. /* 设置ie盒子 */
  7. box-sizing: border-box;
  8. }
  9. html {
  10. font-size: 16px;
  11. }
  12. header{
  13. padding: 0.5em 1em;
  14. /* width: 60em;
  15. height: 5em; */
  16. background-color: lawngreen;
  17. /* position: relative; */
  18. /* 解决父类高度塌陷问题 */
  19. overflow: hidden;
  20. }
  21. header h3 {
  22. float: left;
  23. /* line-height: ; */
  24. /* line-height: 4em; */
  25. }
  26. header button {
  27. color: red;
  28. width: 5em;
  29. height: 3em;
  30. float:right;
  31. /* position: absolute; */
  32. /* left:60em; */
  33. /* right: 0; */
  34. /* line-height: 3em;
  35. right: 2em;
  36. top: 1.5em; */
  37. }
  38. header button:hover{
  39. cursor: pointer;
  40. background-color: #fff;
  41. }
  42. /* 蒙版css */
  43. .mtk-backdrop{
  44. /* 设置背景, rgb(0,0,0,0.5) 0,0,0,表示颜色,0.5表示透明度 */
  45. background: rgb(0,0,0,0.5);
  46. /* 给蒙版设置定位(fixed=固定定位) */
  47. position:fixed;
  48. top:0;
  49. right:0;
  50. bottom:0;
  51. left:0;
  52. }
  53. /* 主题css */
  54. .mtk-body{
  55. padding:1em;
  56. min-width:20em;
  57. border:1px black solid;
  58. background: linear-gradient(to right,red,blue);
  59. /* 设置主体为固定定位 */
  60. position: fixed;
  61. top:5em;
  62. left:30em;
  63. right:30em;
  64. }
  65. /* 开始的适合 登录框应该时隐藏的 */
  66. .mtk{
  67. /* display: none; */
  68. }
  69. </style>
  70. </head>
  71. <body>
  72. <!-- 页头 -->
  73. <header>
  74. <h3>点击登录按钮弹出登录框,登录框采用固定定位在屏幕正中并带蒙版效果</h3>
  75. <button type="button">登录</button>
  76. </header>
  77. <!-- 模态框 -->
  78. <div class="mtk">
  79. <!-- 蒙版:用来盖住后面的内容,使它半透明效果 -->
  80. <div class="mtk-backdrop"></div>
  81. <!-- 主体 -->
  82. <div class="mtk-body">
  83. <div class="denglu">
  84. <from action="" method="post">
  85. <label for="username"></label>
  86. 用户名:<input type="text" id="username" name="userneme" value="特朗普">
  87. <br />
  88. <label for="userpw"></label>
  89. 密码:<input type="password" id="userpw" name="userpw" value="">
  90. </from>
  91. </div>
  92. </div>
  93. </div>
  94. </body>

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议