CSS转换为什么会影响站点宽度?

鲨鱼

我一直给人的印象是CSS转换是纯粹的视觉效果,不会以任何方式影响实际的网站布局。我最近在我的项目中发现了一个怪异的错误,其中一个从视口转换出来的图像(以后飞进去)改变了页面的宽度。

我和我的同事对此感到非常困惑。我在下面提供了一个示例(也在此处托管:https : //transform-confusion.netlify.app/),该示例显示了transform: scale(2)将div应用于div完全改变浏览器宽度的现象

行动中的怪异行为视频

我是否只是误解了CSS的工作原理,这是一个奇怪的浏览器错误还是这里发生了什么?

此处和视频中使用的源代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <style>
        body {
            border: 2px dotted black;
        }
      .scale {
        transform: scale(2);
        transform-origin: top left;
      }
      .scalable{
          background: lightblue;
          padding: 5px;
      }
    </style>
  </head>
  <body>
    <h1>This is a test</h1>
    <button>Toggle transform</button>
    <div class="scalable">
      Why does the Site start scrolling horizonally from a simple transform?
      <pre>transform: scale(2)</pre>
    </div>
    <script>
        const scalable = document.querySelector(".scalable");
        document.querySelector("button").addEventListener("click", () => {
            scalable.classList.toggle("scale");
        })
    </script>
  </body>
</html>

陪同Afif

我总是给人一种印象,即CSS转换纯粹是视觉上的,不会以任何方式影响实际的网站布局

这是正确的,因为变换不会影响任何其他元素的位置,并且布局将保持不变。

您面临的问题与溢出有关:

可滚动溢出延伸到框的填充边缘外部的一组东西,为此需要提供滚动机制。

可滚动溢出区域是可滚动溢出所占据的非矩形区域,可滚动溢出矩形是其轴与框的轴对齐且包含可滚动溢出区域的最小矩形。

..所有包含边框的框的边框,其边框不完全位于其框起始或行内填充边缘之外,通过将每个框投影到所建立元素的平面上来解决转换问题其3D渲染上下文。参考

因此,变换是Scrollable Overflow的一部分

您会发现某些属性是墨水溢出的一部分,并且该属性不会产生滚动:

盒子的墨水溢出是该盒子及其内容的一部分,可在盒子的边框之外创建视觉效果墨水溢出是指定义的绘画效果溢出,不会影响布局或以其他方式扩展可滚动溢出区域,例如框阴影,边框图像,文本装饰,悬空字形(带有负侧轴承,或在em外部延伸的上升/下降通道)框),轮廓等。

例如box-shadow永远不会创建滚动

.box {
  width:100px;
  height:100px;
  background:red;
  box-shadow:0 0 0 1000vmax blue;
}
<div class="box"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么更改元素的宽度会影响其同级?

CSS:为什么<input>对父div的宽度有影响

为什么CSS对:: after的更改也会影响:: before?

为什么 .scss 文件中的更改会转换为 .css 文件

Webkit转换为更改<p>元素的宽度...为什么?

为什么弹性项目的宽度和高度会影响弹性项目的呈现方式?

Vega-lite:为什么图形宽度会影响轴标签的格式?

为什么未设置宽度/高度会影响对象适合&是否有解决方法?

为什么将VarChar转换为DateTime会导致null?

转换为JSON时为什么会转义相关实体?

媒体查询会影响CSS中的优先级吗?还是为什么会这样?

为什么宽度和高度CSS不会影响此按钮元素?

为什么“宽度”和“高度”CSS 属性不会影响我的段落标签

为什么SQL Server的日期格式会影响带有时间戳的日期转换

为什么对转换数组生成的列表进行排序也会影响原始数组

为什么阴影会影响“最终”行为?

为什么填充会影响外部尺寸?

为什么程序会影响循环?

为什么巨型帧会影响延迟?

为什么将列表转换为矢量时POSIXct会转换为数字

为什么Sass会错误地转换CSS内容?

CSS 为什么宽度不对?

为什么在此代码中放置空格会影响CSS的输出?

为什么我不能将此 css 转换为 xpath

为什么最小宽度属性会破坏此CSS动画无限自动播放轮播?

为什么grid-gap会更改CSS Grid中列的宽度?

使用较短的间隔时,为什么更改CSS宽度会产生奇怪的效果?

为什么 css 悬停只影响书签?

为什么以下代码会转换为Java字节码中的新+ dup op指令?