Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculating width from percent to pixel then minus by pixel in LESS CSS

Tags:

css

pixel

less

I will calculate width in some element from percent to pixel so I will minus -10px via using LESS and calc(). It´s possible?

div {     span {         width:calc(100% - 10px);     } } 

I using CSS3 calc() so it doesn't work: calc(100% - 10px)

Example: if 100% = 500px so width = 490px (500-10);

I made a demo for testing : http://jsfiddle.net/4DujZ/55/

so padding will say: 5 (10px / 2) all the time when I resizing.

Can I do it in LESS? I know how to do in jQuery and simple CSS like margin padding or else... but i will try to do functional in LESS with calc()

like image 942
l2aelba Avatar asked Feb 11 '13 14:02

l2aelba


People also ask

Is it better to use pixels or percentages for CSS measurements?

With pixels, it is easy to position objects relative to each other and controls specific heights and widths. On the other hand, scaling objects with percentages is easy. % Is the way to go in a modern world like vector graphics. When the screen is large or small you can resize it exactly regardless of resolution.

How to use calc() in CSS?

CSS calc() It can be used to calculate length, percentage, time, number, integer frequency, or angle. It uses the four simple arithmetic operators add (+), multiply (*), subtract (-), and divide (/). It is a powerful CSS concept because it allows us to mix any units, such as percentage and pixel.

How does the calc() function work on values in CSS?

The calc() function takes a single expression as its parameter, with the expression's result used as the value. The expression can be any simple expression combining the following operators, using standard operator precedence rules: + Addition.


1 Answers

You can escape the calc arguments in order to prevent them from being evaluated on compilation.

Using your example, you would simply surround the arguments, like this:

calc(~'100% - 10px') 

Demo : http://jsfiddle.net/c5aq20b6/


I find that I use this in one of the following three ways:

Basic Escaping

Everything inside the calc arguments is defined as a string, and is totally static until it's evaluated by the client:

LESS Input

div {     > span {         width: calc(~'100% - 10px');     } } 

CSS Output

div > span {   width: calc(100% - 10px); } 

Interpolation of Variables

You can insert a LESS variable into the string:

LESS Input

div {     > span {         @pad: 10px;         width: calc(~'100% - @{pad}');     } } 

CSS Output

div > span {   width: calc(100% - 10px); } 

Mixing Escaped and Compiled Values

You may want to escape a percentage value, but go ahead and evaluate something on compilation:

LESS Input

@btnWidth: 40px; div {     > span {         @pad: 10px;         width: calc(~'(100% - @{pad})' - (@btnWidth * 2));     } } 

CSS Output

div > span {   width: calc((100% - 10px) - 80px); } 

Source: http://lesscss.org/functions/#string-functions-escape.

like image 186
natchiketa Avatar answered Sep 20 '22 13:09

natchiketa