插件 jQuery.TextFit 中文API文档

🌙
手机阅读
本文目录结构

插件 jQuery.TextFit 中文API文档 https://github.com/STRML/textFit textFit - Hassle-Free Text Fitting

A fast, dependency-free text sizing component that quickly fits single and multi-line text to the width and/or height of its container.

Example

Capabilities

textFit is:

  • Fast, using binary search to quickly fit text to its container in log n time, making it far faster than most solutions.
  • Dependency-free.
  • Small. 4.1KB minified and 1.5KB gzipped.
  • Supports both horizontal and vertical centering, including vertical centering with Flexbox for maximum accuracy.
  • Supports any font face, padding, and multiline text.

Browser Support

textFit supports IE9+, Firefox, Chrome, Opera, and most mobile browsers. If you find an incompatibility, please file an issue.

If you require IE <= 8 support, please use the jQuery version. Functionality is identical between v1.0 and v2.0, the only change was the removal of the jQuery dependency.

Changelog

v2.3.1

  • Fix #20 - properly iterate over HTMLCollection objects.

v2.3.0

  • Added alignVertWithFlexbox. This does better vertical alignment and fixes #14.

v2.2.0

  • Throw errors instead of just printing to console when missing height/width.
    • Removed options.suppressErrors. Wrap in try/catch instead if you really need this.
  • Slight refactor.
  • Added automatic build on prepublish.

v2.1.1

  • Fixed a bug with alignVert when reprocessing.
  • Added full UMD shim and published to npm.

v2.1

  • Reworked alignVert.
  • reProcess is now true by default. Set to false if you want to fire-and-forget on potentially processed nodes. This was originally false by default because it was being used in an infinite scrolling list.

v2.0

  • Removed jQuery dependency.

Usage

<div class="box" style="width:300px;height:300px">
  Fit me, I am some text
</div>
// textFit accepts arrays
textFit(document.getElementsByClassName('box'));
// or single DOM elements
textFit(document.getElementsByClassName('box')[0]);
// Use jQuery selectors if you like.
textFit($('#box')[0])

The text will scale until it reaches the horizontal or vertical bounds of the box. Explicit width and height styles are required in order to fit the text.

Advanced Usage

Multiline Strings

If your text has multiple lines, textFit() will automatically detect that and disable white-space: no-wrap! No changes are necessary.

<div class="box" style="width:300px;height:300px">
  This text <br>
  Has multiple lines <br>
  Fit me!
</div>
textFit(document.getElementsByClassName('box'))

If, for some reason, the automatic detection is not working out for you, use the following to explicitly turn on multiLine fitting:

textFit(document.getElementsByClassName('box'), {multiLine: true})

Horizontal/Vertical Centering

<div class="box" style="width:300px;height:300px">
  This text <br>
  Has multiple lines <br>
  And wants to be centered horizontally and vertically<br>
  Fit me!
</div>
textFit(document.getElementsByClassName('box'), {alignHoriz: true, alignVert: true})

Minimum and Maximum Sizes

Sometimes you want to make sure that your text remains sanely sizes if it is very short or very long. textFit has you covered:

<div class="box" style="width:300px;height:300px">
  Short Text
</div>
textFit(document.getElementsByClassName('box'), {minFontSize:10, maxFontSize: 50})

Implementation Details

textFit determines reasonable minimum and maximum bounds for your text. The defaults are listed below.

To ensure accurate results with various font-faces, line-heights, and letter-spacings, textFit resizes the text until it fits the box as accurately as possible. Unlike many similar plugins, textFit uses binary search to find the correct fit, which speeds the process significantly. textFit is fast enough to use in production websites.

textFit() is a synchronous function. Because of this, resizes should be invisible as the render thread does not have a chance to do a layout until completion. Normal processing times should be < 1ms and should not significantly block renders.

Default Settings

From the source, for reference:

settings = {
    alignVert: false, // if true, textFit will align vertically using css tables
    alignHoriz: false, // if true, textFit will set text-align: center
    multiLine: false, // if true, textFit will not set white-space: no-wrap
    detectMultiLine: true, // disable to turn off automatic multi-line sensing
    minFontSize: 6,
    maxFontSize: 80,
    reProcess: true, // if true, textFit will re-process already-fit nodes. Set to 'false' for better performance
    widthOnly: false, // if true, textFit will fit text to element width, regardless of text height
    alignVertWithFlexbox: false, // if true, textFit will use flexbox for vertical alignment
};

License

MIT

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了