dropcap
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body{
margin: 100px;
}
.article-body {
width: 500px;
background-color: #fdf2f8;
}
.has-dropcap::first-letter {
font-size: 50px;
float: left;
line-height: 1;
margin: 5px 0.1em 0.1em 0;
/* 因为是浮动元素,行内元素margin才不会塌陷 */
/* margin 不填充背景颜色 */
background-color: black;
color: white;
padding: 5px 10px 5px 5px;
/* padding 填充背景颜色,使得背景看起来像正方形 */
}
.dropcap {
background: #303030;
color: #FDF9F2;
float: left;
/* 浮动会使得元素位置在上面一个的下面
* 同时伪元素会继承它的宽高。
*/
font-size: 6rem;
line-height: 1;
margin: 0.1em 0.1em 0.2em 0;
padding: 0.1em;
}
.dropcap:before,
.dropcap:after {
content: "";
display: block;
}
.dropcap:before {
margin-top: -0.2em;
}
.dropcap:after {
margin-bottom: -0.15em;
}
</style>
</head>
<body>
<article class="article-body">
<!-- 伪类方法 -->
<p class="has-dropcap">
Chen
</p>
<!-- 标签方法,兼容性更好 -->
<p><span class="dropcap">Q</span>
ian
</p>
</article>
</body>
</html>
浏览器output
- chrome浏览器和ff浏览器默认字体不一样,字体的行高设置也不一样。保证兼容性必须指定字体和行高。
深入探究
<!-- 关于浮动和伪元素:记住两点,伪元素会继承绑定元素可继承的属性。浮动会使得元素
插入到上个元素的下面-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
span::before {
content: '33333';
display: block;
/* margin-top: -.1em; */
background-color: red;
}
span {
float: left;
/* 浮动会使得元素位置在上面一个的下面
* 同时伪元素会继承它的宽高。
*/
color: #192;
/* padding: 10px; */
background-color: pink;
}
</style>
</head>
<body>
<span>
ddddddddddd
</span>
</body>
</html>