How do you strip the unit from any number in SASS?

后端 未结 2 1428
攒了一身酷
攒了一身酷 2020-12-02 16:40

I know you can strip units from numbers in SASS when you know the unit before-hand like this:

$number: 16px;
$without-unit: 16px / 1px;
@warn $without-unit;          


        
相关标签:
2条回答
  • 2020-12-02 17:37

    I think you'd have to add a custom Ruby function to strip the units (see the documentation on adding custom functions). It would look something like this, I think (warning, untested):

    module Sass::Script::Functions
      def strip_units(num)
        assert_type num, :Number
        Sass::Script::Number.new(num.value)
      end
    end
    
    0 讨论(0)
  • 2020-12-02 17:39

    --

    UPDATE: You should never actually need to use this function. Sass math is very smart about units, and I have never seen a use-case in which stripping units was a better option than simply using correct math to get what you need. See the Sass issue thread where this has been discussed at length.

    It's a clever function, but if you ever feel like using it, there's probably a problem with your math. Don't fall back on this function. Fix your math instead.

    --

    You need to divide by 1 of the same unit. If you use unit(), you get a string instead of a number, but if you multiply by zero and add 1, you have what you need:

    @function strip-units($number) {
      @return $number / ($number * 0 + 1);
    }
    

    That works. strip-units(13.48cm) will return 13.48.

    0 讨论(0)
提交回复
热议问题