天天看點

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

我想顯示具有一定寬度和高度的URL中的圖像,即使它具有不同的大小比例。

是以我想調整大小(保持比例),然後将圖像剪切到我想要的大小。

我可以用html img屬性調整大小,我可以用background-image剪切。

我怎麼能兩個都做?

例:

這個圖檔:

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

大小800x600像素,我想顯示像200x100像素的圖像

使用img我可以調整圖像200x150px的大小:

style="width: 200px; height: 150px;"

src="http://i.stack.imgur.com/wPh0S.jpg">

這給了我這個:

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

并且使用background-image我可以剪切圖像200x100像素。

style="background-image:

url('https://i.stack.imgur.com/wPh0S.jpg');

width:200px;

height:100px;

background-position:center;">

給我:

我怎麼能兩個都做?

調整圖像大小,然後将其剪切為我想要的大小?

您可以使用兩種方法的組合,例如。

.crop {

width: 200px;

height: 150px;

overflow: hidden;

}

.crop img {

width: 400px;

height: 300px;

margin: -75px 0 0 -100px;

}

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

您可以使用負margin在内移動圖像。

請注意,如果在包含的圖像上設定position:relative,則需要在包含div上設定position:relative。如果你不這樣做,我發現IE實際上不會剪輯圖像。

也從.crop img類中删除高度

@ waqar-alamgir如果删除了高度聲明,它将無法工作

另請注意,使用css裁剪圖像時,使用者仍需下載下傳圖像。在将圖像發送給使用者之前,最好使用php和GD或其他圖像編輯庫來調整圖像大小并裁剪圖像。這一切都取決于你想要什麼,加載伺服器或使用者帶寬。

隻是其他人的注意事項:.crop高度和寬度定義了切割圖像最底部和最右邊部分的位置。 .crop img的高度和寬度将縮放圖像。 .crop img margin将平移圖像

@sanchothefat假設我們不知道圖像大小。我們需要使用Javascript指定保證金。對?這樣會導緻閃爍效果。你能想到其他任何解決方案嗎?

@Jeevan隐藏圖像,直到你的JS運作使用visibility:hidden;

@collindo是的。它會像一次渲染一樣工作。假設您在SERP中呈現某些内容,即在您鍵入時搜尋。而您正在使用它來顯示搜尋結果的圖像。是以,每次隐藏可見性時,圖像都會閃爍。

@Jeevan如果實施得好,它将适用于任何場景。例如,使用特殊類js-hide-until-loaded渲染圖像,然後在圖像onload事件觸發時删除該類。 οnlοad="doSomething(this); $(this).removeClass(js-hide-until-loaded)"

@collindo我最初關注的是它的可見性:隐藏,然後讓它可見。因為我們每隔一秒更新一次div就會引起輕微的閃爍。當文本在SERP中閃爍但圖像不同時,你無法說出來。

有沒有辦法讓裁剪的圖像響應? coding.smashingmagazine.com/2011/01/12/

@skibulk你隻需要在圖像上使用百分比寬度和最大寬度。同樣的方法仍然适用

使用CSS3,可以使用background-size更改background-image的大小,同時實作兩個目标。

css3.info上有很多例子。

根據您的示例實作,使用donald_duck_4.jpg。在這種情況下,background-size: cover;就是您想要的 - 它适合background-image覆寫包含的整個區域并剪切多餘的區域(取決于比率)。

.with-bg-size {

background-image: url('https://i.stack.imgur.com/wPh0S.jpg');

width: 200px;

height: 100px;

background-position: center;

background-size: cover;

}

Donald Duck!

css3 background-image background-size

很好的解決方案,但有一點需要注意的是,它與IE <9不相容(如果這對任何人都重要)。另外,我想提一下,如果你用cover替換cover為background-size,它會縮放,但不會裁剪圖像。

是否可以使用img标簽?

對于

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

标記,請檢視CSS圖像值和替換内容子產品級别3規範中的object-fit: cover和相關值。

你試過用這個嗎?

.centered-and-cropped { object-fit: cover }

我需要調整圖像大小,居中(垂直和水準)并裁剪它。

我很高興地發現,它可以在單個css-line中完成。

請檢視此處的示例:http://codepen.io/chrisnager/pen/azWWgr/?edit = 110

以下是該示例中的CSS和HTML代碼:

.centered-and-cropped { object-fit: cover }

original

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

object-fit: cover

style="border-radius:50%" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/3174/bear.jpg" alt="Bear">

謝謝,我認為這是最容易和最普遍的方式 - 但它似乎不适用于IE:/在這裡找到文檔:developer.mozilla.org/de/docs/Web/CSS/object-fit

IE11或EDGE(14)caniuse.com/#feat=object-fit不支援CSS3對象适配

@ eye-wonder它在Edge 16中得到支援,即将推出。如果它非關鍵并且節約使用,它可以在今天使用

在CSS3中,我們可以嘗試img + object-fit或div + background-image。到目前為止,根據我的經驗,背景圖像可用于适應更多條件。

截至目前,這也得到了Edge的支援(不知道從什麼時候開始)。

.imgContainer {

overflow: hidden;

width: 200px;

height: 100px;

}

.imgContainer img {

width: 200px;

height: 120px;

}

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

包含div基本上通過隐藏溢出來裁剪圖像。

img {

position: absolute;

clip: rect(0px, 140px, 140px, 0px);

}

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

謝謝sanchothefat。

我對你的答案有所改進。由于裁剪非常适合每個圖像,是以這個定義應該是HTML而不是CSS。

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

object-fit may help you, if you're playing with

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

tag

以下代碼将為您裁剪圖像。你可以玩對象

img {

object-fit: cover;

width: 300px;

height: 337px;

}

在裁剪類中,放置要顯示的圖像大小:

.crop {

width: 282px;

height: 282px;

overflow: hidden;

}

.crop span.img {

background-position: center;

background-size: cover;

height: 282px;

display: block;

}

html看起來像:

img {

position: absolute;

clip: rect(0px,60px,200px,0px);

}

執行個體:

https://jsfiddle.net/de4Lt57z/

HTML:

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

CSS:

.crop img{

width:400px;

height:300px;

position: absolute;

clip: rect(0px,200px, 150px, 0px);

}

說明:

此處圖像的大小由圖像的寬度和高度值調整。裁剪是由剪輯屬性完成的。

有關剪輯屬性的詳細資訊如下:

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

.crop {

float: left;

margin: .5em 10px .5em 0;

overflow: hidden;

position: relative;

border: 1px solid #ccc;

width: 150px;

height: 90px;

}

.crop img {

position: absolute;

top: -20px;

left: -55px;

}

您可以将img标記放在div标記中并執行這兩個操作,但我建議不要在浏覽器中縮放圖像。由于浏覽器具有非常簡單的縮放算法,是以它在大多數時間都是糟糕的工作。最好先在Photoshop或ImageMagick中進行縮放,然後将它提供給用戶端,非常漂亮。

我所做的是建立一個伺服器端腳本,它将在伺服器端調整大小并裁剪圖檔,這樣它就可以在interweb上發送更少的資料。

這是相當微不足道的,但如果有人有興趣,我可以挖掘并釋出代碼(asp.net)

CGI可能是最便攜的方法(并且帶寬有效),除非OP打算允許使用者通過Javascript執行自己的大小調整和裁剪。

像Filestack這樣的服務會為你做這件事。

它們會顯示您的圖檔網址,并允許您使用網址參數調整其大小。這很容易。

在調整為200x100但保持縱橫比後,您的圖像将如下所示

整個網址看起來像這樣

https://process.filestackapi.com/AhTgLagciQByzXpFGRI0Az/resize=width:200/crop=d:[0,25,200,100]/https://i.stack.imgur.com/wPh0S.jpg

但重要的是公平

resize=width:200/crop=d:[0,25,200,100]

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

哈哈哈好插頭

好的插頭可能 - 但同樣 - 一個很棒的服務(不,我沒有付錢說這個;-)) - 我真的剛剛注冊,它非常酷

如果您使用的是Bootstrap,請嘗試使用{ background-size: cover;

}作為,也可以給div一個類說,這樣它就變成了

div.example{

background-size: cover}

我最近需要這樣做。我想制作一個NOAA圖表的縮略圖連結。由于他們的圖表可以随時更改,我希望我的縮略圖随之改變。但是他們的圖表有一個問題:它頂部有一個巨大的白色邊框,是以如果你隻是縮放它來制作縮略圖,你最終會在文檔中留下無關的空白。

這是我解決它的方式:

http://sealevel.info/example_css_scale_and_crop.html

首先,我需要做一點算術。 NOAA的原始圖像是960×720像素,但前七十個像素是多餘的白色邊框區域。我需要一個348×172的縮略圖,頂部沒有額外的邊框區域。這意味着原始圖像的期望部分是720-70 = 650像素高。我需要将其縮小到172像素,即172/650 = 26.5%。這意味着需要從縮放圖像的頂部删除70 = 19行像素中的26.5%。

是以…

設定高度= 172 + 19 = 191像素:

高度= 191

将下邊距設定為-19像素(将圖像縮短為172像素高):

下邊距:-19px

将頂部位置設定為-19像素(向上移動圖像,使前19個像素行溢出并隐藏而不是底部):

頂部:-19px

生成的HTML如下所示:

style="border:0;position:relative;margin-bottom:-19px;top:-19px"

src="…">

正如您所看到的,我選擇了包含标簽的樣式,但您可以設定樣式。

這種方法的一個工件是,如果顯示邊框,則頂部邊框将丢失。因為無論如何我使用border = 0,這對我來說不是問題。

html圖像css設定大小,關于html:CSS顯示調整大小和裁剪的圖像

.crop {

width: 200px;

height: 150px;

overflow: hidden;

}

.crop img {

width: 100%;

}