当我们在定义列表时,我们通常想得到如下的效果:
![7b91be4da33f9fc3feb0409490f8a3c0.png](https://i-blog.csdnimg.cn/blog_migrate/37f0c448fe58797d6659353b07ffcf7c.jpeg)
下面是我们的html代码:
Name: Lea Verou Email: lea@verou.me Location: Earth
实际得到的效果是
![dbe7956dcfa21a051daa1759df888c7b.png](https://i-blog.csdnimg.cn/blog_migrate/8eb5d7870a9add12916d59ffb82dc0e4.jpeg)
当我们想得到最上面的效果时,第一步通常是:
![e1754622b9b6c9944b1222cd9e740240.png](https://i-blog.csdnimg.cn/blog_migrate/a59d527ebc4cc73a00f8df5b64609271.jpeg)
因为
和是 块级元素,所以所有的名和值都各占一行,我们可能通过改变或的display属性来做尝试: dd, dt{ display: inline; }
![332efbc8ee25a9607fc136416d2e3eea.png](https://i-blog.csdnimg.cn/blog_migrate/08bfbd5db558b658571d3856d32d218f.jpeg)
解决方案
如上,我们缺少几个换行
实际上有一个Unicode字符专门代表换行符:0x000A。在CSS中,我们可以用"A"表示,我们可以把它作为::after伪元素的内容,添加到dd的尾部,但是你会发现并没有什么作用,但这并不代表我们错了,而是在HTML代码中,默认情况下换行符会与相邻的其他空白符进行合并,我们这里保留源代码中的这些空白符和换行,因此我们这么做:
dd, dt{ display: inline; } dd::after{ content: "A"; white-space: pre; } dd{ margin: 0; font-weight: bold; }
![f21f41205e9b051f90e225b63d9bf47e.png](https://i-blog.csdnimg.cn/blog_migrate/656269200f001df9b4cf49ffce422d6a.jpeg)
很明显,我们已经得到了我们想要的效果,不过如果我们尝试如下时:
![51d21e9f560900b11b850ee720634507.png](https://i-blog.csdnimg.cn/blog_migrate/2aefcd4638b636929e931039207e61eb.jpeg)
![2bfe0cf74066eb82bf7d8d84275049d4.png](https://i-blog.csdnimg.cn/blog_migrate/7dfb30639a527996c13b32cc0d12321e.jpeg)
由于我们在每个dd后面都加了一个换行符,每个值都会分到单独一行,甚至不需要换行的时候也是如此。因此我们需要采取类似if else的判断:
dd + dt::before{ content: "A"; white-space: pre; } dd + dd::before{ content: ', '; font-weight: normal; margin-left: -.25em; }
![1d2821eac09dce2736abedb1cd8f62dc.png](https://i-blog.csdnimg.cn/blog_migrate/1eece7e4d20d9833bc55a83dd080c9b6.jpeg)
另外上述的margin是为了修正逗号前的空格,尺寸是需要根据字体个尺寸调试的。