css - 如何避免 CSS 列中的孤立标题?

标签 css jquery-plugins multiple-columns

当使用 CSS3 列时,我可以使用什么策略来确保 h1-h6 标题永远不会在列底部孤立?

Here's a JSFiddle demo .调整宽度,您会发现尽管存在以下旨在阻止标题后分页的 CSS 属性,但在大多数浏览器中它仍然会发生。

.columnize h1,
.columnize h2,
.columnize h3,
.columnize h4 {
                break-after: avoid;
           page-break-after: avoid;
 -webkit-column-break-after: avoid;
}

我什至花时间弄乱了 orphans 属性,但当它起作用时,出于某种原因,它只适用于段落行,而不适用于标题。

orphans: 2;

这对我来说是一个 CSS 列的交易破坏者,因为文本通常有标题。有没有人找到任何解决方案?

最佳答案

不太可能是普遍的需求/需求,但您偶然发现了我每天都要面对的一个领域。我们的撰稿人非常重视零孤儿。我制作了一个脚本来处理这个问题。

你需要有 jQuery,大多数网站都有...你只需要在文档就绪函数中运行它。开始了:

/** ORPHAN SLAYER - The world's most irrelevant jQuery plugin **/
var orphanSlayer = {

    targets     : '#your-selector, .another-selector', // These are your selectors, regions where you want the orphans dealt with.
    timer       : 1000 // Delay before running this script, in milliseconds (gives precedence to other scripts)

}

setTimeout(function(){

    $(orphanSlayer.targets).each(function(){

        orphanSlayer.content = $(this).html().split(' ');
        orphanSlayer.last = orphanSlayer.content[orphanSlayer.content.length - 2] + ' ' + orphanSlayer.content[orphanSlayer.content.length - 1];
        orphanSlayer.content[orphanSlayer.content.length - 2] = orphanSlayer.last;
        orphanSlayer.content.splice((orphanSlayer.content.length - 1), 1);
        orphanSlayer.content = orphanSlayer.content.join(' ');

        $(this).html(orphanSlayer.content); 

    });

}, orphanSlayer.timer );

只需将其复制粘贴到您的文档就绪函数中,然后修改您看到代码注释的位置,就可以开始了。

关于css - 如何避免 CSS 列中的孤立标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24662701/

相关文章:

javascript - 将宽度和高度设置为 div 的百分比

jquery - 使用 jQuery 格式化源代码

android-studio - 使用光标键选择 IntelliJ 列

javascript - 当 CSS3 列溢出时重复 HTML 标题

html - border-radius 的圆 Angular 只影响一侧

html - 如何在输入元素中模拟谷歌灰色建议文本?

css - 为什么 "checkout"按钮在 ie7 中从左下角跑到左上角?

javascript - 在没有选择器的情况下创建 jQuery 插件的问题

javascript - 管理 jQuery 插件

linux - 两个文件与 while .sh 的比较