parcel-bundler / parcel-bundler/lightningcss
Please do not calculate the percentage in calc()
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 7.7k
- Forks
- 302
- PR merge metrics
- No merged PRs in 30d
Description
Original issue: https://github.com/evanw/esbuild/issues/1821 (esbuild has been resolved).
.foo {
width: calc(100% / 3);
}
lightningcss minifier output
.foo{width:33.3333%}
esbuild(old version) minifier output
.foo{width:33.33333%}
Any attempt to calculate and then simplify the percentages in calc() can be dangerous! Please turn off this feature by default.
Demo: https://codepen.io/yisi/pen/OJxVXYo
(Mac Chrome 89.0.4389.82)
Although a new version of Chrome switched to TableNG to fix this issue, there are still many other browsers that use older versions of Blink.
Please make sure that the CSS minifier does not break the page layout, in which case the number of compressed bytes is not that important.
See also: https://stackoverflow.com/questions/31719624/displaytable-div-with-percentage-width-1px-bug
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source file or test is named. Start by reproducing the calc(100% / 3) example in the CSS minifier and locate the percentage simplification path; done means the default output preserves calc() rather than simplifying the percentage, with a regression check for the reported case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- css, rust
- Domain
- frontend, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100