0


css导航栏固定顶部两种情况,及绝对定位,相对定位,固定定位和粘性定位的特性及区别

绝对定位,相对定位,固定定位和粘性定位的特性及区别,我整理一下放在文章最下面了,不用死记硬背,理解一下就ok,需要的话可以看看。

当导航栏头部没有别的模块时,想要滑动过程中导航栏一直在顶部,有两种写法

1.粘性定位(position: sticky;)

效果图:

css全部代码:

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. li {
  6. list-style: none;
  7. }
  8. a {
  9. text-decoration: none;
  10. color: white;
  11. }
  12. .wrapper {
  13. width: 100%;
  14. height: 5000px;
  15. /* 圆形边框 */
  16. }
  17. .box {
  18. width: 1250px;
  19. margin: 0 auto;
  20. background-color: dimgray;
  21. height: 50px;
  22. border: 1px solid white;
  23. border-radius: 20px 20px;
  24. position: sticky;
  25. top: 0;
  26. /* 固定在距离顶部0px处 */
  27. }
  28. .box>ul>li {
  29. float: left;
  30. position: relative;
  31. }
  32. .nav {
  33. width: 1200px;
  34. margin: 0 auto;
  35. }
  36. .box ul li {
  37. height: 50px;
  38. line-height: 50px;
  39. width: 200px;
  40. background-color: dimgrey;
  41. text-align: center;
  42. font-weight: bolder;
  43. border-radius: 20px 20px;
  44. }
  45. .nav li:nth-of-type(2) ul {
  46. display: none;
  47. /* 隐藏二级菜单*/
  48. position: absolute;
  49. }
  50. .nav li:hover>a {
  51. color: darkred;
  52. }
  53. /* 鼠标悬浮字体变色 */
  54. .nav li:nth-of-type(2):hover .second {
  55. display: block;
  56. /* 鼠标悬浮显示二级菜单*/
  57. }
  58. .third {
  59. position: absolute;
  60. top: 100px;
  61. left: 200px;
  62. display: none;
  63. /* 隐藏三级菜单 */
  64. }
  65. .second li:nth-of-type(3):hover ul {
  66. display: block;
  67. /* 鼠标悬浮显示三级菜单*/
  68. }

html:全部代码

  1. <div class="wrapper">
  2. <div class="box">
  3. <ul class="nav">
  4. <li><a href="#">首页</a></li>
  5. <li><a href="#">网上工作室</a>
  6. <ul class="second">
  7. <li><a href="#">游客</a></li>
  8. <li><a href="#">工作人员</a></li>
  9. <li><a href="#">管理层</a>
  10. <ul class="third">
  11. <li><a href="#">普通管理层</a></li>
  12. <li><a href="#">vip</a></li>
  13. <li><a href="#">svip</a></li>
  14. </ul>
  15. </li>
  16. </ul>
  17. </li>
  18. <li><a href="#">交流圈</a></li>
  19. <li><a href="#">登录</a></li>
  20. <li><a href="#">注册</a></li>
  21. <li><a href="#">联系我们</a></li>
  22. </ul>
  23. </div>
  24. </div>

2.固定定位(position: fixed;)并且,我们发现margin: 0 auto;失效了,也就是说,使用固定定位和绝对定位都会脱离标准文档流,使margin: 0 auto;失效。

效果图:

css全部代码:

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. li {
  6. list-style: none;
  7. }
  8. a {
  9. text-decoration: none;
  10. color: white;
  11. }
  12. .wrapper {
  13. width: 100%;
  14. height: 5000px;
  15. /* 圆形边框 */
  16. }
  17. /* .header{
  18. width: 100%;
  19. height: 500px;
  20. background-color: burlywood;
  21. } */
  22. .box {
  23. width: 1250px;
  24. /* margin: 0 auto; */
  25. background-color: dimgray;
  26. height: 50px;
  27. border: 1px solid white;
  28. border-radius: 20px 20px;
  29. position:fixed;
  30. top: 0;
  31. /* 固定在距离顶部0px处 */
  32. }
  33. .box>ul>li {
  34. float: left;
  35. position: relative;
  36. }
  37. .nav {
  38. width: 1200px;
  39. margin: 0 auto;
  40. }
  41. .box ul li {
  42. height: 50px;
  43. line-height: 50px;
  44. width: 200px;
  45. background-color: dimgrey;
  46. text-align: center;
  47. font-weight: bolder;
  48. border-radius: 20px 20px;
  49. }
  50. .nav li:nth-of-type(2) ul {
  51. display: none;
  52. /* 隐藏二级菜单*/
  53. position: absolute;
  54. }
  55. .nav li:hover>a {
  56. color: darkred;
  57. }
  58. /* 鼠标悬浮字体变色 */
  59. .nav li:nth-of-type(2):hover .second {
  60. display: block;
  61. /* 鼠标悬浮显示二级菜单*/
  62. }
  63. .third {
  64. position: absolute;
  65. top: 100px;
  66. left: 200px;
  67. display: none;
  68. /* 隐藏三级菜单 */
  69. }
  70. .second li:nth-of-type(3):hover ul {
  71. display: block;
  72. /* 鼠标悬浮显示三级菜单*/
  73. }

html全部代码:

  1. <div class="wrapper">
  2. <!-- <div class="header"></div> -->
  3. <div class="box">
  4. <ul class="nav">
  5. <li><a href="#">首页</a></li>
  6. <li><a href="#">网上工作室</a>
  7. <ul class="second">
  8. <li><a href="#">游客</a></li>
  9. <li><a href="#">工作人员</a></li>
  10. <li><a href="#">管理层</a>
  11. <ul class="third">
  12. <li><a href="#">普通管理层</a></li>
  13. <li><a href="#">vip</a></li>
  14. <li><a href="#">svip</a></li>
  15. </ul>
  16. </li>
  17. </ul>
  18. </li>
  19. <li><a href="#">交流圈</a></li>
  20. <li><a href="#">登录</a></li>
  21. <li><a href="#">注册</a></li>
  22. <li><a href="#">联系我们</a></li>
  23. </ul>
  24. </div>
  25. </div>

当导航栏头部有其他模块,想要滑动过程中,导航栏滑动与顶部零间距之后固定

使用粘性定位滑动过程中与页面顶端不会产生空间,但此时,如果使用固定定位,那就真的会栓Q了,问题不大,就是效果不一样,可以试试。

使用粘性定位效果图:

css代码:

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. li {
  6. list-style: none;
  7. }
  8. a {
  9. text-decoration: none;
  10. color: white;
  11. }
  12. .wrapper {
  13. width: 100%;
  14. height: 5000px;
  15. /* 圆形边框 */
  16. }
  17. .header{
  18. width: 100%;
  19. height: 500px;
  20. background-color: burlywood;
  21. }
  22. .box {
  23. width: 1250px;
  24. margin: 0 auto;
  25. background-color: dimgray;
  26. height: 50px;
  27. border: 1px solid white;
  28. border-radius: 20px 20px;
  29. position: sticky;
  30. top: 0;
  31. /* 固定在距离顶部0px处 */
  32. }
  33. .box>ul>li {
  34. float: left;
  35. position: relative;
  36. }
  37. .nav {
  38. width: 1200px;
  39. margin: 0 auto;
  40. }
  41. .box ul li {
  42. height: 50px;
  43. line-height: 50px;
  44. width: 200px;
  45. background-color: dimgrey;
  46. text-align: center;
  47. font-weight: bolder;
  48. border-radius: 20px 20px;
  49. }
  50. .nav li:nth-of-type(2) ul {
  51. display: none;
  52. /* 隐藏二级菜单*/
  53. position: absolute;
  54. }
  55. .nav li:hover>a {
  56. color: darkred;
  57. }
  58. /* 鼠标悬浮字体变色 */
  59. .nav li:nth-of-type(2):hover .second {
  60. display: block;
  61. /* 鼠标悬浮显示二级菜单*/
  62. }
  63. .third {
  64. position: absolute;
  65. top: 100px;
  66. left: 200px;
  67. display: none;
  68. /* 隐藏三级菜单 */
  69. }
  70. .second li:nth-of-type(3):hover ul {
  71. display: block;
  72. /* 鼠标悬浮显示三级菜单*/
  73. }

html代码:

  1. <div class="wrapper">
  2. <div class="header"></div>
  3. <div class="box">
  4. <ul class="nav">
  5. <li><a href="#">首页</a></li>
  6. <li><a href="#">网上工作室</a>
  7. <ul class="second">
  8. <li><a href="#">游客</a></li>
  9. <li><a href="#">工作人员</a></li>
  10. <li><a href="#">管理层</a>
  11. <ul class="third">
  12. <li><a href="#">普通管理层</a></li>
  13. <li><a href="#">vip</a></li>
  14. <li><a href="#">svip</a></li>
  15. </ul>
  16. </li>
  17. </ul>
  18. </li>
  19. <li><a href="#">交流圈</a></li>
  20. <li><a href="#">登录</a></li>
  21. <li><a href="#">注册</a></li>
  22. <li><a href="#">联系我们</a></li>
  23. </ul>
  24. </div>
  25. </div>

相对定位: position: relative;

    1. 没有脱离标准文档流
    1. 层级自动提高,会覆盖浮动元素
    1. left:距离左边移动
    1. right:距离右边移动
    1. top:距离上边移动
    1. bottom:距离下边移动

绝对定位:position: absolute;

absolute 布局的关键点选择哪一个元素作为布局区域,如果元素的所有父元素均未设置 position 属性(值为 static),布局区域会选择可视区域。

    1. 如果祖先元素没有定位,相对于浏览器定位
    1. 如果祖先元素有定位,相对于"最近的"定位的祖先元素 定位
    1. 绝对定位会脱离标准文档流,影响下边的元素
    1. 绝对定位找参照祖先元素,应该用relative
    1. 经过绝对定位的元素会变成行内块元素

固定定位:position:fixed;

  • 不占据空间,固定定位是脱离标准流。
  • 以浏览器的可视窗口为参照点移动元素。
  • 跟父元素没有任何关系。
  • 不随滚动条滚动

粘性定位:position:sticky;

  • 以浏览器的可视窗口为参照点移动元素。
  • 占有原先的位置。
  • 必须添加top、left、right、bottom其中一个才有效。
  • 兼容性差,IE不支持,不常用。
  • 粘性定位并不会 脱离文档流

层级关系 : 定位层级>浮动层级>标准文档流的层级

标签: css css3 html

本文转载自: https://blog.csdn.net/m0_71491195/article/details/125899407
版权归原作者 不~古 所有, 如有侵权,请联系我们删除。

“css导航栏固定顶部两种情况,及绝对定位,相对定位,固定定位和粘性定位的特性及区别”的评论:

还没有评论