Blogger Information
Blog 16
fans 0
comment 0
visits 16736
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
定位的类型与应用场景和使用条件
刚哥哥
Original
1956 people have browsed it

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

通过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>

Correcting teacher:天蓬老师天蓬老师

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