老师好,小慕医生的header部分,为什么不直接用定位或margin设置元素位置呢?

老师好,小慕医生的header部分,为什么不直接用定位或margin设置元素位置呢?

老师好,关于小慕医生的header部分,我看设计图里面每个元素都有标定他们在页面X\Y的位置。为什么不直接用postion:absolute去设置他们的位置?或者float以后用margin调整元素位置?


下面代码是我在学了浮动以后、看4-1项目视频之前,直接敲的,似乎也能实现定位目的,当然不是很成熟。

请老师指教。

谢谢。


自己写的header部分css如下

/* 初始化格式 */
* {
    margin: 0;
    padding: 0;
    text-decoration: none;
    list-style: none;
   
  }

  header {

  }

  header .headertop {
、
    position: relative; /*建立BFC压制下方盒子  */
    width: 100%;
    height: 126px;

  }

  /*用浮动方式,放置logo到预定位置  */
  header .headertop .logo {
    color: #00978e;
    font-family: Helvetica;
    line-height: 58px;
    width: 192px;
    height: 63px;
    float: left;
    margin-top: 39px;
    margin-left: 360px;
  }


  /*用浮动方式,放置电话一行的元素到预定位置  */
  header .headertop .tool .telbar  {
    background-color: #fff;
    display: inline-block;
    float: right;
    margin-top: 34px;
    margin-right: 361px;
  }
  /* 用号码把左右图片撑开 */
  header .headertop .tool .telbar span {
    margin-right: 13px;
    margin-left: 25px;
  }
  /* 将中英字间距撑开 */
  header .headertop .telbar .tool a:last-child {
    margin-left: 14px;
  }

/* 用绝对定位,放置搜索栏到预定位置 */
  header .headertop .searchbar {
    width: 266px;
    height: 30px;
    position: absolute;
    top: 72px;
    right: 361px;
    border: 1px solid rgba(202, 202, 202, 0.6);
  }

  /* 设置搜索框样式 */
  header .headertop .searchbar input:first-of-type {
    font-family: Helvetica;
    font-size: 16px;
    color: rgba(202, 202, 202, 0.6);
    border: none;
    margin-right: 10px;
  }

header部分的html代码如下:

相关代码:

  <body>
    <!-- 页面头部 -->
    <header>
      <!-- logo、电话、搜索区 -->
      <div class="headertop">
        <!-- 网页的logo -->
        <div class="logo">
          <h1>小慕医生</h1>
        </div>

        <!-- 网页的功能区 -->
        <div class="tool">
          <div class="telbar">
            <img class="tel" src="../assets/tel@1x.png" alt="" />
            <span class="telnumber">088-88888888</span>
            <a href=""><img class="chinese_icon icon" src="../assets/chinese_icon@1x.png" alt="" /></a>
            <a href=""><img class="english_icon icon" src="../assets/english_icon@1x.png" alt="" /></a>
          </div>
     
          <div class="searchbar">
            <input type="text" placeholder="找医生/科室……" />
            <input type="button" value="" />
          </div>
       </div>
     </div>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2023-02-24 13:34:49

同学你好,解答如下:

首先代码中多了个顿号,如下:

https://img1.sycdn.imooc.com//climg/63f84647098ba82307300320.jpg

首先同学所说的使用定位和浮动确实是可以完成页面的,这个没有问题。

但定位是一把双刃剑,它确实能实现目的,只不过正式开发的时候需要适配大小屏幕的问题,那么使用定位就会出现一些bug。同学可以将浏览器屏幕缩放一下就能看出问题了。

https://img1.sycdn.imooc.com//climg/63f84b6c0993198616100548.jpg

原本右侧的input部分因为按照headertop绝对定位,那么就会出现这种问题 。

定位一般来说用在特效(脱离文档流的元素上使用)后面会有项目中会出现这样的情况,所以定位一般不用的时候尽量别用。

还有建议同学按照老师的思路去写,如header部分:

https://img1.sycdn.imooc.com//climg/63f84c120931dc7019140510.jpg

这部分应该是有一个中间部分并且左右做自适应处理的,margin:0 auto;  那么后面在涉及到屏幕大小问题,代码就会告知浏览器可以缩进那一部分。

所以建议同学在最初的学习阶段,要学会老师的布局与样式思路。

祝学习愉快!

  • 提问者 慕桂英1122475 #1

    谢谢老师,还有个问题:为什么视频教程在初始化样式的时候,要分开*{} 、ul li{}、body{}去分别设置初始样式呢?直接都放到*{}不是效率更高么?

    2023-02-24 14:18:22
  • 好帮手慕小李 回复 提问者 慕桂英1122475 #2

    因为*是通配符,可以理解为浏览器遇到这个会整体去跑一遍,那么比如说一些标签上并没有某种属性的话,那么浏览器也会去跑一遍,这样以来是很消耗性能的,所以通配符的使用是找到共性去做设置的,如要清理其它标签的属性最好是针对标签进行去设置。

    2023-02-24 14:21:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师