1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/coldblue-picture-resize

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Изменение размера картинок

При написании HTML мы можем столкнуться с проблемой, когда размер картинки не соответствует пропорциям родительского контейнера. Это может привести к искажению пропорций изображения и ухудшению внешнего вида и восприятия. Я искал в интернете методы, которые используют другие пользователи, но ни один из них не позволил мне реализовать нужную функцию.

Затем я просматривал QQ пространство и обнаружил, что там используется макет для изображений, который даёт нужный мне эффект. Я понял, что сложно достичь желаемого результата, используя только чистый CSS. Поэтому я решил использовать jQuery и написал следующий пример кода для решения проблемы искажения размера картинки:

<body>
  <div class="post">
    <img src="hhh.jpg" />
  </div>

  <div class="post">
    <img src="bbb.jpg" />
  </div>
  
  <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
  <script type="text/javascript">
    $(document).ready(function() {
      $('.post img').each(function() {
        var praWidth = $(this).parent().width(); // ширина родительского контейнера
        var praHeight = $(this).parent().height(); // высота родительского контейнера
        var width = $(this).width(); // фактическая ширина картинки
        var height = $(this).height(); // фактическая высота картинки
        var ratio = width / height; // соотношение ширины и высоты картинки
        
        var toLeft = 0; // левое смещение
        var toTop = 0; // верхнее смещение
        width = praWidth; // устанавливаем ширину равной ширине текущего родительского контейнера
        height = width / ratio; // вычисляем высоту после пропорционального масштабирования
        if (height < praHeight) { // если высота картинки меньше высоты родительского контейнера
          height = praHeight; // устанавливаем высоту картинки равной высоте родительского контейнера
          width = height * ratio; // устанавливаем ширину картинки после пропорционального масштабирования
        }
        
        // получаем смещение
        if (width > praWidth) {
          toLeft = (width - praWidth) / 2;
        } else {
          toTop = (height - praHeight) / 2;
        }
        
        // устанавливаем пропорциональные размеры
        $(this).css("height", height);
        $(this).css("width", width);
        // устанавливаем смещение
        $(this).css("margin-left", -toLeft);
        $(this).css("margin-top", -toTop);
      });
    });
  </script>
</body>

Этот код позволяет изменять размер картинок таким образом, чтобы они соответствовали пропорциям родительских контейнеров.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Масштабирование изображения с сохранением пропорций, без деформации, аналогично эффекту изображений в QQ-пространстве. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/coldblue-picture-resize.git
git@api.gitlife.ru:oschina-mirror/coldblue-picture-resize.git
oschina-mirror
coldblue-picture-resize
coldblue-picture-resize
master