【问题标题】:Alternative to transform: scale() in CSS?替代转换:CSS 中的 scale()?
【发布时间】:2022-02-19 22:03:10
【问题描述】:

我想每个人都知道,如果一个元素的容器用 CSS 的 transform 属性装饰,那么所有具有 CSS 属性 position: fixed 的元素都不会按预期工作。

我经历了很多线程来找到这个问题的具体解决方案。我的意思是我的应用程序中有几个元素需要position:fixed 才能工作,因为我在body 本身上应用了transform: scale() 属性。

由于我找不到任何技巧来使这个东西起作用,所以我问是否有替代 CSS 的 transform: scale() 属性的方法。 zoom 当然不是答案,因为它仍然与许多浏览器(尤其是 Firefox)不兼容。

请建议我应该进行哪些更改以使它们都起作用?

angular.element($window).on('resize load', function () {
    var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
    var oWidth = angular.element($window).width();
    var oHeight = angular.element($window).height();
    console.log(oWidth + " " + oHeight);
    if (oWidth >= 1903)
        applyCss(100, 100, 1, isFirefox);
    if (oWidth < 1903 && oWidth > 1441)
        applyCss(125, 125, 0.8, isFirefox);
    if (oWidth <= 1441 && oWidth > 1268)
        applyCss(149.3, 149.3, 0.67, isFirefox);
    if (oWidth <= 1268)
        applyCss(166.7, 166.7, 0.6, isFirefox);
});

function applyCss(width, height, scale, isFirefox) {
    var body = angular.element('body');
    body.css({
        '-moz-transform' : 'scale(' + scale + ')',
        '-moz-transform-origin' : 'left top',
        '-webkit-transform' : 'scale(' + scale + ')',
        '-webkit-transform-origin' : 'left top',
        'transform' : 'scale(' + scale + ')',
        'transform-origin' : 'left top',
        'width' : width + '%',
        'height' : height + '%',
    });
    if (isFirefox) //body's position absolute in case of Firefox
        body.css({
            'position' : 'absolute'
        });
}

我用来实现缩放的代码。

【问题讨论】:

  • 请问你为什么要改变身体的比例?它可能有助于将 body 元素的内容包装在附加的容器 div 中并应用转换。然后可以将固定定位的元素直接放置在主体中,从而不受任何变换的影响。
  • 我正在使用 angularjs 和路由。无论如何,所有东西都会进入那个容器,即使是位置固定的元素。无论如何,我认为它不会有帮助。

标签: html angularjs css


【解决方案1】:

您的 div 为 100x200。如果你想缩放(x),你所要做的就是 height=100*x 和 width=200*x。当然,您可以使用纯 css 来完成此操作,但编写起来更容易。

【讨论】:

  • 我已经编辑了我的问题。请查看我用来实现缩放的代码。我必须以百分比形式传递宽度和高度以及比例因子。这个处理有什么解决办法吗?
  • 我实际上在做的是:减少缩放因子并增加 body 的宽度和高度,以便用户在浏览器中放大或缩小时可以看到相同的 ui 缩放。
  • 只需添加一个 标签即可。
  • 我想我无法解释自己。采取这种方式,当用户放大时(例如,在 Chrome Ctrl + 鼠标滚动中)我不希望我的 UI 因这个而被放大。我希望它们保持与最初相同的大小。无论用户放大还是缩小我的视图都不应更改其大小(放大或缩小)。
猜你喜欢
  • 2013-01-01
  • 2013-03-07
  • 2018-03-16
  • 2016-09-20
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
相关资源
最近更新 更多