javascript - CSS 三 Angular 形定位

标签 javascript html css

基本上我想要的是一个 CSS 三 Angular 形,它在我的内容的中心垂直对齐,位于我的内容的右侧并带有轻微的填充,而不使用基于三 Angular 形的 border-width 的显式测量>.

如果三 Angular 形像本例中那样很大,则包装器应展开以包含 CSS 三 Angular 形,并且 CSS 三 Angular 形应始终垂直对齐在包装器的中间。如果有大量文本,如果它们交叉,CSS 三 Angular 形应该恰好与文本重叠。

这看起来很合理,但我遇到了一些问题;看看这个JsFiddle我现在所处的位置。

如果我指定一个 min-height,我可以到达下面的 1.1. 的问题是我必须选择任意高度。此外,如果内容增加,它不会完全垂直居中,因为 top: 25% 并没有真正将它放在中间。为了轻松地允许多个不同大小的箭头,我真的不想为此分配最小高度或任何高度,我只想让它自己计算它的大小。

我还必须使用 overflow: hidden 来防止滚动条出现,因为执行 right: -45px 会插入 CSS 三 Angular 形的“右侧”框,所以我也不能在任何地方使用 overflow: visible

如果我删除固定高度,那么我将得到 2。

这是否可能在不使用明确的高度和其他明确的测量值的情况下做到?你将如何正确地垂直对齐它?如果您有使用 jQuery 获取宽度等的想法,那也没关系 - 我已经标记了它。

CSS Triangle Image

最佳答案

这里有一些 jQuery 可以在将 arrowBox 类分配给您的 div 后摆脱硬编码的高度:

$(document).ready(function(){
  $(".arrowBox").each(function(){
    var border = $(this).height()/4;
    var right = "-"+(border-5)+"px";
    $(this).find(".arrow").css("border-width",border).css("right",right);
  });
});

http://jsfiddle.net/wzzRC/1/

也就是说,任何纯 CSS 解决方案的困难在于您不能以百分比指定边框宽度。因此,对于纯 CSS,使用其他解决方案之一来强制盒子变大以容纳箭头。如果你想要在较小的盒子里工作的箭头,你需要 JS。

关于javascript - CSS 三 Angular 形定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273620/

相关文章:

javascript - 需要禁用 Bootstrap 时间选择器的输入

javascript - 如何使用 Javascript 设置 JSF 中的当前语言环境?

javascript - 如何使用 Google 的动态提要控制增加 RSS 提要的数量

javascript - 这是使用 React.Suspense 的正确方法吗?

javascript - 样式 - 垂直对齐 td 标签内标签内的图像和文本

html - 将一个 ul 放在一个 div 中(在一个 div 中),它本身在页面上居中

javascript - 检查 2 个字段值是否匹配

html - 子菜单创造额外空间

html - 带元素前缀的高级元素选择器在 Chrome 中不起作用

android - 滚动条在 Android 中消失了?