dropcap

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <style>
  9. body{
  10. margin: 100px;
  11. }
  12. .article-body {
  13. width: 500px;
  14. background-color: #fdf2f8;
  15. }
  16. .has-dropcap::first-letter {
  17. font-size: 50px;
  18. float: left;
  19. line-height: 1;
  20. margin: 5px 0.1em 0.1em 0;
  21. /* 因为是浮动元素,行内元素margin才不会塌陷 */
  22. /* margin 不填充背景颜色 */
  23. background-color: black;
  24. color: white;
  25. padding: 5px 10px 5px 5px;
  26. /* padding 填充背景颜色,使得背景看起来像正方形 */
  27. }
  28. .dropcap {
  29. background: #303030;
  30. color: #FDF9F2;
  31. float: left;
  32. /* 浮动会使得元素位置在上面一个的下面
  33. * 同时伪元素会继承它的宽高。
  34. */
  35. font-size: 6rem;
  36. line-height: 1;
  37. margin: 0.1em 0.1em 0.2em 0;
  38. padding: 0.1em;
  39. }
  40. .dropcap:before,
  41. .dropcap:after {
  42. content: "";
  43. display: block;
  44. }
  45. .dropcap:before {
  46. margin-top: -0.2em;
  47. }
  48. .dropcap:after {
  49. margin-bottom: -0.15em;
  50. }
  51. </style>
  52. </head>
  53. <body>
  54. <article class="article-body">
  55. <!-- 伪类方法 -->
  56. <p class="has-dropcap">
  57. Chen
  58. </p>
  59. <!-- 标签方法,兼容性更好 -->
  60. <p><span class="dropcap">Q</span>
  61. ian
  62. </p>
  63. </article>
  64. </body>
  65. </html>

浏览器output

image.png
image.png

  • 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>