CSS3

CSS3 知识量:11 - 43 - 138

9.2 多列布局属性详解><

基本属性columns- 9.2.1 -

columns是CSS3多列布局的基本属性,同时是一个复合属性,可以同时定义多列的列数和每列的列宽。其语法为:

columns : column-width | column-count

参数简要说明如下:

  • column-width:定义多列中每列的宽度。

  • column-count:定义多列中的列数。

下面是一个使用columns属性的示例:

<!DOCTYPE html>
<html>
    <head>
        <title>多列布局</title>
        <meta charset="UTF-8">
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            .wrapper{
                padding: 5px;
                margin: 10px;
                width: 50em;
                border: 1px solid #ccc;
                /*设置多列布局*/
                columns: 9em 4;
            }
            h1{
                font-size: 1.5em;
                margin-bottom: 1em;
            }
            p{
                line-height: 2;
                font-size: 0.8em;
            }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <h1>Python发展历程</h1>
            <p>自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统管理任务
                的处理和Web编程。</p>
            <p>1995 年,Guido van Rossum 在弗吉尼亚州的国家创新研究公司(CNRI)继续他在 
                Python 上的工作,并在那里发布了该软件的多个版本。</p>
            <p>2000 年五月,Guido van Rossum和 Python 核心开发团队转到 BeOpen.com 并组
                建了 BeOpen PythonLabs 团队。 同年十月,BeOpen PythonLabs 团队转到 
                Digital Creations (现为 Zope Corporation)。 </p>
            <p>2001 年,Python 软件基金会 (PSF) 成立,这是一个专为拥有 Python 相关
                知识产权而创建的非营利组织。 Zope Corporation 现在是 PSF 的赞助成员。</p>
            <p>Python的创始人为荷兰人吉多·范罗苏姆 (Guido van Rossum)。1989年圣诞节
                期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,
                作为ABC语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,
                是取自英国20世纪70年代首播的电视喜剧《蒙提·派森的飞行马戏团》
                (Monty Python's Flying Circus)。ABC是由Guido参加设计的一种教学语言。
                就Guido本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。
                但是ABC语言并没有成功,究其原因,Guido认为是其非开放造成的。Guido决心在
                Python中避免这一错误。同时,他还想实现在ABC中闪现过但未曾实现的东西。</p>
            <p>就这样,Python在Guido手中诞生了。可以说,Python是从ABC发展起来,主要受到了
                Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合
                了Unix shell和C的习惯。</p>
            <p>Python  已经成为最受欢迎的程序设计语言之一。自从2004年以后,python的使用率
                呈线性增长。Python 2于2000年10月16日发布,稳定版本是Python 2.7。
                Python 3于2008年12月3日发布,不完全兼容Python 2。2011年1月,它被TIOBE
                编程语言排行榜评为2010年度语言。</p>
            <p>由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的
                研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。例如
                卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python
                语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的
                计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的
                科学计算扩展库就更多了,例如如下3个十分经典的科学计算扩展库:NumPy、SciPy
                和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。
                因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员
                处理实验数据、制作图表,甚至开发科学计算应用程序。2018年3月,该语言作者在
                邮件列表上宣布Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期
                之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。</p>            
        </div>
    </body>
</html>

显示的效果为:

uTools_1652316486545.png

列宽属性column-width- 9.2.2 -

列宽属性column-width类似于给列定义一个最小宽度(min-width)。其可以单独使用,也可以和多列布局的其他属性配合使用。其语法为:

column-width : auto | length

参数简要说明如下:

  • auto:默认值,元素多列的列宽由其他属性决定,例如配合使用column-count属性决定列宽。

  • length:使用固定值设置列宽,由数值和长度单位组成,但数值只能是正值。

下面是一个示例:

<!DOCTYPE html>
<html>
    <head>
        <title>多列布局</title>
        <meta charset="UTF-8">
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            .wrapper{
                padding: 5px;
                margin: 10px;
                width: 60%;
                border: 1px solid #ccc;
                /*设置多列布局*/
                column-width: 9em;
            }
            h1{
                font-size: 1.5em;
                margin-bottom: 1em;
            }
            p{
                line-height: 2;
                font-size: 0.8em;
            }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <h1>Python发展历程</h1>
            <p>自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统管理任务
                的处理和Web编程。(后续内容略...)</p>           
        </div>
    </body>
</html>

显示的效果为:

uTools_1652318403129.png

uTools_1652318424926.png

如上所示,随着浏览器窗口大小的变化,wrapper容器宽度也在变化,当容器太小时,无法容纳指定宽度的一列时,将由一列填满整个容器。当容器宽度大于指定宽度时,就会根据可容纳的列数进行自动多列布局,此时列数由容器大小决定。

列数的计算公式:列数=(容器宽度-列间距)/列宽。如果结果是小数,则舍弃小数部分。

列数属性column-count- 9.2.3 -

column-count属性用于给元素设置列数和允许的最大列数。其语法为:

column-count : auto | integer

参数简要说明如下:

  • auto:默认值,表示只有一列。

  • integer:正整数值,用于定义列数。

指定列数后,不管容器大小,总是显示固定的列数。

列间距属性column-gap- 9.2.4 -

column-gap属性用于设置列与列之间的间距。其语法为:

column-gap : normal | length

参数简要说明如下:

  • normal:默认值,表示由浏览器决定列间距,一般为1em。

  • length:由浮点数字和单位标识符组成的长度值来指定列间距。单位可用px、em等,值不能是负值。

列边框样式属性column-rule- 9.2.5 -

column-rule属性用于定义列与列之间的边框宽度、边框样式和边框颜色,类似于常用的border属性。注意:column-rule不占用任何空间位置,不影响元素宽度的计算。其语法为:

column-rule : column-rule-width | column-rule-style | column-rule-color

column-rule-width、column-rule-style和column-rule-color既可以做column-rule的值,又是column-rule属性派生出的3个列边框属性。

  • column-rule-width:用于定义列边框的宽度,默认值为medium,可以使用任意浮点数,但不能是负值,也可以使用关键字medium、thick和thin。

  • column-rule-style:用于定义列边框的样式,默认值为none。可使用关键字none、hidden、dotted、dashed、solid、double、groove、ridge、inset、outset。

  • column-rule-color:用于定义列边框的颜色,默认值为前景色的值,除了设置各种颜色,也可以设为透明色(transparent)。

下面是一个示例:

<!DOCTYPE html>
<html>
    <head>
        <title>多列布局</title>
        <meta charset="UTF-8">
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            .wrapper{
                padding: 5px;
                margin: 10px;
                width: 50em;
                border: 3px solid #5fa134;
                /*设置多列布局*/
                columns: 9em 4;
                /*设置列边框*/
                column-rule: 3px dashed #5fa134;
            }
            h1{
                font-size: 1.5em;
                margin-bottom: 1em;
            }
            p{
                line-height: 2;
                font-size: 0.8em;
            }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <h1>Python发展历程</h1>
            <p>自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统管理任务
                的处理和Web编程。(后续内容略...)</p>           
        </div>
    </body>
</html>

显示的效果为:

uTools_1652324729998.png

跨列属性column-span- 9.2.6 -

column-span用于定义一个分列元素中的子元素能否跨列。其语法为:

column-span : none | all

参数简要说明如下:

  • none:默认值,表示不跨越任何列。

  • all:表示跨越所有列。

下面是一个示例:

<!DOCTYPE html>
<html>
    <head>
        <title>多列布局</title>
        <meta charset="UTF-8">
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            .wrapper{
                padding: 5px;
                margin: 10px;
                width: 50em;
                border: 3px solid #5fa134;
                /*设置多列布局*/
                columns: 9em 4;
                /*设置列边框*/
                column-rule: 3px dashed #5fa134;
            }
            h1{
                font-size: 1.5em;
                margin-bottom: 1em;
                text-align: center;
                /*设置跨列属性*/
                column-span: all;
            }
            p{
                line-height: 2;
                font-size: 0.8em;
            }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <h1>Python发展历程</h1>
            <p>自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统管理任务
                的处理和Web编程。(后续内容略...)</p>           
        </div>
    </body>
</html>

显示的效果为:

uTools_1652326700776.png

列高度属性column-fill- 9.2.7 -

column-fill属性用于定义多列中每一列的高度是否统一,可以实现让所有列具有相同的高度效果。其语法为:

column-fill : auto | balance

参数简要说明如下:

  • auto:默认值,各列的高度根据内容的变化自动变化。

  • balance:各列的高度根据内容最多的一列的高度进行统一。