絕對定位left:50% 隱式設置了寬度


絕對定位left:50% 隱式設置了寬度

不定寬高的盒子如何在父盒子中垂直居中,我們常做的一種方式便是

left: 50%;
top: 50%;
transform: translate(-50%, -50%);

那這個盒子是否隱式添加了寬度嗎?

測試

html

<body>
  <div class="container">
    <div class="box">
      <p>
        hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
      </p>
    </div>
  </div>
</body>

css

body{
  margin: 0;
}
.container {
  height: 200px;
  position: relative;
  margin: 50px auto;
  border-top: 2px solid #333;
  border-bottom: 2px solid #333;
}

.box {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}

頁面樣式
默認

這種很合理,並沒有出現上述的問題

驚喜出現了,當在句中加個空格
surprise

居然換行了,像是給了一個寬度似的,最后審查時,發現為960px(電腦是1920的屏,剛好一半) 網友

結論

  • 上述問題,確實是對的,但是有前提,若是連續沒有空格的句子,是不會出現的,要出現兩種方式

    • 句子中間添加空格
    • 給 當前元素添加 word-break: break-all,強行換行
  • 解決這類問題,便是不用這種方式進行居中形式,換另一種

      top: 0;
      left: 0;
      right: 0;
      bottom: 0
    

    使用上述解決方法

    如此便不會只有父元素的一半寬度了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM