---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/examples/cases/hiddendiv.md
---
# Размещение в скрытом контейнере

<iframe id="LIVE-EXAMPLE" style="width:100%;height: 400px;border-radius: 8px;border: 1px solid rgba(92, 94, 102, 0.14);" frameBorder="0" src="https://yastatic.net/s3/front-maps-static/maps-front-jsapi-v2-0/examples/1/out/s3-cases/ru/hiddendiv/index.html" allow="fullscreen"></iframe>

<a target="_blank" rel="noopener noreferrer" style="display: inline-block;margin-top: 10px;cursor: pointer;border-radius: 4px;padding: 9px 12px;background: #151515;color: white;text-decoration: none;font-weight: 500" href="https://codesandbox.io/p/sandbox/mt7yh8?file=index.html">Open in CodeSandbox</a>

<div id="doc">
    <div id="references">
        <a href="https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ready">ready</a>,
        <a href="https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Map">Map</a>,
        <a href="https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.Container">map.Container</a>
    </div>
    <p>
        Карта заполняет своим содержимым контейнер, в котором она размещается.
        В момент инициализации карта должна иметь возможность определить
        размеры контейнера.
    </p>
    <p>
        Если в момент инициализации карты контейнер еще не сформирован,
        размеры карты будут нулевыми (0x0), т. е. она фактически не будет отображена.
    </p>
    <p>
        Неотображение карты в неактивной вкладке jQuery.UI происходит из-за того, что
        для скрытия вкладки используется CSS-свойство <code>display: none</code>.
        Элемент, для которого выставлено <code>display: none</code>, не знает свои реальные размеры.
        Самое простое решение - в момент переключения вкладки инициировать пересчет размеров карты вызовом команды <a href="https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/map.Container#fitToViewport">fitToViewport()</a>.
        Также можно обойти проблему в примере (используется jQuery.UI), если использовать альтернативный способ скрытия
        вкладки, переопределив стандартные классы jQuery.UI:
    </p>
    <p>
        .ui-tabs .ui-tabs-hide {
        position: absolute !important;
        left: -10000px !important;
        display: block !important;
        }
    </p>
</div>

{% list tabs %}

-   index.html

    ```html
    <!DOCTYPE html>

    <html>
        <head>
            <title>Примеры. Размещение карты в скрытом контейнере</title>
            <meta
                http-equiv="Content-Type"
                content="text/html; charset=utf-8"
            />
            <!--
            Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
            Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
        -->
            

            <!--
            Основная библиотека JQuery.
            Яндекс предоставляет хостинг JavaScript-библиотек
        -->
            

            <!-- Библиотека JQuery.UI. Используем для работы со вкладками -->
            

            <!-- CSS JQuery.UI. Используем для отрисовки вкладок -->
            <link
                rel="stylesheet"
                href="https://yandex.st/jquery-ui/1.8.15/themes/humanity/jquery.ui.all.min.css"
                type="text/css"
            />

            
        </head>

        <body>
            <div id="tabs" style="width: 100%">
                <ul>
                    <li><a href="#tab-1">Описание</a></li>
                    <li><a href="#tab-2">Карта</a></li>
                </ul>
                <div id="tab-1">
                    <p>Во вкладке Карта находится карта Москвы</p>
                </div>
                <div
                    id="tab-2"
                    style="width: 100%; height: 250px; padding: 0;"
                ></div>
            </div>
        </body>
    </html>
    ```

-   hiddendiv.js

    ```js
    ymaps.ready(init);

    var myMap;

    function init() {
        // Инициализация вкладок.
        // После исполнения команды tabs() tab-2 получит style='display:none'.
        // Карта будет инициализирована, но будет иметь нулевой размер.
        // В данном случае это хорошо, так как невидимая карта не будет загружать невидимые тайлы.
        $("#tabs").tabs();
        myMap = new ymaps.Map("tab-2", {
            center: [55.76, 37.64], // Москва
            zoom: 10,
        });

        // В момент показа новой вкладки будем пересчитывать размер карты.
        // Карта примет максимально возможные значения при активации ее таба
        // и нулевые, как только будет выбран первый таб.
        // Подписываемся на событие 'tabsshow' (а не 'tabselect',
        // так как требуется, чтобы элемент с картой уже был виден).
        $("#tabs").bind("tabsshow", function (event, ui) {
            myMap.container.fitToViewport();
        });
    }
    ```

{% endlist %}
