亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

CSS網格適合一行的列寬

CSS網格適合一行的列寬

阿波羅的戰車 2022-10-27 16:27:05
我有一個三列的兩行網格。每行的中間列都有一個文本。第一行的中間列需要適合文本。但是當第二行有較長的文本時,第一行的中間列將不適合文本。上圖更好的解釋:當第一行的文本較長時,它會正確匹配。但是當第二行的文本比第一行的文本長時,第一行的列將不適合文本。如何使第一行中間列的寬度適合文本?
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

如果您希望頂部文本根據父元素的寬度(已被.second-text-middle內部文本擴展)擴展,您可以使用簡單的 JavaScript。


在這里,我們可以檢查 和 的寬度,#n1并.first-text-middle增加 的font size: n%;,#n1直到它適合父級。


fitWidth(); 


window.addEventListener("resize", function() {

  fitWidth();  

});


function fitWidth() {

  let first = document.querySelector('.first-text-middle');

  let firstText = document.getElementById('n1');

  let textSize = 100; // we will use it like a base 100% font-size later

  

  // set font size to '#n1'  

  firstText.style.cssText = 'font-size:' + textSize + '%';


  while (first.clientWidth - 2 >= firstText.offsetWidth) {

    textSize = textSize + 1; //increments font size by 1% each loop

    firstText.style.cssText = 'font-size:' + textSize + '%';

    // basically in DOM you see only result of the very last loop of this 'while' statment    

  }


}

html,

body,

.grid-container {

  height: 100%;

  margin: 0;

}


.grid-container {

  justify-content: center;

  display: grid;

  grid-template-columns: 10vmin min-content 10vmin;

  grid-template-rows: 1fr 1fr 1fr;

  gap: 0px 0px;

  grid-template-areas: "left middle right ""left first-text-middle right""second-text-left second-text-middle second-text-right";

}


.left {

  border: 1px solid red;

  grid-area: left;

  text-align: right;

}


.right {

  border: 1px solid red;

  grid-area: right;

}


.middle {

  border: 1px solid red;

  grid-area: middle;

}


.second-text-left {

  border: 1px solid red;

  grid-area: second-text-left;

}


.second-text-right {

  border: 1px solid red;

  grid-area: second-text-right;

}


.first-text-middle {

  border: 1px solid red;

  text-align: center;

  grid-area: first-text-middle;

  align-self: stretch;

  vertical-align: top;

}


.second-text-middle {

  border: 1px solid red;

  text-align: center;

  grid-area: second-text-middle;

  align-self: stretch;

  vertical-align: top;

  overflow: hidden;

}

<div class="grid-container">

  <div class="left"></div>

  <div class="middle"></div>

  <div class="right"></div>

  <div class="left"></div>

  <div class="first-text-middle">

    <span id="n1">Lorem</span>

  </div>

  <div class="second-text-left "></div>

  <div class="second-text-middle">

    <span id="n3">LoremIps</span>

  </div>

  <div class="second-text-right"></div>

</div>


查看完整回答
反對 回復 2022-10-27
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號