有没有办法让Stylus计算x
的平方根?
你知道,就像JavaScript Math.sqrt(x)
那样。
我正在创造一个应该以它的起源为中心的钻石。我现在正在使用以下代码:
vendor(prop, args...)
-webkit-{prop} args
-moz-{prop} args
-o-{prop} args
-ms-{prop} args
rotate(r)
vendor('transform', unquote('rotate('+r+')'))
rotate r
.diamond
display block
width 7ex
height @width
line-height @height
rotate(-45deg)
/* calc offset of a rotated square
* @width * @width = $offsetX * $offsetX + $offsetY * $offsetY
* @width * @width = ( $offset * $offset ) * 2 // for a square: $offsetX= $offsetY
* ( @width * @width ) / 2 = ( $offset * $offset )
* sqrt(( @width * @width ) / 2) = $offset
* @width * sqrt(2) = $offset
*/
$offset = @width / 1.41421356237 // =sqrt( 2 )
margin (- $offset) 0em 0ex (- $offset ) // center the diamond on its origin
padding 0ex 0em
background-color red
正如你所看到的,我设法在没有实际计算平方根的情况下解决它,而是使用常量值。
但是当我查看Built-in Functions of Stylus时,我无法找到任何计算平方根的方法。
有没有办法让手写笔计算x
的平方根?
原因最好的是拥有一些不错的功能,如LESS has built in.
答案 0 :(得分:5)
作为answered there,您可以使用内置的math
功能,因此自定义sqrt
可能看起来更好:
sqrt(x)
return math(x, 'sqrt')
答案 1 :(得分:0)
您可以使用此代码:
sqrt(x)
if x == 0
result = 0
else
result = 4
for i in (0..10)
result = ((result + (x / result)) / 2)
在codepen上演示:http://cdpn.io/jcnLF