我可以在CSS中使用Calc里面的Scale:Scale函数吗?

时间:2016-07-05 14:21:17

标签: css3 transform scale css-calc

我正在尝试计算适用于父母内部儿童的正确比例,但我无法在 calc() 内使用 transform: scale CSS功能。 我已经使用javascript完成了这个功能,但我对纯CSS解决方案感兴趣,以避免尽可能多地使用脚本膨胀页面。

实施例: 的 CSS

   .anyclass{
     height:250px; /*this value can change dinamically */
     transform:scale(calc(100% / 490 )); /*is using height value*/
   }

此定义返回无效的属性值。 其他用途如翻译:

.anyclass{
transform:translate(calc(100% - 50px ));
}

没问题。 无论如何我可以使用calc来仅使用CSS来计算div的正确比例吗?

编辑:为了更好地解释它,找到一个0到1之间的值不是一个问题,因为计算就是这样。如果我使用百分比,我只会获得无效的属性值。

测试1 我尝试使用CSS3变量而没有导致缩放功能

--height: calc(100% + 0px);
/* height: calc(var(--height) / 490); Calculates the right value: 0.5 */
--soom: calc(var(--height) / 490);
/* height: var(--soom); has the right value: 0.5 */
transform: scale(var(--soom)); /*Does not operate in the value stored in --soom*/

它似乎接受chrome中的值,但不会操作比例。

ZOOM CSS属性似乎只在chrome中工作正常。这很好。

zoom: calc(100% / 1.490); /* It needs the original value to be divided by 1000 to work properly*/

工作示例:

在网址中:MiWeb DIV与类:class =“cs_6c537e46d973809bcbd9abb882d9c7db cssprite” 有一个background-image属性,因为它使用sprite作为源。 的 CSS

background-position: 0 -840px;
    width: 800px;
    height: 490px;
    background-image: url(https://cdn.arturoemilio.es/wp-content/cache/CSS_Sprite/93db60ac3df9134d96d56dd178d4ebf3279fdb39_S.png);
    background-repeat: no-repeat;
    display: inline-block;
    position: initial;

现在原始图像比可见div大(高度:250px aprox),我只想使用CSS缩放图像,因为我想避免使用JS来更好地兼容JS被阻止的浏览器。

我想将背景图像缩放到正确的尺寸,正确的值是250px / 490px( scale(calc(100%/ 490))。 CSS在输出之前和CMS的其他部分生成,因此在生成CS规则时我无法知道父DIV的实际大小。

5 个答案:

答案 0 :(得分:0)

比例应该是介于0和1之间的浮点数。请改用transform: scale(calc(1 / 2))https://jsfiddle.net/L1w7501o/

答案 1 :(得分:0)

可以使用calc,但您无法在transform:scale中使用百分比

但只是认为1 = 100%所以如果100%的值发生变化,1的值也会发生变化

例如:如果100%= 450px然后该值变为250px,则值1 = 250px = 100%

请参阅此处jsfiddle

代码:

.parent {
 width:200px;
 background:blue;
 height: 100%;

}

.child {
  transform:scale(calc(1/2));
  background:red;
}

如果真的想要使用百分比,则必须使用JQ

或者您可以给我们一个工作示例,您认为只需要百分比

编辑:

为您的例子。使用这个

.et_pb_portfolio_item:last-child .et_pb_portfolio_image.landscape > div {
   background-position:center center!important;
   width:100%!important;
   height:100%!important;   

}

答案 2 :(得分:0)

试试这个calc()同时适用于悬停选择器,也可以不使用。但是您需要使用已分配给它们的值,例如scale(0,1),您必须使用01之间的值。对于翻译,您必须使用px%值。

.any{
     height:250px; /*this value can change dinamically */
     background:#f22;
    transform:translate(calc(100px - 50px));
   }
   .any:hover{
   transform:translate(calc(100px - 80px)); /*is using height value*/
   }

缩放

  .any:hover{
       transform:scale(calc(1/2));
}

答案 3 :(得分:0)

<块引用>

您可以在 root 中定义 calc 并在 scale 中使用它,但不支持 trackerFile = pd.read_csv('mysite/tracker.csv') def addData(): #some operation df.to_csv('mysite/tracker.csv) 。使用 + and -

* or /
  :root{
    --calc : calc(100%*3);
  }
  .parent {
    width:200px;
    background:blue;
    height:auto;

  }
  
  .child {

   transform:scale(calc(var(--calc)/2));

   background:red;
   
   }

答案 4 :(得分:0)

简单的你可以使用 transform: scale(calc(1 / 2)) :P