对p:nth-child(2n),设置column-span:all跨越所有列,结果是奇数行跨列,这是为什么?

来源:10-6 CSS3 跨列设置column-span

慕仙5556764

2016-11-16 14:22

明明设置了p:nth-child(2n),为什么是奇数行跨越所有列?

写回答 关注

5回答

  • 小黍
    2016-12-23 16:17:24
    已采纳

    代码是没问题的,你要理解p:nth-child(2n)的意思,是p的父元素中为偶数的子元素,在这段代码中p元素父亲的第一个子元素是h2标签,第二个子元素是p标签,也就是p类标签的第一个,所以你会认为是奇数行跨列,你把选择器改成p:nth-of-type(2n)就会得到你想要的效果了



    慕仙5556...

    非常感谢!

    2016-12-25 10:15:53

    共 1 条回复 >

  • qq_莳萝泡菜_03359237
    2016-12-14 11:02:05

    是否可以上传一张运行结果的截图?

    在我这里运行没有问题,第一段p跨列,第二段p分成3列,第三段p跨列,第四段p分成3列,

  • 北京小前端
    2016-11-22 10:38:49

    找到问题了,你的style标签应该放在title标签后面,否则不能正常解析utf-8,现在可以正常偶数行显示了

    下面是修改后的代码

    <!doctype html>

    <html>

    <head>


    <meta charset="utf-8">

    <title>跨列设置column-span</title>

    <style>

    .columns {

      padding: 5px;

      border: 1px solid green;

      width: 900px;

      margin: 20px auto;

      

      -webkit-column-count:3;

      -moz-column-count:3;

      -o-column-count:3;

      -ms-column-count:3;

      column-count:3;

      

      -webkit-column-gap: 2em;

      -moz-column-gap: 2em;

      -o-column-gap: 2em;

      -ms-column-gap: 2em;

      column-gap: 2em;

      

      -webkit-column-rule: 3px gray solid;

      -moz-column-rule: 3px gray solid;

      -o-column-rule: 3px gray solid;

      -ms-column-rule: 3px gray solid;

      column-rule: 3px gray solid;

    }

    h2{

      background: green;

      padding: 10px;

      color: #fff;

    }


    h2,p:nth-child(2n){

      -webkit-column-span:all;

      -moz-column-span:all;;

      -o-column-span:all;;

      -ms-column-span:all;;

      column-span:all;;

    }

    </style>

    </head>

    <body>

    <div class="columns">

      <h2>我要分列显示</h2>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

    </div>

    </body>

    </html>


    慕仙5556...

    额,不好意思,style标签确实放错位置了。但是改正后问题依然存在,p标签下的子元素依旧显示奇数行跨列。截图上传不了,能否麻烦你运行下代码看看。谢了。

    2016-11-22 13:17:21

    共 1 条回复 >

  • 慕仙5556764
    2016-11-16 18:36:58

    <!doctype html>

    <html>

    <head>

    <style>

    <meta charset="utf-8">

    <title>跨列设置column-span</title>

    .columns {

      padding: 5px;

      border: 1px solid green;

      width: 900px;

      margin: 20px auto;

      

      -webkit-column-count:3;

      -moz-column-count:3;

      -o-column-count:3;

      -ms-column-count:3;

      column-count:3;

      

      -webkit-column-gap: 2em;

      -moz-column-gap: 2em;

      -o-column-gap: 2em;

      -ms-column-gap: 2em;

      column-gap: 2em;

      

      -webkit-column-rule: 3px gray solid;

      -moz-column-rule: 3px gray solid;

      -o-column-rule: 3px gray solid;

      -ms-column-rule: 3px gray solid;

      column-rule: 3px gray solid;

    }

    h2{

      background: green;

      padding: 10px;

      color: #fff;

    }


    h2,p:nth-child(2n){

      -webkit-column-span:all;

      -moz-column-span:all;;

      -o-column-span:all;;

      -ms-column-span:all;;

      column-span:all;;

    }

    </style>

    </head>

    <body>

    <div class="columns">

      <h2>我要分列显示</h2>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

      <p>为了能在Web页面中方便实现类似报纸、杂志那种多列排版的布局,W3C特意给CSS3增加了一个多列布局模块(CSS Multi Column Layout Module)。它主要应用在文本的多列布局方面。对于文本的多列布局,我想大家并不陌生,因为报纸和杂志上我们随处可见,这种布局在报纸和杂志上都使用了几十年了,但需要在Web页面上实现文本的多列布局,正如下图所示。</p>

    </div>

    </body>

    </html>


  • 北京小前端
    2016-11-16 18:24:56

    这个需要看一下代码,方法没有问题,可能是你的代码哪里出了bug

    慕仙5556...

    代码我贴在下面,来自课程“十天精通CSS3”的“CSS3 跨列设置column-span”

    2016-11-16 18:38:18

    共 1 条回复 >

十天精通CSS3

本课程为CSS3入门教程,深刻详解CSS3知识让网页穿上绚丽装备

242554 学习 · 2623 问题

查看课程

相似问题