css字符图像生成

实现核心的属性是

background-clip 用于对背景裁剪

属性值:

说明
border-box 默认值。背景绘制在边框方框内(剪切成边框方框)
padding-box  背景绘制在衬距方框内(剪切成衬距方框)
content-box  背景绘制在内容方框内(剪切成内容方框)
text  给文本填充图片背景

text-fill-color 用于和背景颜色叠加

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.   <title>背景剪裁属性</title>
  5.   <meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” />
  6.   <style type=“text/css”>
  7.     html,
  8.     body {
  9.       width: 100%;
  10.       height: 100%;
  11.       margin: 0;
  12.       overflow: hidden;
  13.     }
  14.     img {
  15.       float: left;
  16.     }
  17.     p {
  18.       margin: 0;
  19.       font-weight: 600;
  20.       width: 100%;
  21.       overflow: hidden;
  22.       background-repeat: no-repeat;
  23.       background-position: center;
  24.       background-size: contain;
  25.       -webkit-background-clip: text;
  26.       -webkit-text-fill-color: transparent;
  27.     }
  28.   </style>
  29. </head>
  30. <body>
  31.   <img src=“css.gif”>
  32.   <p id=“p”>
  33.     飘动旗帜
  34.   </p>
  35.   <script>
  36.     const p = document.querySelector(‘#p’);
  37.       // 字体大小
  38.     const fontSize = 12
  39.       // 背景图片
  40.     const imgUrl = ‘css.gif’
  41.     p.style.cssText = `font-size:${fontSize}px;line-height:${fontSize}px;`
  42.     const text = p.innerHTML.replace(/(\s+)/g, ”)
  43.     const texttextLength = text.length
  44.     const img = new Image()
  45.      img.src = imgUrl
  46.      img.complete ? onImgLoaded() : (img.onload = onImgLoaded)
  47.     function onImgLoaded() {
  48.       const imgimgRatio = img.width / img.height
  49.       let imgWidth = window.innerWidth
  50.       let imgHeight = imgWidth / imgRatio
  51.       if (imgHeight > window.innerHeight) {
  52.         imgHeight = 200
  53.         imgWidth = imgHeight * imgRatio
  54.       }
  55.       const needTextLength = (imgWidth / fontSize) * (imgHeight / fontSize)
  56.       if (needTextLength > textLength) {
  57.         p.innerHTML = new Array(Math.floor(needTextLength / textLength) + 1).fill(text).join(”)
  58.       }
  59.       p.style.cssText += `width:${imgWidth}px;height:${imgHeight}px;background-image:url(${imgUrl});`
  60.     }
  61.   </script>
  62. </body>
  63. </html>

本文链接地址: css字符图像生成

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注