检查Javascript是否存在滚动条?

时间:2011-04-26 22:42:59

标签: javascript css width scrollbar overflow

我正在构建一个有趣的小便笺应用程序,有时会发生这种情况:

(这是因为第一个单词比笔记的宽度宽。)

有没有办法检查滚动条是否与Javascript一起出现?如果我可以这样做,我可以调整音符大小,直到它包含没有滚动条的文本。

4 个答案:

答案 0 :(得分:7)

如果CSS3属性对于其容器来说太大,它将会破坏一个单词:

#selector {  
    word-wrap: break-word;  
}

word-wrap: normal;切换样式

这基本上适用于所有浏览器,不管你信不信,对IE5的支持可以追溯到IE5。感谢Louis Lazaris的帖子Word-Wrap: A CSS3 Property That Works in Every Browser

答案 1 :(得分:2)

这是一种完成OP要求的方法,如果它有一个滚动条直到不再有一个div来扩大div:

var autoWiden = function ( elem ) {
    var checkForScroll = function() {
            var tsl;

            elem.scrollLeft += 10; // try to scroll
            tsl = elem.scrollLeft; // will be 0 if no scroll bar
            elem.scrollLeft = 0;   // reset scroll

            return tsl;
        };

    while (checkForScroll() > 0) {
        elem.style.width = (elem.offsetWidth + 10) + 'px';
    }
};

See example →

答案 2 :(得分:2)

为了获得最佳的跨浏览器支持,我建议使用自动换行方法,并为元素提供设置宽度(100%或某些像素宽度),以使其不会变宽。这应该提供最好的解决方案。

你也可以设置overflow-x:hidden;简单地隐藏滚动条,但它在IE7 / 8中不起作用,也会导致溢出的文本不显示而不是包装,这可能不是你想要的。

答案 3 :(得分:0)

我在类似情况下所做的是将文本附加到隐藏可见性的临时元素,测量它,如果太大,则执行某些操作来解决它(可能包括手动包装插入BR的文本,或者只是加宽你最终将文本放入的最后一个元素)。这比使用自动换行提供了更多的控制:break-word;