Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
line-height
Advanced tools
Calculate line-height of an HTML element (IE6 compatible)
This was created for provide a well-tested module for calculating line-height in pixels for trunkata, a line-based truncation library for HTML.
line-height
is available via the following:
npm install line-height
bower install line-height
component install line-height
For npm
and component
, you can load it in as follows:
var lineHeight = require('line-height');
For bower
and http
, you can use vanilla JS
<script src="components/line-height.js"></script>
window.lineHeight; // `line-height` is defined on `window` in camelCase
or you can use AMD
require(['line-height'], funtion (lineHeight) { /* code */ });
or CommonJS syntax (see npm
/component
section).
Once you have the module loaded, you can get the line-height
of any node in the DOM.
// Calculate the `line-height` of the body
lineHeight(document.body); // 19
// Calculate the `line-height` of an h2
var h2 = document.createElement('h2');
document.body.appendChild(h2);
lineHeight(h2); // 29
// Calculate how many lines tall an element is
var div = document.createElement('div');
div.innerHTML = '<p>1</p><p>2</p>';
(lineHeight(div) / div.offsetHeight); // 2, how trunkata performs its calculations
Support this project and others by twolfson via donations
line-height
provides a single function.
lineHeight(node);
/**
* Calculate the `line-height` of a given node
* @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
* @returns {Number} `line-height` of the element in pixels
*/
line-height: normal
In a large amount of browsers, the computed style for an element's line-height
is normal
by default.
If it is specified by any other means (e.g. ancestor has a line-height
or the element has a line-height
specified), it is either a CSS length.
To solve this problem, we create a vanilla element of the same nodeName
(e.g. h2
if it is an h2
), apply the original element's font-size
, and return the element offsetHeight
. This is the height
of 1 line
of the element (i.e. line-height
).
pt
, pc
, in
, cm
, mm
to px
In most browsers, when the line-height
is specified in pt
, pc
, in
, cm
or mm
, the computedStyle
value is in the same unit.
To solve this problem, we use the standard ratios of conversion to pixels to make a conversion to pixels.
numeric
font-size in IE6In IE6, numeric
font-size
s (e.g. font-size: 2.3
) are returned without a unit.
To solve this problem, we treat this number as an em
since it is relative as well. To do that, we set the element's style to "numeric value" + "em"
, compute and save the font-size
, remove the temporary style. This conversion gives us the unit in pt
which we know how to deal with from before.
Tests can be run once via:
npm test
# Or with Karma directly via
# npm run test-karma-single
Tests can also be run continuously via:
npm run test-karma-single
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via npm run lint
and test via npm test
.
Copyright (c) 2013 Todd Wolfson
Licensed under the MIT license.
FAQs
Calculate line-height of an HTML element (IE6 compatible)
We found that line-height demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.