【问题标题】:Vue Mazeletter backgroundVue Mazeletter 背景
【发布时间】:2021-11-01 05:46:20
【问题描述】:

我正在尝试使用Mazeletter 为我正在构建的应用程序的每个页面创建背景。但是,我以前没有做过这样的事情,我需要一些帮助。我有一个作为背景的基本测试组件,我可以成功地在它上面放置元素。

但是,我想让它变得更有活力。一是文本应该是动态的(即通过道具传入),并且应该有足够的文本来为页面上存在尽可能多的内容提供背景(这也是动态的)。

这是我目前正在使用的测试组件:

<template>
  <div id="mz-background">
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
    <p class="mz-text">ThisIsATestThisIsATestThisIsATestThisIsATest</p>
  </div>
</template>

<script>
export default {
  name: "UnderworldPattern",
};
</script>

<style scoped>
#mz-background {
  z-index: 0;
  position: fixed;
  overflow: hidden;
  width: 100vw;
  height: 100vh;
}

.mz-text {
  line-height: 89.5px;
  font-family: "mazeletter-underworld"; // imported in project css
  font-size: 90px;
  z-index: 1;
  color: #000000;
  user-select: none;
  text-align: left;
  letter-spacing: -0.409091px;
}
</style>

如果有人可以帮助我使这更加动态,我将非常感激

感谢您的宝贵时间

【问题讨论】:

    标签: css vue.js dynamic background


    【解决方案1】:

    可能类似于以下内容: 定义长字符集并在#mz-background 上设置overflow: hidden;。 在创建的钩子上添加侦听器,以检测窗口大小并调用方法以根据˙font-size˙计算行数。然后在模板循环中计算 nr 行。(粗略的解决方案)

    export default {
      name: "UnderworldPattern",
      data() {
        return {
          textToShow: 'ThisIsATestThisIsATestThisIsATestThisIsATestThisIsATestThisIsATestThisIsATestThisIsATest',
          nrOfLines: 0
        }
      },
      methods: {
        getNrOfLines() {
          this.nrOfLines = parseInt(document.documentElement.clientHeight / 90)
        }
      },
      mounted() {
        this.getNrOfLines()
      },
      created() {
        window.addEventListener("resize", this.getNrOfLines);
      },
      unmounted() {
        window.removeEventListener("resize", this.getNrOfLines);
      },
    };
    
    
    #mz-background {
      z-index: 0;
      position: fixed;
      overflow: hidden;
      width: 100vw;
      height: 100vh;
    }
    
    .mz-text {
      line-height: 89.5px;
      font-family: "mazeletter-underworld"; // imported in project css
      font-size: 90px;
      z-index: 1;
      color: black;
      user-select: none;
      text-align: left;
      letter-spacing: -0.409091px;
      overflow: hidden;
      margin: 0;
    }
    
    
    <div id="app">
      <template>
        <div id="mz-background">
          <p class="mz-text" v-for="index in nrOfLines" :key="index">{{ textToShow }}</p>
        </div>
      </template>
    </div>
    

    【讨论】:

    • 这似乎可以满足我的要求,所以谢谢。不过,我确实有一个后续问题。如果我想让字体大小动态化,您认为最好在组件本身中使用媒体查询还是通过道具传递更好?
    • 也许您可以在ems 中定义字体大小(它们是可扩展的)
    猜你喜欢
    • 2018-05-17
    • 1970-01-01
    • 2018-07-19
    • 2020-11-17
    • 1970-01-01
    • 2021-04-30
    • 2018-09-06
    • 2019-11-30
    • 2020-10-07
    相关资源
    最近更新 更多