据我所知,position: fixed
的元素与视口对齐。但在THIS方案中,fixed
元素(.box
)相对于模态定位。
为什么会发生这种情况?如何使其与视口对齐?
答案 0 :(得分:0)
这是因为CSS transform
属性应用于Bootstrap的.modal-dialog
元素。根据文档https://www.w3.org/TR/css-transforms-1/#transform-rendering
为transform属性指定一个非零的值 在元素所在的位置建立一个新的局部坐标系 应用于。元素将要渲染的位置的映射 由元素的 转换矩阵。转换是累积的。那是, 元素在坐标内建立其局部坐标系 他们父母的制度。从用户的角度来看,一个元素 有效地累积其祖先的所有变换属性 以及应用于它的任何局部变换。的积累 这些转换定义了当前的转换矩阵 元素。
换句话说,变换后元素的固定位置后代的包含块是变换后的元素,而不是视口。
http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/
此处,如果您希望.box
元素相对于视口对齐,请尝试将该元素放置在.modal-dialog
元素之外。
答案 1 :(得分:-1)
Fixed positioning works in relation to the viewport except when an ancestor element has a transform applied to it. .modal-dialog has transform applied to it which creates a new context in which to position the DIV (this is why your DIV stays inside of the modal).