Подтвердить что ты не робот

Смещение видимого изображения в тегах <img> так же, как для фонового изображения

Использование plain <img> метки можно смещать изображение так же, как вы можете, с помощью фонового изображения и фонового положения CSS?

На странице есть основные изображения, и нет смысла иметь отдельные миниатюры, когда они будут загружены (таким образом увеличивая пропускную способность). Некоторые из изображений являются портретами, а некоторые - ландшафтными, однако мне нужно отображать миниатюры с одинаковым размером (и обрезать лишнее, когда он не соответствует желаемому соотношению сторон).

Хотя это возможно, используя другие теги и фоновые значения CSS, использование plain <img> теги будут предпочтительнее.

4b9b3361

Ответ 1

К сожалению нет, это невозможно только с тегом <img>. Есть два решения, которые я могу придумать для вашей проблемы:

background-image CSS

Создайте <div>, где изображение применяется как свойство background-image:

<div class="thumbnail" style="background: url(an-image.jpg) no-repeat 50% 50%"></div>

Обрезка CSS

Используйте свойство clip-path, чтобы отображать только часть изображения:

<!-- Clip properties are top, right, bottom, left and define a rectangle by its top-left and bottom-right points -->
<div style="clip-path: inset(10px 200px 200px 10px)">
    <img src="an-image.jpg">
</div>

Вы можете прочитать об этом в этой статье.

Ответ 2

Если вы поместите изображение в div, вы можете использовать поля для перемещения изображения вокруг. В этом конкретном примере используется логотип изображения спрайтов для домашней ссылки, которая изменяет положение при наведении. Вы также можете пропустить тег A и переместить изображение с помощью атрибута margin на #logo img.

HTML:

<div id="logo">
    <a href="#">
        <img src="img/src.jpg" />
    </a>
</div>

CSS:

#logo { 
    display: block; 
    float: left; 
    margin: 15px 0; 
    padding: 0;
    width: 350px; //portion of the image you wish to display
    height: 50px; //portion of the image you wish to display
    overflow: hidden; //hide the rest of the image
}
#logo img {
    width: 350px; 
    height: 100px; // you'll see this is 2x the height of the viewed image
    padding: 0; 
    margin: 0;
}
#logo a { 
    display: block; 
    float: left; 
    margin: 0; 
    padding: 0; 
}
#logo a:hover { 
    margin-top: -50px;  //move up to show the over portion of the image
}

Надеюсь, что это поможет!

Ответ 3

До

<img src="img.png"> Text, Links, Etc

После:

<img src="img.png" style="float:left; margin-bottom:-5px"> Text, Links, Etc

Ознакомьтесь с контекстом форматирования блоков на W3C.

Ответ 4

Некоторые изображения являются портретами, а некоторые - ландшафтными, однако мне нужно отображать миниатюры с одинаковым размером (и обрезать лишнее, когда он не соответствует желаемому соотношению сторон).

Используйте background-size: cover, который должен точно решить эту проблему → с помощью хорошая поддержка браузера!

И сделайте изображение для изображения (возможно, используя background-image как встроенный стиль):

<img style="background-image: url('img/foo.png')"/>