Как скрыть переполнение на select2?

Я использую отличный select2 элемент управления jquery.
Я пытаюсь имитировать 3 ячейки макет отображения таблицы с использованием макета div CSS.
Когда выбранное больше, чем текущая ширина select2, элемент управления обычно скрывает переполнение с помощью многоточия. В моем макете элемент управления select2 показывает весь текст и выходит за пределы таблицы div. Вместо этого я хотел бы скрыть переполнение - есть ли способ сделать это? И я не против полного удаления дизайна display:table (если только он не предназначен для реальной таблицы).

Мой делает так:

введите здесь описание изображения

И я хочу, чтобы он сделал это:

введите здесь описание изображения

Я хочу, чтобы он заполнил доступное пространство и не более того. Примечание. У меня есть контейнер размером 500 пикселей для воспроизведения проблемы, но на практике это будет контейнер percenatge, и проблема возникает при изменении размера окна.

    <link href="http://ivaynberg.github.io/select2/select2-3.3.2/select2.css" rel="stylesheet"/>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    <script src="http://ivaynberg.github.io/select2/select2-3.3.2/select2.js"></script>
    

    <style> 
        .container { width: 500px; margin: 0 auto; border: 5px solid black; }

        .table  {
            display:table;
            width: 100%;
        }
        .table-row {
            display: table-row;
            width: 100%;
        }
        .left, .right {
            display:table-cell;
            width: 100px;
            background-color: green;
        }
        .mid {
            display:table-cell;
            width: 100%;
            background-color: red;
        }
        .mid > *  {
            width: 100%;
        }  
    </style>


</head>
<body>

        
        <div class="container">
            <div class="table">
                <div class="row">
                    <span class="left">AAAA</span>
                    <span class="mid">
            
                        <input type="hidden" id="e5" />
                        
                    </span>
                    <span class="right">ZZZZ</span>
                </div>
            </div>
        </div>
            

        <script>

            $("#e5").select2({
                minimumInputLength: 0,
                query: function (query) {
                    var data = { results: [] };
                    data.results.push({ id: 1, text: 'abcdefg' });
                    data.results.push({ id: 2, text: 'abcdefghijklmn' });
                    data.results.push({ id: 3, text: 'abcdefghijklmnopqrstuv' });
                    data.results.push({ id: 4, text: 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz' });
                    
                    query.callback(data);
                }
            });

        </script>


</body>
</html>

JSFIDDLE: http://jsfiddle.net/264FU/


person user210757    schedule 13.05.2013    source источник


Ответы (1)


просто попробуйте добавить

table-layout: fixed;

к вашему объекту table. Если вы действительно не хотите устанавливать зеленые промежутки на 100 пикселей.

вот пример jsfiddle

РЕДАКТИРОВАТЬ: Если вы хотите, чтобы боковые "зеленые" промежутки изменялись в размере/подстраивались под содержимое, вы можете немного схитрить (мы можем, так как мы не имеем дело с настоящей HTML-таблицей) и установить .mid на display:table с фиксированным макетом (и установкой ширины зеленых на что-то меньшее, поскольку оно служит минимальной шириной). И это будет работать как шарм =)

jsfiddle для этого решения

person Martin Turjak    schedule 13.05.2013
comment
Именно то, что мне было нужно! Я боролся с этим некоторое время и такое простое решение! Благодарю вас! - person user210757; 14.05.2013
comment
Мой существующий HTML заключает div таблицы в P, и это вызывает проблемы - любые идеи - jsfiddle.net/L5yKC - person user210757; 14.05.2013
comment
Проблема в том, что в вашей разметке вы используете имя класса row, но в css вы вызываете .table-row. Я исправил это в скрипте выше, но забыл упомянуть, извините. Теперь я исправил это снова и обновил ваш jsfiddle. Но мне любопытно, чего вы пытаетесь достичь с помощью тега абзаца? знак равно - person Martin Turjak; 14.05.2013
comment
работа с существующим HTML. у нас есть много строк, как в этом примере, и каждая строка окружена тегом P. - person user210757; 14.05.2013
comment
Ясно =) Я думал, что вы хотите сделать какую-то особую магию с тегом p ;-) ... Но теперь, похоже, вы не хотите менять html, поэтому я исправил опечатку не в том конце ... и вы должны изменить его на .row в CSS, но я думаю, вы уже поняли это. Удачи на странице! ^_^ - person Martin Turjak; 14.05.2013