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

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

如何將 div 緊緊包裹在圖像周圍,但如果分辨率大于內容區域,還要調整圖像大小以適合內容區域?

如何將 div 緊緊包裹在圖像周圍,但如果分辨率大于內容區域,還要調整圖像大小以適合內容區域?

繁星coding 2021-12-12 17:48:28
我正在嘗試構建具有特定要求的圖像查看器。它們如下:內容區域是一個網格區域。如果圖像大于內容區域,則應在不拉伸圖像的情況下將其包含在內。如果圖像小于內容區域,則它應該在內容區域內居中。必須有一個 div 始終緊緊包裹圖像。我在下面做了一個快速草圖,說明了肖像(頂行)和風景(底行)所需的行為。如果圖像的分辨率高于內容區域,則左列中的圖像是所需的行為。色標:白框:內容區域。紅框:圖像。藍色邊框:圖像環繞 div。到目前為止,我的主要方法是將環繞的 div 絕對定位在圖像周圍,這可以正常工作,直到我嘗試調整大小以適應行為。通常這會破壞緊密包裹的 div。我也可以使用 Javascript,但因為這是在此基礎上構建更多內容的基礎,所以我寧愿嘗試將其保留為 HTML 和 CSS。
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

您應該確保您的 div 只是假定內容的大小,img在這種情況下。所以不要使用絕對值。您提到使用grid,因此下面的示例將生成一個網格,其主要部分由20px填充包裹。然后只需使用maximg 上的值來確保它確實超出了網格框的大小。然后在網格框內居中:


const width = document.querySelector( '[name=width]' );

const height = document.querySelector( '[name=height]' );

const image = document.querySelector( 'img' );


function onchange(){

  

  image.src = `http://placehold.it/${width.value}x${height.value}`;

  image.style = '';

  

}


width.addEventListener( 'change', onchange );

height.addEventListener( 'change', onchange );


window.addEventListener( 'DOMContentLoaded', () => setTimeout( onchange, 100 ) );

body, html { height: 100%; }

body { padding: 0; margin: 0; }

main {

  display: grid;

  grid-template: "left top right" 20px "left main right" 1fr "left bottom right" 20px / 20px 1fr 20px;

  height: 100%;

}

main div {

  grid-area: main;

  border: 1px solid red;

  display: inline;

  align-self: center;

  justify-self: center;

}

main div img {

  max-width: 100%;

  max-height: 100%;

  display: block;

}

#inputs {

  position: absolute;

  top: 0;

  left: 0;

  transform: translateY(-100%);

  transition: transform .4s;

  width: 100%;

  padding: 10px;

  background: black;

  color: white;

}

body:hover #inputs {

  transform: translateY(0);

}

<main>

  <div>

    <img />

  </div>

</main>


<div id="inputs">

  <label>Width: <input name="width" value="200" type="number" /></label>

  <label>Height: <input name="height" value="200" type="number" /></label>

</div>


我已經包含了一些 javascript 以便您可以測試不同大小的圖像。我添加了img.style = ''一個在添加新圖像后觸發 CSS 重新計算,否則加載時其大小將不正確。


查看完整回答
反對 回復 2021-12-12
  • 1 回答
  • 0 關注
  • 290 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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