一些小技巧让你的CSS技术更专业
- 使用
:not()
去除导航上不需要的边框 - 为
body
添加行高 - 垂直居中任何元素
- 逗号分离的列表
- 使用负
nth-child
选择元素 - 使用SVG图标
- 文本显示优化
- 在纯CSS幻灯片上使用
max-height
- 继承
box-sizing
- 表格单元格等宽
- 使用Flexbox摆脱边界Hack
- 使用属性选择器选择空链接
使用:not()
添加/去除导航上不需要的边框
添加边框…
1 2 3 4 5 |
/* 添加边框 */ .nav li { border-right: 1px solid #666; } |
…然后去除最后一个元素的边框…
1 2 3 4 5 |
/* 移除边框 */ .nav li:last-child { border-right: none; } |
…使用伪类 :not()
将样式只应用到你需要的元素上:
1 2 3 |
.nav li:not(:last-child) { border-right: 1px solid #666; } |
当然,你可以使用.nav li + li
或者 .nav li:first-child ~ li,
但是使用 :not()
的意图特别清晰,CSS选择器按照人类描述它的方式定义边框。
为body
添加行高
你不需要分别为每一个 <p>
, <h*>
等元素添加行高,而是为body
添加:
1 2 3 |
body { line-height: 1; } |
这种方式下,文本元素可以很容易从body
继承。
垂直居中任何元素
不,这不是黑魔法,你的确可以垂直居中任何元素:
1 2 3 4 5 6 7 8 9 10 11 12 |
html, body { height: 100%; margin: 0; } body { -webkit-align-items: center; -ms-flex-align: center; align-items: center; display: -webkit-flex; display: flex; } |
想让其他元素居中?垂直,水平…任何东西,任何时间,任何位置?CSS-Tricks上有 一个不错的文章 来做到这一切。
注意:IE11上flexbox的一些 缺陷行为。
逗号分离的列表
让列表看起来更像一个真正的逗号分离列表:
1 2 3 |
ul > li:not(:last-child)::after { content: ","; } |
使用伪类:not()
,这样最后一个元素不会被添加逗号。
使用负 nth-child
选择元素
在CSS使用负nth-child选择1到n的元素。
1 2 3 4 5 6 7 8 9 |
li { display: none; } /* 选择1到3的元素并显示 */ li:nth-child(-n+3) { display: block; } |
或者,你已经学习了一些关于 使用 :not()
,尝试:
一些小技巧让你的CSS技术更专业
- 使用
:not()
去除导航上不需要的边框 - 为
body
添加行高 - 垂直居中任何元素
- 逗号分离的列表
- 使用负
nth-child
选择元素 - 使用SVG图标
- 文本显示优化
- 在纯CSS幻灯片上使用
max-height
- 继承
box-sizing
- 表格单元格等宽
- 使用Flexbox摆脱边界Hack
- 使用属性选择器选择空链接
使用:not()
添加/去除导航上不需要的边框
添加边框…
1 2 3 4 5 |
/* 添加边框 */ .nav li { border-right: 1px solid #666; } |
…然后去除最后一个元素的边框…
1 2 3 4 5 |
/* 移除边框 */ .nav li:last-child { border-right: none; } |
…使用伪类 :not()
将样式只应用到你需要的元素上:
1 2 3 |
.nav li:not(:last-child) { border-right: 1px solid #666; } |
当然,你可以使用.nav li + li
或者 .nav li:first-child ~ li,
但是使用 :not()
的意图特别清晰,CSS选择器按照人类描述它的方式定义边框。
为body
添加行高
你不需要分别为每一个 <p>
, <h*>
等元素添加行高,而是为body
添加:
1 2 3 |
body { line-height: 1; } |
这种方式下,文本元素可以很容易从body
继承。
垂直居中任何元素
不,这不是黑魔法,你的确可以垂直居中任何元素:
1 2 3 4 5 6 7 8 9 10 11 12 |
html, body { height: 100%; margin: 0; } body { -webkit-align-items: center; -ms-flex-align: center; align-items: center; display: -webkit-flex; display: flex; } |
想让其他元素居中?垂直,水平…任何东西,任何时间,任何位置?CSS-Tricks上有 一个不错的文章 来做到这一切。
注意:IE11上flexbox的一些 缺陷行为。
逗号分离的列表
让列表看起来更像一个真正的逗号分离列表:
1 2 3 |
ul > li:not(:last-child)::after { content: ","; } |
使用伪类:not()
,这样最后一个元素不会被添加逗号。
使用负 nth-child
选择元素
在CSS使用负nth-child选择1到n的元素。
1 2 3 4 5 6 7 8 9 |
li { display: none; } /* 选择1到3的元素并显示 */ li:nth-child(-n+3) { display: block; } |
或者,你已经学习了一些关于 使用 :not()
,尝试: