fixed定位或absolute定位 元素的宽度问题

<div class="i_toast">请输入正确的手机号码</div>
.i_toast {
    position: fixed;
    z-index: 5000;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: rgba(17, 17, 17, .7);
    text-align: center;
    border-radius: 5px;
    color: #fff;
    line-height: 1.6;
    padding: .5em 1.6em;
}

图片描述

不理解为什么会换行,两边还有那么宽呢,我并没有限制宽度,,按理说宽度应该是自动的,直到与html宽度一样,才会换行吧

阅读 4.3k
3 个回答

我理解是:

  1. position: fixed;使得元素不再是能宽则宽

  2. top: 50%; left: 50%;使得文字自动换行

  3. transform: translate(-50%, -50%);使得元素只二维变换,不改变其它样式

所以才会出现这种情况。

原理我再查查或者我们讨论讨论。

原因出在 left:50%;
.i_toast 偏移html宽度的50%,在fixed情况下默认不超出html,所以宽度会默认为html宽度的一半
你可以改变一下left的值感受一下

有几点几需要注意的:

  1. 理解box-sizing.
    2.你虽然没显式的设置font-size,系统默认是16px.所以你这里的em,换成px就是:

padding:8px 25.6px ;

:-)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题