css – 如何保持一个div的包装,当div对齐它可以变化的宽度?

前端之家收集整理的这篇文章主要介绍了css – 如何保持一个div的包装,当div对齐它可以变化的宽度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的设置.一个包含标题和titleOptions的div.

标题有时很长,我希望它有一个省略号,而不是显示完整的标题.标题右边是titleOptions.这些可以有所不同.有时删除,编辑和移动,有时候几个,有时候没有. (标题宽度因此不能修正,因为titleOptions有所不同).

我如何一直有一行的标题和titleOptions.我不想要它永远包装,或者推动下面的titleOptions.

我喜欢titleOptions宽度是流畅的,因为这将允许更长的标题拥有更多的房地产.

这是一个更好的解释的小提琴:
http://jsfiddle.net/K8s3Z/1

解决方法

你可以使用 flexbox.
.titleBar {
    width:980px;
    overflow:hidden;
    border: 1px solid #EEE;
    margin-bottom:2em;
    display: -webkit-flex;
}
.title {
    border: 1px solid #DDD;
    white-space:nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    -webkit-flex: 1;
}

.titleOptions {
    white-space:nowrap;
    border: 1px solid #DDD;
}

fiddle(也需要其他语法和前缀等).

With JS if flexbox is not available

function getByClassName(collection,className) {
    var i = collection.length;
    var regexp = new RegExp('\\b' + className + '\\b');
    var returnSet = [];
    while ( i-- ) {
        if ( collection[i].className.match(regexp)  ) {
            returnSet.push(collection[i]);
        }
    }
    return returnSet;
}
if ( ! Modernizr.flexBox && ! Modernizr.flexBoxlegacy ) {
    var bars = document.querySelectorAll('.titleBar');
    for (var i = 0,l = bars.length; i < l; ++i) {
        var bar = bars[i];
        var divs = bar.getElementsByTagName('*');
        var optWidth = getByClassName(divs,'titleOptions')[0].offsetWidth;
        getByClassName(divs,'title')[0].style.width = bar.offsetWidth - optWidth + 'px';
    }
}

如果您不想使用Modernizr(由于某种原因),小提琴有自定义功能用于检查flexBox(基于Modernizr).只需将这些回应分配给小提琴中的当地对象Modernizr.另外,没有jQuery,以防你也厌恶.如果您使用它们,这两者都很容易替代.

原文链接:https://www.f2er.com/css/216538.html

猜你在找的CSS相关文章