Вероятно, лучше всего обрезать изображения на стороне сервера независимо. С одной стороны, это единственный способ сократить время загрузки, и он обходит любые проблемы совместимости браузера или отключенные проблемы JavaScript. Кроме того, это относительно просто, особенно если вы можете использовать Imagemagick, и если вам нужно будет изменить размер изображения, качество будет лучше и стабильнее.
Но что касается ваших вопросов, да и да.
На самом деле вам вообще не нужен JavaScript, CSS должен делать эту работу (хотя я думаю, что это будет справедливо почти для всех манипуляций с макетом страницы ...). Ключ не должен использовать элемент <img>
, поскольку изменение размера также масштабирует и искажает изображение, прикрепленное к нему. Используйте любой общий элемент, даже <a>
, если вы хотите, чтобы изображение было кликабельным:
a#image {
display: block;
background-image: url(someimage.png);
background-position: 100px 250px;
width: 500px;
height: 700px;
}
Довольно простые вещи, не должно иметь особых проблем с совместимостью с браузером (хотя не цитируйте меня об этом).
Если вы хотите выделить область изображения, вы можете поместить элемент <span>
в изображение, содержащее элемент, и оформить его следующим образом:
a#image span {
position: absolute;
top: 30px;
left: 50px;
width: 10px;
height: 10px;
background-color: orange;
opacity: .7;
display: block;
}
/* And make sure the containing image element has the right 'position' */
a#image { position: relative; }
Все это не в моей голове, так что вам, возможно, придется поэкспериментировать, но идея есть.
Если вам не нужно изменять размер изображения или сохранять полосу пропускания, и вы ожидаете, что пользователи будут часто просматривать полноразмерное изображение, настройка таких стилей с помощью JavaScript может быть полезной. Тем не менее, в большинстве случаев манипуляции с изображениями на стороне сервера - это путь.