如何隐藏select2上的溢出?

Posted

技术标签:

【中文标题】如何隐藏select2上的溢出?【英文标题】:How to hide overflow on select2? 【发布时间】:2013-05-08 02:57:46 【问题描述】:

我正在使用出色的select2 jquery 控件。 我正在尝试使用 CSS div 布局来模仿 3 单元格表格显示布局。 当 selected 大于当前 select2 宽度时,控件通常会用省略号隐藏溢出。在我的布局中,select2 控件显示了整个文本并超出了“表格”div 的范围。我希望它隐藏溢出 - 有没有办法做到这一点?而且我不反对完全移除 display:table 设计(除非它是用于实际的桌子)。

我是这样做的:

我希望它这样做:

我希望它填满可用空间,仅此而已。注意 - 我有一个 500px 的容器来复制问题,但实际上这将是一个百分比容器,并且问题发生在调整窗口大小时。

    <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/

【问题讨论】:

【参考方案1】:

尝试添加

table-layout: fixed;

到您的table 对象。除非您真的不想将绿色跨度设置为 100 像素。

这是jsfiddle example

编辑:如果您希望边“绿色”跨度调整大小/调整内容,您可以稍微作弊(我们可以,因为我们不是在处理真正的 html 表格),并且使用固定布局将.mid 设置为display:table(并将绿色宽度设置为更小 - 因为它用作最小宽度)。它会像魅力一样工作=)

jsfiddle for this solution

【讨论】:

正是我需要的!我为此苦苦挣扎了一段时间,这是一个如此简单的解决方案!谢谢! 我现有的 HTML 将表格 div 包装在 P 中,这会导致问题 - 任何想法 - jsfiddle.net/L5yKC 问题是在你的标记中你使用了类名row,但是在css中你调用了.table-row。我在上面的小提琴中修复了这个问题,但忘了提,抱歉。现在我再次修复它并更新了您的jsfiddle。但我很好奇你想用段落标签实现什么? =) 使用现有的 HTML。我们有很多行,就像这个例子一样,每一行都被一个 P 标签包围。 我明白了 =) 我以为你想用 p 标签做一些特殊的魔法 ;-) ...但现在看来你不想更改 html,所以我修正了错字在错误的一端......你应该在CSS中将它更改为.row,但我想你已经知道了。祝你好运! ^_^

以上是关于如何隐藏select2上的溢出?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏 select2 多搜索框

Knoucktout.js 可见绑定中的 Select2 只显示不隐藏

Select2:动态隐藏某些 optgroup

如何隐藏(不删除)select2 中的选项?

如何使用 select2 插件隐藏下拉列表中的选项?

Select2 使用 jquery 隐藏选项