CSS控制布局的属性display、 column属性创建多列
2017-02-06 20:34
441 查看
笔记
display是CSS中最重要的用于控制布局的属性。每个元素都有一个默认的 display 值,这与元素的类型有关。对于大多数元素它们的默认值通常是
block或
inline。一个
block 元素通常被叫做块级元素。一个 inline 元素通常被叫做行内元素。
block
<div>div是一个标准的块级元素。一个块级元素会新开始一行并且尽可能撑满容器。其他常用的块级元素包括
p、
form和HTML5中的新元素:
header、
footer、
section等等。
</div>
inline
span是一个标准的行内元素。一个行内元素可以在段落中 <span> 像这样 </span> 包裹一些文字而不会打乱段落的布局。
a元素是最常用的行内元素,它可以被用作链接。
none
另一个常用的display值是 none。一些特殊元素的默认 display 值是它,例如
script。
display:none通常被
JavaScript 用来在不删除元素的情况下隐藏或显示元素。
它和
visibility属性不一样。把
display设置成
none元素不会占据它本来应该显示的空间,但是设置成
visibility: hidden;还会占据空间。
其他 display 值
还有很多的更有意思的 display 值,例如 list-item和
table。这里有一份详细的列表。之后我们会讨论到
inline-block和
flex。
额外加分点
就像我之前讨论过的,每个元素都有一个默认的 display 类型。不过你可以随时随地的重写它!虽然“人为制造”一个行内元素可能看起来很难以理解,不过你可以把有特定语义的元素改成行内元素。常见的例子是:把 li元素修改成
inline,制作成水平菜单。
inline-block行内块元素
inline-block
你可以创建很多网格来铺满浏览器。在过去很长的一段时间内使用 float是一种选择,但是使用
inline-block会更简单。让我们看下使用这两种方法的例子:
困难的方式(使用浮动)
.box { float: left; width: 200px; height: 100px; margin: 1em; } .after-box { clear: left; }
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="box">
我在浮动!
</div>
<div class="after-box">
我在使用 clear,所以我不会浮动到上面那堆盒子的旁边。
</div>
容易的方式(使用 inline-block)
你可以用 display属性的值
inline-block来实现相同效果。
.box2 { display: inline-block; width: 200px; height: 100px; margin: 1em; }
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div class="box2">
我是一个行内块!
</div>
<div>
这次我可没有用
clear。太棒了!
</div>
你得做些额外工作来让IE6和IE7支持
inline-block。有些时候人们谈到
inline-block会触发叫做
hasLayout的东西,你只需要知道那是用来支持旧浏览器的。如果你对此很感兴趣,可以在前面那个链接中找到更详细的信息。
inline-block 布局
你可以使用 inline-block来布局。有一些事情需要你牢记:
vertical-align属性会影响到
inline-block元素,你可能会把它的值设置为
top。
你需要设置每一列的宽度
如果HTML源代码中元素之间有空格,那么列与列之间会产生空隙
nav { display: inline-block; vertical-align: top; width: 25%; } .column { display: inline-block; vertical-align: top; width: 75%; }
<div class="container"><nav>
Home
Taco Menu
Draft List
Hours
Directions
Contact
</nav>
<div class="column"><section>
Tada!
</section><section>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est,
ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper
ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit.
</section></div>
column
这里有一系列新的CSS属性,可以帮助你很轻松的实现文字的多列布局。让我们瞧瞧:
.three-column { padding: 1em; -moz-column-count: 3; -moz-column-gap: 1em; -webkit-column-count: 3; -webkit-column-gap: 1em; column-count: 3; column-gap: 1em;
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce
luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis
imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit.
</div>
CSS columns是很新的标准,所以你需要使用前缀,并且它不被IE9及以下和Opera Mini支持。还有许多和 column 相关的属性,点击这里了解更多。
多列属性(Multi-column)
属性 | 描述 | CSS |
---|---|---|
column-count | 规定元素应该被分隔的列数。 | 3 |
column-fill | 规定如何填充列。 | 3 |
column-gap | 规定列之间的间隔。 | 3 |
column-rule | 设置所有 column-rule-* 属性的简写属性。 | 3 |
column-rule-color | 规定列之间规则的颜色。 | 3 |
column-rule-style | 规定列之间规则的样式。 | 3 |
column-rule-width | 规定列之间规则的宽度。 | 3 |
column-span | 规定元素应该横跨的列数。 | 3 |
column-width | 规定列的宽度。 | 3 |
columns | 规定设置 column-width 和 column-count 的简写属性。 | 3 |
相关文章推荐
- css使用中遇到的小问题
- QT5常用样式表
- CSS的设计模式
- placeholder的字体样式改变,滚动条的颜色改变,ios日期兼容
- html css层叠样式基础(后代和子代元素选择器,伪类选择器)(四)
- CSS预处理器
- html css层叠样式基础(常用选择器)(三)
- CSS你可能还不知道的一些知识点
- html css层叠样式基础(内联元素和块元素)(二)
- css相关tips
- 详谈css中的定位
- CSS定位之——什么是包含块?
- html css层叠样式基础(一)
- CSS3动画
- 博客园自定义——关于自己博客样式的自定义
- webpack file-loader 解析 css 文件中 background-image路径问题。
- css中的伪类和伪元素
- 关于css important属性的一些想法
- 9.(初级)CSS内外边距注意点
- 8.(初级)web字体之:装饰列表