Отключить зум на div, но позволит увеличить на странице (альтернативная див)

есть ли способ отключить масштабирование div или каких-либо конкретных элементов на веб-сайте? Например, если я хотел, чтобы страница была масштабируемой, но не #Header div, есть ли способ сделать одну масштабируемую, а другую-не масштабируемой?

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

Я знаю, что вы можете использовать этот код, чтобы отключить масштабирование в целом:

<meta content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;' name='viewport' />

4 ответов


вы не можете сделать это без умных писак.

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

header {
    position: fixed;
    ...
}

@media only screen and (max-width: 720px) {
    header {
        position: absolute;
    }
}

этот код позволяет position: absolute когда ширина дисплея меньше или равна 720px, а заголовок становится частью страницы, а не фиксируется сверху.


Я не думаю, что вы можете сделать это прямо. Одним из возможных вариантов было бы обнаружение масштабирования через события js и масштабирование элементов соответственно.

другой вариант - "сломать" клавишу CTRL, чтобы отключить масштабирование на вашем сайте, но это просто большой нет-нет.


короче, вы, конечно, можете это сделать.

вы можете ловить события изменения размера окна и изменять размер плавающего div в соответствии с изменением dpi, рассчитанным из различных новых атрибутов окна и внутренней ширины и высоты.

Итак, когда вы увеличить, вы хотите shrink плавающий div, поэтому он сохраняет исходный dpi, и наоборот.

Это будет эпическая скрипка-пересмотрите этот ответ в ближайшее время, так как мне, возможно, придется сделать вещь. Уже замечаю некоторые кросс-браузерные несоответствия с dpi, так что да, весело.


Если вы используете angular, есть способ дать один идентификатор вашему заголовку div, а затем написать следующий код в контроллере:

document.getElementById("viewport").setAttribute('content','user-scalable=yes, width=device-width, minimum-scale=1, maximum-scale=1');

я использовал в моем проекте, и он работал хорошо..