CSS wyświetla obraz o zmienionym rozmiarze i przyciętym rozmiarze
Chcę pokazać obraz z adresu URL o określonej szerokości i wysokości, nawet jeśli ma inny stosunek wielkości. Chcę więc zmienić rozmiar (zachowując proporcje), a następnie przyciąć obraz do żądanego rozmiaru.
Mogę zmienić rozmiar za pomocą właściwości html img
i mogę ciąć za pomocą background-image
.
Jak mogę zrobić jedno i drugie?
Przykład:
To zdjęcie:
Ma rozmiar 800x600
pikseli i chcę pokazać jak obraz 200x100
piksele
Z img
mogę zmienić rozmiar obrazu 200x150px
:
<img
style="width: 200px; height: 150px;"
src="http://i.stack.imgur.com/wPh0S.jpg">
To daje mi to:
<img style="width: 200px; height: 150px;" src="/images/content/493296/5a3f6fd7a849b644649991b3943216d5.jpg">
I z background-image
mogę wyciąć obraz 200x100
pikseli.
<div
style="background-image:
url('/images/content/493296/5a3f6fd7a849b644649991b3943216d5.jpg');
width:200px;
height:100px;
background-position:center;"> </div>
Daje mi:
<div style="background-image:url('/images/content/493296/5a3f6fd7a849b644649991b3943216d5.jpg'); width:200px; height:100px; background-position:center;"> </div>
Jak mogę zrobić jedno i drugie?
Zmienić rozmiar obrazu, a następnie wyciąć go rozmiar chcę?
19 answers
Można użyć kombinacji obu metod np.
.crop {
width: 200px;
height: 150px;
overflow: hidden;
}
.crop img {
width: 400px;
height: 300px;
margin: -75px 0 0 -100px;
}
<div class="crop">
<img src="https://i.stack.imgur.com/wPh0S.jpg" alt="Donald Duck">
</div>
Możesz użyć negative margin
, aby przenieść obraz w <div/>
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-28 14:14:10
Z CSS3 można zmienić rozmiar background-image
z background-size
, realizacja obu celów naraz.
Istnieje kilka przykładów na css3.info .
Zaimplementowano na podstawie przykładu , używając donald_duck_4.jpg. W tym przypadku {[4] } jest dokładnie tym, czego chcesz-pasuje do background-image
, aby pokryć cały obszar zawierający <div>
i zacisnąć nadmiar (w zależności od ratio).
.with-bg-size {
background-image: url('https://i.stack.imgur.com/wPh0S.jpg');
width: 200px;
height: 100px;
background-position: center;
/* Make the background image cover the area of the <div>, and clip the excess */
background-size: cover;
}
<div class="with-bg-size">Donald Duck!</div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-29 09:25:27
Próbowałeś tego użyć?
.centered-and-cropped { object-fit: cover }
Musiałem zmienić rozmiar obrazu, wyśrodkować go (zarówno w pionie, jak i w poziomie), a następnie przyciąć.
Byłem szczęśliwy, że można to zrobić w jednej linii css. Sprawdź przykład tutaj: http://codepen.io/chrisnager/pen/azWWgr/?editors=110
Oto kod CSS
i HTML
z tego przykładu:
.centered-and-cropped { object-fit: cover }
<h1>original</h1>
<img height="200" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/3174/bear.jpg" alt="Bear">
<h1>object-fit: cover</h1>
<img class="centered-and-cropped" width="200" height="200"
style="border-radius:50%" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/3174/bear.jpg" alt="Bear">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-01 14:17:27
.imgContainer {
overflow: hidden;
width: 200px;
height: 100px;
}
.imgContainer img {
width: 200px;
height: 120px;
}
<div class="imgContainer">
<img src="imageSrc" />
</div>
Zawierający div z zasadniczo przyciąć obraz, ukrywając przepełnienie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 16:57:52
img {
position: absolute;
clip: rect(0px, 140px, 140px, 0px);
}
<img src="w3css.gif" width="100" height="140" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 16:57:37
Dzięki sanchothefat.
Mam ulepszenie twojej odpowiedzi. Ponieważ crop jest bardzo dopasowany do każdego obrazu, definicje te powinny znajdować się w HTML zamiast CSS.<div style="overflow:hidden;">
<img src="img.jpg" alt="" style="margin:-30% 0px -10% 0px;" />
</div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-28 17:50:03
img {
position: absolute;
clip: rect(0px,60px,200px,0px);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-12 04:51:40
object-fit
może Ci pomóc, jeśli grasz z<img>
tag
Poniższy kod przyciąć obraz dla Ciebie. Możesz bawić się object-fit
img {
object-fit: cover;
width: 300px;
height: 337px;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-14 06:23:50
Przykład Na Żywo: https://jsfiddle.net/de4Lt57z/
HTML:
<div class="crop">
<img src="example.jpg" alt="..." />
</div>
CSS:
.crop img{
width:400px;
height:300px;
position: absolute;
clip: rect(0px,200px, 150px, 0px);
}
Explanation: Tutaj obraz jest zmieniany o szerokość i wysokość wartości obrazu. Kadrowanie odbywa się za pomocą właściwości klipu.
Aby uzyskać szczegółowe informacje na temat właściwości clip: http://tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-17 03:21:10
W klasie crop umieść Rozmiar obrazu, który chcesz wyświetlić:
.crop {
width: 282px;
height: 282px;
overflow: hidden;
}
.crop span.img {
background-position: center;
background-size: cover;
height: 282px;
display: block;
}
Html będzie wyglądał następująco:
<div class="crop">
<span class="img" style="background-image:url('http://url.to.image/image.jpg');"></span>
</div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-25 19:52:03
<p class="crop"><a href="http://templatica.com" title="Css Templates">
<img src="img.jpg" alt="css template" /></a></p>
.crop {
float: left;
margin: .5em 10px .5em 0;
overflow: hidden; /* this is important */
position: relative; /* this is important too */
border: 1px solid #ccc;
width: 150px;
height: 90px;
}
.crop img {
position: absolute;
top: -20px;
left: -55px;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 17:51:34
Spróbuj użyć właściwości clip-path
:
Właściwość clip-path umożliwia przycinanie elementu do podstawowego kształtu lub do źródło SVG.
Uwaga: właściwość clip-path zastąpi przestarzały klip własność.
img {
width: 150px;
clip-path: inset(30px 35px);
}
<img src="http://i.stack.imgur.com/wPh0S.jpg">
Więcej przykładów tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-05 07:58:29
Istnieją usługi takie jak Filestack, które zrobią to za Ciebie.
Pobierają adres URL Twojego obrazu i pozwalają zmienić jego rozmiar za pomocą parametrów url. To całkiem proste.
Twój obraz wyglądałby tak po zmianie rozmiaru do 200x100, ale zachowując proporcje
Cały url wygląda tak
https://process.filestackapi.com/AhTgLagciQByzXpFGRI0Az/resize=width:200/crop=d:[0,25,200,100]/https://i.stack.imgur.com/wPh0S.jpg
Ale ważną częścią jest tylko
resize=width:200/crop=d:[0,25,200,100]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-25 19:53:15
Można umieścić znacznik img w znaczniku div I zrobić oba, ale polecam przed skalowaniem obrazów w przeglądarce. Przez większość czasu robi kiepską robotę, ponieważ przeglądarki mają bardzo uproszczone algorytmy skalowania. Lepiej zrobić skalowanie w Photoshopie lub ImageMagick najpierw, a następnie podać go Klientowi ładnie i ładnie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-29 20:40:32
To, co zrobiłem, to stworzenie skryptu po stronie serwera, który zmieni rozmiar i przycina obraz na końcu serwera, aby wysyłał mniej danych przez interweb.
To dość banalne, ale jeśli ktoś jest zainteresowany, mogę wykopać i wrzucić kod (asp.net)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-29 20:46:05
<div class="crop">
<img src="image.jpg"/>
</div>
.crop {
width: 200px;
height: 150px;
overflow: hidden;
}
.crop img {
width: 100%;
/*Here you can use margins for accurate positioning of cropped image*/
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-03 17:05:07
Jeśli używasz Bootstrap, spróbuj użyć { background-size: cover;
}
dla <div>
może dać div klasy say <div class="example" style=url('../your_image.jpeg');>
więc staje się
div.example{
background-size: cover}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-14 19:32:37
Musiałem to zrobić niedawno. Chciałem zrobić miniaturkę-link do wykresu NOAA. Ponieważ ich Wykres może się zmienić w dowolnym momencie, chciałem, aby moja Miniatura zmieniła się wraz z nim. Ale jest problem z ich wykresem: ma ogromną białą obwódkę u góry, więc jeśli przeskalujesz ją, aby utworzyć miniaturę, skończysz z obcymi białymi spacjami w dokumencie.
Oto Jak to rozwiązałem:
Http://sealevel.info/example_css_scale_and_crop.html
Najpierw musiałem zrobić trochę arytmetyki. Oryginalny obraz z NOAA ma wymiary 960 × 720 pikseli, ale najwyższe siedemdziesiąt pikseli to zbędny biały obszar graniczny. Potrzebowałem miniatury 348 × 172, bez dodatkowego obszaru granicznego na górze. Oznacza to, że żądana część oryginalnego obrazu ma wysokość 720-70 = 650 pikseli. Musiałem to przeskalować do 172 pikseli, czyli 172 / 650 = 26,5%. Oznaczało to, że 26,5% z 70 = 19 wierszy pikseli należało usunąć od góry skalowanego obraz.
Więc ...
-
Ustaw wysokość = 172 + 19 = 191 pikseli:
Wysokość=191
-
Ustaw dolny margines na -19 pikseli (skracając obraz do wysokości 172 pikseli):
Margin-bottom: - 19PX
-
Ustaw górną pozycję na -19 pikseli (Przesunięcie obrazu w górę, tak aby górne wiersze 19 pikseli przepełniały się i były ukryte zamiast dolnych):
Top:-19PX
The wynikowy HTML wygląda tak:
<a href="…" style="display:inline-block;overflow:hidden">
<img width=348 height=191 alt=""
style="border:0;position:relative;margin-bottom:-19px;top:-19px"
src="…"></a>
Jak widzisz, wybrałem styl zawierający znacznik , ale zamiast tego możesz stylować Jednym z artefaktów tego podejścia jest to, że jeśli pokażesz granice, górna granica będzie brakować. Ponieważ i tak używam border = 0, nie było to dla mnie problemem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-22 20:52:50
Możesz użyć usługi Kodemu Zmiana rozmiaru obrazu . Możesz zmienić rozmiar dowolnego obrazu za pomocą połączenia http. Może być używany w przeglądarce lub w aplikacji produkcyjnej.
- Załaduj obraz gdzieś, gdzie wolisz (S3, imgur itp.) [5]} Podłącz go do dedykowanego adresu URL API (z naszego pulpitu nawigacyjnego)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-24 06:22:24