博客列表 >相对定位、绝对定位、固定定位、粘性定位flex与grid

相对定位、绝对定位、固定定位、粘性定位flex与grid

Leo的博客
Leo的博客原创
2021年09月29日 16:44:19956浏览

相对定位与绝对定位

文档流:显示顺序与书写顺序一致
static:静态定位,就是没有定位。完全由浏览器控制(根据元素在html文档中的循序)

  1. <div class="box three">
  2. <div class="box tow">
  3. <div class="box one"></div>
  4. </div>
  5. </div>

给三个盒子添加边框和样式

  1. <style>
  2. .box {
  3. border: 1px solid #000;
  4. /* 默认div是个块元素 */
  5. display: inline-block;
  6. }
  7. .box.one {
  8. width: 5em;
  9. height: 5em;
  10. background-color: cadetblue;
  11. }
  12. .box.tow {
  13. width: 10em;
  14. height: 10em;
  15. background-color: blanchedalmond;
  16. }
  17. .box.three {
  18. width: 15em;
  19. height: 15em;
  20. background-color: rebeccapurple;
  21. }

相对定位

一旦某一个元素使用了非static的定位属性,那么它就转换成了”定位元素”

相对定位,相对于它在文档流中的原始位置进行了偏移,它占据的原来的空间并不释放

  1. .one {
  2. /* position: relative;
  3. top: 1em;
  4. left: 1em;

绝对定位: 相对于离它最近的”定位元素”进行偏移,如果没有,就一直向上,直到最初包含块(html,body)

  1. position: absolute;
  2. left: 2em;
  3. top: 2em;
  4. }

固定定位与粘性定位

先建个盒子

  1. <div class="box">

文本

  1. <article>
  2. <h2 style="background-color: green">国内新闻</h2>
  3. <ul>
  4. <li><a href="">任正非重磅发声:鸿蒙之外,华为还有备胎</a></li>
  5. <li><a href="">留学生回国一年:家长陪读网课,教育花费近百万</a></li>
  6. <li><a href="">明星频繁翻车,虚拟偶像是解决方案吗?</a></li>
  7. <li><a href="">美国只有用实际行动才能摘掉“抗疫失败国”的帽子</a></li>
  8. <li><a href="">福建莆田最小确诊患者仅4岁 穿隔离服独自做检查</a></li>
  9. <li><a href="">潜望|iPhone13背后的苹果供应链江湖:出局与挣扎</a></li>
  10. <li>
  11. <a href=""
  12. >多虑了!网络诈骗不收割“网瘾老人”,而是孤独青年人|钛度图闻</a>
  13. </li>
  14. <li>
  15. <a href="">iPhone13发布,一台苹果手机究竟值多少钱?真的成倍利润?</a>
  16. </li>
  17. <li>
  18. <a href="">美团、饿了么双双发文:严禁诱导和强迫骑手注册成个体工商户</a>
  19. </li>
  20. <li>
  21. <a href="">莫名被开通十余个手机号?工信部推出一证查询名下电话卡功能</a>
  22. </li>
  23. </ul>
  24. </article>
  25. <article>
  26. <h2 style="background-color: red">国际新闻</h2>
  27. <ul>
  28. <li>
  29. <a href="">美军战略司令部司令:中国在发展战略武器方面取得了前所未有的突破</a>
  30. </li>
  31. <li>
  32. <a href="">美国防情报局长称“基地”组织可能在一两年内威胁美国本土,还不忘扯上中俄</a>
  33. </li>
  34. <li>
  35. <a href="">美媒:3名前美国情报人员在阿联酋当黑客雇佣兵,承认泄露敏感军事技术</a>
  36. </li>
  37. <li>
  38. <a href="">美官员:约700人周末将在首都集会 支持国会骚乱案示威者</a>
  39. </li>
  40. <li><a href="">结束16年的德国总理生涯后,默克尔打算做什么?</a></li>
  41. <li>
  42. <a href="">12人涉非法集结案宣判,“支联会”成员何俊仁判监禁10个月</a>
  43. </li>
  44. <li>
  45. <a href="">对华开战会提前通知!防止总统宣战,美最高将领两次秘密致电中方</a>
  46. </li>
  47. <li>
  48. <a href="">英媒:消息人士称塔利班领导层为组建新政府“大吵一架”</a>
  49. </li>
  50. <li>
  51. <a href="">杀人灭口?以色列前总理腐败案证人意外死亡,引发各界猜测</a>
  52. </li>
  53. <li>
  54. <a href="">印度将试射洲际弹道导弹,印媒制造矛盾:可覆盖中国多个内陆城市</a>
  55. </li>
  56. </ul>
  57. </article>

css代码样式

  1. .box {
  2. margin: 5em auto;
  3. border: 2px solid #000;
  4. height: 320px;
  5. overflow: scroll;
  6. line-height: 2em;
  7. }

h2标签盒子样式

  1. .box article h2 {
  2. color: white;
  3. margin: 0;

当标题滚动到顶部时, 将标题粘到盒子的顶部
相当于相对定位+固定定位的二合一

  1. position: sticky;
  2. top: 0;
  3. }

固定定位,其实是绝对定位的一个特例,它是相对一个固定的参照物(根元素)

  1. .box img {
  2. width: 4em;
  3. border-radius: 50%;
  4. box-shadow: 2px 2px 3px #666;
  5. position: fixed;
  6. right: 2em;
  7. top: 13em;
  8. z-index: 999;
  9. }

输出:

定位实战:模态框

  1. <body>
  2. <header>
  3. <h2>个人博客</h2>
  4. <button onclick="document.querySelector('.modal').style.display='block'">
  5. 登录
  6. </button>
  7. </header>

第一部分半透明遮罩

  1. <div class="modal">
  2. <!-- 加入遮罩 -->
  3. <div
  4. class="modal-bg"
  5. onclick="this.parentNode.style.display='none'"
  6. ></div>

遮罩下面是个弹层,弹层表单

  1. <form action="" class="modal-form">
  2. <fieldset style="display: grid; gap: 1em">
  3. <legend>用户登录</legend>
  4. <input type="email" name="email" placeholder="user@email.com" />
  5. <input type="password" name="password" placeholder="不少于6位" />
  6. <button>登录</button>
  7. </fieldset>
  8. </form>
  9. </div>

表单美化

  1. <style>
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. box-sizing: border-box;
  6. }
  7. body {
  8. background-color: #eee;
  9. }
  10. header {
  11. background-color: mediumaquamarine;
  12. padding: 0.5em 1.5em;
  13. display: flex;
  14. }
  15. header button {
  16. margin-left: auto;
  17. width: 4em;
  18. }
  19. .modal {

把模态框容器转为”定位元素”

  1. position: relative;
  2. }
  3. .modal .modal-form fieldset {
  4. background-color: lightyellow;
  5. border: none;
  6. padding: 2em;
  7. box-sizing: 0 0 5px #888;
  8. }
  9. .modal .modal-form fieldset legend {
  10. padding: 5px 1em;
  11. background-color: mediumorchid;
  12. color: white;
  13. }

固定表单

  1. .modal .modal-form {
  2. position: fixed;
  3. top: 10em;
  4. left: 20em;
  5. right: 20em;
  6. }

半透明遮罩

  1. .modal .modal-bg {
  2. position: fixed;
  3. top: 0;
  4. left: 0;
  5. right: 0;
  6. bottom: 0;
  7. background-color: rgb(0, 0, 0, 0.5);
  8. }

模态框隐藏

  1. .modal {
  2. display: none;
  3. }

输出:

flex思维导图:

grid思维导图:

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