相对于变换元素的绝对定位元素位置

2024-06-19

我重新创建了我在模板中遇到的问题。 有一个nav具有position: relative;。在 - 的里面nav有一个div有两个嵌套列表。
其中一个列表的位置绝对固定在列表的底部nav。 当div对其应用了变换。
当。。。的时候div在绝对和相对定位的元素之间有一个变换属性,绝对列表相对于div而不是nav.

MDN 文档对position:absolute 做了如下说明 https://developer.mozilla.org/en-US/docs/Web/CSS/position

不要为元素留出空间。相反,将其放置在 相对于其最接近的定位祖先的指定位置(如果有), 或以其他方式相对于包含块。绝对定位 盒子可以有边距,并且它们不会与任何其他盒子折叠 边距。

这是否意味着转换后的元素是定位元素? 为什么要这样做?我在 Edge、FF 和 Chrome 中进行了测试。他们的行为都一样。

您可以运行下面重新创建的代码片段。我正在将变换应用于导航悬停时的 div。

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
html, body{
  min-height: 100%;
  height: 100%;
}
nav{
  background: #000;
  height: 100%;
  width: 50%;
  position: relative;
}
nav:hover > div{
      transform: translateX(50px) translateY(0) translateZ(0);
}
a{
  color: #fff;
}
ul{
  padding: 16px;
}
ul.main{
  background: blue;
}

ul.lower{
  position: absolute;
  background: red;
  bottom: 0;
  width: 100%;
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<nav>
  <div>
    <ul class="main">
      <li><a href="">link</a></li>
      <li><a href="">link</a></li>
      <li><a href="">link</a></li>
      <li><a href="">link</a></li>
    </ul>
    <ul class="lower">
      <li><a href="">link</a></li>
      <li><a href="">link</a></li>
      <li><a href="">link</a></li>
      <li><a href="">link</a></li>
    </ul>
  </div>
</nav>
</body>
</html>

CSS 规范指出定义一个transform在一个元素上创建一个包含块 https://www.w3.org/TR/css-transforms-1/#transform-rendering:

对于其布局由 CSS 盒模型控制的元素,除了 none 之外的任何转换值都会导致创建堆叠上下文和包含块。

然后 (see spec https://www.w3.org/TR/css-position-3/#abs-pos):

在绝对定位模型中,盒子相对于其包含块显式偏移。



The key here is that setting the transform property of an element to anything other thant none, creates a new containing block; stacking contexts have nothing to do with the way the element is positioned.

请参阅以下代码片段中的示例。

body {
  padding-top: 100px;  
}

.containing-block,
.stacking-context {
  height: 50px;
  padding-top: 50px;
}

.containing-block {
  background-color: hotpink;
  /* transform with a value other than none defines both a containing block and a stacking context. */ 
  transform: scale(1);
}

.stacking-context {
  background-color: orange;
  /* opacity with a value other than 1 defines a stacking context but no containing block. */
  opacity: .99;
}

.abs{
  position: absolute;
  top: 0;
    
  padding: 10px;

  background-color: dodgerblue;
}
<body>
  <div class="containing-block">1: transform: scale(1);
    <div class="abs">1: Containing block example</div>
  </div>

  <div class="stacking-context">2: opacity: .99
    <div class="abs">2: Stacking context example</div>
  </div>
</body>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相对于变换元素的绝对定位元素位置 的相关文章

  • 排版(字母)的某些部分响应窗口的宽度/高度?

    我不确定这样的事情是否可以通过 CSS 实现 但是这个社区中的才华横溢的人们已经多次证明我错了 所以我们开始吧 我想知道字母的某些水平部分是否可能O U and E可以在保持其位置的同时响应窗口的宽度吗 在下图中 我绘制了响应式排版如何对窗
  • Animate.css - 等待动画完成后再继续

    我目前正在使用 Animate css 为我正在创建的应用程序制作动画 我正在寻找一种方法来等待动画完成后再继续 这是我认为可行的方法 但没有 任何帮助表示赞赏 myDiv addClass animated flipOutY functi
  • 如何自动调整下拉内容的宽度以匹配

    元素的宽度?

    基本上我有两个 p 元素 当您将鼠标悬停在其中一个上时 p p 元素 出现下拉内容 问题是 我想要下拉菜单content 下拉菜单本身 的宽度match的宽度 p p 元素 这些图片可能应该描述我在说什么 https i stack img
  • 如何在 html 和 css 中制作具有保留比例的高度和宽度响应图像?

    类似的问题还有很多 但都没有解决我的需求 应保持纵横比 并且 高度响应 并且 宽度响应 并且 应始终在浏览器窗口中看到完整图像 即响应能力应针对最紧密的尺寸 我已经满足了这些要求 但并不是同时满足所有要求 例如 如果我让下面的代码保持原样h
  • 为不同部分设置 rmarkdown 选项卡颜色

    我想用 Rmarkdown 创建一个 html html 应包含彩色选项卡 根据来自的答案这个问题 https stackoverflow com questions 55276670 coloring tabs in rmarkdown我
  • CSS 选择包含加号“+”的类

    如何通过包含加号的类名选择元素 E g frme 150 1 background position 150px 1px 使用JavaScript改变加值 可以使用吗 选择器名称中的字符 你需要escape http mathiasbyne
  • 当有浮动块时,如何使用 CSS 缩进列表项?

    当我在文档中使用浮动图像时 我观察到一种相对奇怪的行为 列表项缩进是相对于 红线 而不是 绿线 进行的 为什么会发生这种情况 我可以解决这个问题吗 img p some text p ul li aaabbbul gt p some oth
  • Chrome 自动填充上的预填充值在选择之前大小不同

    在我的应用程序上 我有多个表单 要求用户提供基本信息 姓名 电子邮件 地址等 在 Chrome 上 我们有很棒的自动填充功能 当查看这些表单之一并选择自动填充选项时 这些值将填充我之前保存的信息 但是 我遇到了问题 当我将鼠标悬停在 Chr
  • 如何使用 Twitter Bootstrap 创建类似 Gmail 的布局

    是否可以使用 Twitter Bootstrap 创建类似 GMail GoogleGroups 的布局 以便布局始终适合视口 窗口高度 并且侧边栏和内容区域适合 单独滚动 Fixed top navbar
  • CSS 主体宽度未填充 100%

    我正在开发一个网页 我注意到这个问题 Please post anything you get in mind it will be very helpful 检查网站here http dev mariachi com br europe
  • 使关闭图像出现在 DIV 的右上角

    我想知道如何使一个小十字 闭合 图像出现在 div 的右上角 使用 CSS 和 XHTML 谢谢 你可以这样做 jsfiddle net 7JEAZ 1317 http jsfiddle net 7JEAZ 1317 代码片段 panel
  • JavaScript 和 jQuery 以及句点的使用

    我很困惑在引用类名时何时使用类名之前的句点 在此示例中 为什么 active slide 类的第一次使用事先使用了句点 而其他两个则没有 var main function dropdown toggle click function dr
  • CSS 字体不起作用

    我正在尝试向我的网站添加自定义字体 我尝试了很多事情但没有成功 这是我的CSS代码 font face font family myFirstFont src url ellis ttf body margin 0 padding 0 wi
  • Codemirror光标位置偏移

    我正在使用代码镜像在网页中显示 突出显示和编辑 xml 但我遇到了光标位置偏离插入位置的问题 因此 如果从闪烁光标所在的位置删除字符 则删除之前的字符您期望的那个会被删除 我假设它与我当前页面存在 css 冲突 因为它在我的页面之外运行良好
  • 溢出-x 不工作

    我正在尝试为我的画廊实现一个滑块 目前 CSS 存在溢出 x 无法正常工作的问题 我想要一个水平滑块而不是垂直滚动 这是fiddle http jsfiddle net nevinm 6H43f 请务必看一下 testimg height
  • Chrome扩展程序自定义光标

    我构建了一个 Google Chrome 扩展程序 在网站中放置一些 IMG 标签 hover 上的此 img 标记必须显示自定义光标 该扩展使用 jQuery 作为其注入的核心脚本 我尝试了以下方法 1 var cursor url ch
  • 具有 dropdown-menu-right 类的下拉菜单未向右对齐

    我有以下导航栏结构 current user username 来自我的模板系统 ul class navbar nav mr auto mt 2 mt lg 0 ul div class dropdown show a class dro
  • 使用 CSS 显示 div 内容后淡出

    我正在尝试在单击按钮时显示通知 单击按钮实际上会检查电子邮件验证 我知道要显示一个包含错误消息内容的 div 但是 我想淡出错误消息 比如说 5 秒后 我想用CSS来实现它 以下是我的尝试 它只是隐藏了一切 signup response
  • jquery - 如何根据我的滚动位置滚动顶部动画到下一个可见的 div/类?

    如果标题有点模糊 请原谅我 因为我不知道如何写下来 基本上 我们有一个包含 6 个 场景 的页面 他们都有班级 scene和不同的 ID 例如 scene1 scene2 etc 首先 我们必须动态更改每个场景的颜色 gt 场景 1 是浅色
  • HTML/CSS 水平导航子菜单悬停显示错误

    我正在创建一个带有水平导航和垂直子菜单的 HTML 页面 一切工作正常 除了子菜单上的悬停显示在实际菜单项的左侧 看我的jsfiddle https jsfiddle net qmcte349 https jsfiddle net qmct

随机推荐