当前位置: 首页 > 知识库问答 >
问题:

vue.js - i18n 如何控制不同语言的字体大小?

鞠侯林
2023-08-29

一个固定大小的div,由于中英文 文字数量差异很大,有可能中文一行的情况下英文要3行,如何使英文也显示一行?

共有2个答案

常坚
2023-08-29

以下回答来自chatgpt

存在问题是字体最小是浏览器限制大小,按照其思路可以获得比例,在目标div再套一层div,给内层使用transform:scale(x)来实现。
当文字内容超出一行时,可以使用自定义指令来控制文字大小,使其一行内显示。下面是一个示例的Vue 3自定义指令的代码:

// main.jsimport { createApp } from 'vue'import App from './App.vue'const app = createApp(App)app.directive('fitText', {  mounted(el) {    const adjustFontSize = () => {      const containerWidth = el.offsetWidth      const contentWidth = el.scrollWidth      const fontSize = parseFloat(window.getComputedStyle(el).fontSize)      if (contentWidth > containerWidth) {        el.style.fontSize = `${fontSize - 1}px`        adjustFontSize()      }    }    adjustFontSize()  }})app.mount('#app')
<!-- App.vue --><template>  <div class="container">    <div class="content" v-fit-text>      <!-- 文字内容 -->    </div>  </div></template><style>.container {  width: 200px; /* 宽度可以根据需要进行调整 */  overflow: hidden;}.content {  white-space: nowrap;  overflow: hidden;  text-overflow: ellipsis;}</style>

在上面的代码中,我们创建了一个名为fitText的自定义指令,并在mounted钩子函数中实现了文字大小的调整逻辑。当指令绑定的元素被插入到DOM中时,会自动调用mounted函数。

mounted函数中,我们首先获取容器的宽度和内容的宽度,然后获取当前的字体大小。如果内容的宽度超过容器的宽度,就将字体大小减小1像素,并递归调用adjustFontSize函数,直到内容的宽度不再超过容器的宽度为止。

在模板中,我们将自定义指令v-fit-text应用在包含文字内容的div上。通过设置容器的宽度和使用CSS属性来控制文字的显示方式,实现了文字一行内显示的效果。

请注意,由于文字大小的调整是在mounted钩子函数中进行的,所以如果文字内容发生变化,需要手动触发重新调整文字大小的逻辑。

谷梁承宣
2023-08-29

i18n 好像没这种功能,但是可以手动调整适配

如果明确只要一行,那直接通过 css 实现就行了,如果单纯想把三行文本压缩到一行那估计都看不清了

.xxx-class {  width: 16rem;  white-space: nowrap;  overflow: hidden;  text-overflow: ellipsis;}
 类似资料:
  • 基于此处的原始文档https://angular.io/guide/i18n.src/app/app。组成部分html将只包含英文文本。信息。fr.xlf是具有法语文本的文件,但它是自动生成的,不建议触摸它。 如果我想有一个应用程序。组成部分使用法语文本而不是英语呈现的html,我在哪里指定法语消息“你好”等?

  • 下面这样写切换语言的时候 {{welcome1}} 和 {{welcome2}} 都不会变,只能 {{welcome3}} 这么写,为什么?

  • 我有一个表字段,它应该显示持久布尔值的国际化值。 在我的i18n文件中,我有folloing条目: 在桌子上,我有: 如果我把它保留为: 我希望它显示或。 怎么做?

  • 我正在使用i18n-js和react-native-localize在我的React Native应用程序中支持多种语言。我为每种语言创建一个 JSON 文件,并根据用户的语言设置使用密钥显示该文件。下面是导入 JSON 文件并配置 i18n 的核心文件。 由于有些语言不使用字母表,我希望能够更改其字体大小。 有人知道我怎么做吗?

  • 本文向大家介绍JavaScript 控制字体大小设置的方法,包括了JavaScript 控制字体大小设置的方法的使用技巧和注意事项,需要的朋友参考一下 在做公司的官网的时候,新闻内页会有一个让浏览者自己调整文字大小的功能,因此在这个空闲时间,把这个功能整理下来: 调用方式: 提示:可以通过font-size:0的方式来隐藏Input元素的value值,然后自定义按钮的样式。 以上这篇JavaScr

  • Hyperledger Composer包含一个访问控制语言(ACL),提供对领域模型元素的声明式访问控制。通过定义ACL规则,你可以确定允许哪些用户/角色在业务网络的领域模型中创建、读取、更新或删除元素。 网络访问控制 Hyperledger Composer区分业务网络(业务访问控制)内的资源的访问控制和网络管理变更(网络访问控制)的访问控制。业务访问控制和网络访问控制都在业务网络的访问控制文