收藏
回答

报告一个wxml的bug

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 工具 微信开发者工具的,最新版本 WeChatLib: 3.3.4

问题:为什么第一个子元素的marn-top:130,移动的却是父元素?并且它自己一直贴着顶部?

相同的代码,放在vue上运行时,不会出现这种情况,都是父元素没动,子元素往下移动

wxml的html代码如下:

<view class="user-info-content">

  <view class="info-row">

    <text class="info-row-label">名称</text>

  </view>

  <view class="info-row">

    <text class="info-row-label">地址</text>

  </view>

</view>

less文件的css样式如下:

.user-info-content

{

  margin-top: 40rpx;

  background-color: white;

  .info-row

  {

    margin-top: 130rpx;

  }

}

回答关注问题邀请回答
收藏

2 个回答

  • Wang
    Wang
    2024-12-16

    谢邀!

    这是 CSS 布局中的一个常见问题,margin-top塌陷主要发生在两个垂直相邻的块级元素之间,导致两个元素之间的间距不如预期那样简单地相加。

    原因如下:

    1. 相邻的块级元素:当两个块级元素在垂直方向上相邻时,它们的上下外边距会合并,而不是简单地相加。合并后的外边距是两者中较大的一个;
    2. 父子元素之间的外边距:如果父元素没有边框、内边距或块格式化上下文(例如 overflow: hidden),子元素的顶部外边距会与父元素的顶部外边距合并;


    解决方式:

    1. 给父元素增加边框:为了不影响原先的图像效果,可以将边框颜色设置为白色。
    2. 溢出隐藏:在父元素的 style 里面添加 overflow: hidden;
    3. 给父元素设置 display: table;:这种方法可以创建一个新的块级格式化上下文,从而避免塌陷。


    2024-12-16
    有用
    回复
  • 啊哈
    啊哈
    2024-04-19

    这不是微信的问题,可以搜索了解一下margin-top塌陷的相关问题。可以换个思路去实现,比如给父元素设置padding-top

    2024-04-19
    有用
    回复 1
    • Amane
      Amane
      2024-04-19
      如果把代码贴到浏览器上,是不会出现这个问题的,并且经过尝试,如果父元素没有设置有padding,则首元素的margin-top移动的是父元素,但是,如果父元素设置有padding-top,则首元素的margin-top移动的就是自己,而不是父元素
      2024-04-19
      回复
登录 后发表内容