Смещение по центру блока после CSS-перехода с масштабным преобразованием во всех браузерах (я сдаюсь)

Ссылка на подробную обработку:

Сдвиг изображения / переход после эффекта перехода CSS с масштабным преобразованием в Firefox

Я перепробовал все, что там предлагалось, но я все еще получаю правое смещение моего центрированного блока после того, как эффект перехода CSS завершен.

Кстати, мне действительно нужно transform:scale потому что я называю это в моем коде события изменения размера; Я не могу позволить себе время перерисовать контекст холста во время onresize,

Критический CSS:

#container {
    display:   block;

    margin:    0 auto;
    width:     30.00em;
    height:    22.50em;

    border:    0.30em solid #cd853f;

    overflow:  hidden;
}

В другом месте в моем $(window).bind('resize', function() {...} позвони, у меня есть:

theContainer.css("-webkit-transform", "scale(" + theScale + ", " + theScale + ")");

вместе с соответствующими префиксами для других браузеров.

Просто добавил мой первый jsFiddle ( http://jsfiddle.net/johnlove/yL2td3r2/)... когда вы уменьшаете размер окна по горизонтали, вы правильно видите масштаб граничного изображения. Но при дальнейшем уменьшении окна изображение с рамкой продолжает масштабироваться правильно, но вы также видите, что изображение с рамкой сдвигается вправо. ???

ИЗДАНО: 1 октября и 6 октября

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

Во всяком случае, это мои впечатления, FWIW.

Я нахожусь в точке, где я отказываюсь от этого для нескольких браузеров. Я пытался с помощью transform: translate and scale together с нулевым успехом.

1 ответ

Анализируя ваш JSFiddle, я попытался получить тот же результат с другим подходом. Я чувствую, что использование масштабных преобразований может быть не лучшим ответом, поэтому я попытался использовать только max-width и удалить javascript.

Если вам нужна специальная обработка для маленьких экранов, вы можете рассмотреть возможность использования медиа-запросов

http://www.w3schools.com/cssref/css3_pr_mediaquery.asp

Новый CSS:

/* #container ul li img */
 #container {
    margin: 0 auto;
    width: 30.00em;
    max-width: 90%;
    border: 0.30em solid #cd853f;
    overflow: hidden;
}
#container > ul {
    margin: 0;
    padding: 0;
    list-style: none;
}
#container img {
    /* match specs to #container */
    width: 100%;
    vertical-align: middle;
}

JSFiddle: http://jsfiddle.net/cv42bk0q/1/

Я надеюсь, что это помогает.

Ps.: Если возможно решить проблему, используя только CSS, я настоятельно рекомендую вам сделать это, так как код становится чище, и браузер рассчитывает все для вас, сокращая количество ошибок и повышая производительность.

Другие вопросы по тегам