javascript - 根据屏幕大小和父 div 位置定位子 div

标签 javascript html css

我有一个 div(它基本上是一个按钮)显示另一个 div(它基本上是一些元素的容器)。

检查真实世界的例子:

enter image description here

还有一个 working example in Plunkr .

如你所见,容器层放置在带有

的按钮下方
position: absolute;

如果按钮位于页面左上角的某处,则效果很好,但如果按钮位于页面底部或右侧某处,则效果不佳,因为它始终显示在按钮下方,并且向右扩展。这会导致图层呈现在网页可见区域之外并创建滚动。

有什么方法可以只使用 CSS 来完成以下操作:

  • 如果右侧没有足够的空间,则通过将图层的右上角放置到按钮的右下角来渲染图层。
  • 如果底部没有足够的空间,则通过将图层放置在按钮顶部来渲染该图层。

请注意,我以前不知道图层的宽度或高度。

这可以是 HTML5/CSS3 解决方案,我不需要支持旧浏览器。

最佳答案

据我所知是不可能的。可能的方法是使用 javascript 检测它,或者如果您只想使用 CSS,则必须定义位置类。示例:

HTML

<div class="dropdown btm-right">
  <span class="button">Button</span>
  <div class="items">
    <span class="item">Item</span>
  </div>
</div>

CSS

.dropdown {
  display: inline-block;
  position: fixed;
}
.dropdown:hover .items {
  display: inline-block;
}
.dropdown.btm-right {
  bottom: 10px;
  right: 10px;
}
.dropdown.top-right {
  top: 10px;
  right: 10px;
}
.dropdown .button {
  position: relative;
  z-index: 1;
}
.dropdown .items {
  position: absolute;
  display: none;
}
.dropdown.btm-right .items {
  right: 0;
  bottom: 100%;
}
.dropdown.top-right .items {
  top: 100%;
  right: 0;
}

然后我们可以使用 btm-righttop-right 类来定位下拉菜单。谢谢!

关于javascript - 根据屏幕大小和父 div 位置定位子 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30863677/

相关文章:

javascript - 用唯一值填充数组

javascript - 是否可以在图层中切出文本形状的孔?

html - CSS3 : show/hide icon in li a

javascript - 似乎无法检查 chrome 开发人员工具或 Firebug 中的模式弹出窗口

html - 添加第二个 css 标签使页面居中时,为什么导航栏不随页面的其余部分移动?

css - 绝对位置的文本溢出

javascript - 逗号在我的正则表达式模式中意味着什么

javascript - 将标记放在谷歌地图的行尾

javascript - 使用 jquery 检查复选框是否被选中

html - 在图库中使用 MixItUp 插件