如何在“border-*”属性中使用百分比?

2024-04-08

我有使用 Twitter Bootstrap 3 的代码,nav with right-arrow,我使用它创建的border-*特性。但是如果我在中使用很长的文本right-arrow,它不会扩展,如果我使用百分比,代码将无法工作......

示例JsFiddle http://jsfiddle.net/W623k/

.custom-nav-stacked>li>a {
  border-radius: 2px;
}

.custom-nav-stacked>li.active>a:after,
.custom-nav-stacked>li.active>a:hover:after,
.custom-nav-stacked>li.active>a:focus:after {
  content: '';
  position: absolute;
  left: 100%;
  top: 50%;
  margin-top: -19px;
  /*margin-left: -1px;*/
  border-top: 19px solid transparent;
  border-left: 13px solid #428bca;
  border-bottom: 19px solid transparent;
}
<div class="container" style="margin-top:  20px">
  <div class="row">
    <div class="col-md-2" style="width: 300px /* width there only for pretty demo */">
      <ul class="nav nav-pills nav-stacked custom-nav-stacked">
        <li class="active"><a href="#">A long long text</a></li>
        <li><a href="#">Small text</a></li>
        <li class="active"><a href="#">A long long long long long long long long long text</a></li>
        <li><a href="#">Small text 111</a></li>
      </ul>
    </div>
  </div>
</div>

示例JsFiddle http://jsfiddle.net/W623k/

如何使三角形根据文本量做出响应?


唯一的relative单位(意思是对其他事物做出反应)border可以使用的是vh and vw单位。因此,border仅当其所在的元素为also相对于视口的大小。Demo http://jsfiddle.net/Zeaklous/W623k/3/

因此,您尝试使用 CSS 执行的操作目前是不可能的,因为如果您使用视口单位设置高度和边框,那么它们将不会响应文本内容。你必须给不同身高的人一个班级,这样就违背了相对尺寸的目的。

然而,使用 javascript 可以很容易地做到这一点。您只需要迭代相关元素,计算元素的高度,将其除以 2 并将其设为border-top and border-bottom,然后计算其中的比例border-left. 演示那个 http://jsfiddle.net/Zeaklous/W623k/4/

/* JS */
var actives = document.getElementsByClassName("active"),
    triangles = document.getElementsByClassName("triangle");

for(var i = 0, l = actives.length; i < l; i++) {
    triangles[i].style.borderTopWidth = actives[i].clientHeight / 2 + "px";
    triangles[i].style.borderBottomWidth = actives[i].clientHeight / 2 + "px";
    triangles[i].style.borderLeftWidth = actives[i].clientHeight / 3 + "px";
    triangles[i].style.marginTop = - actives[i].clientHeight / 2 + "px";
}

/* CSS */
li.active .triangle {
    position: absolute;
    left: 100%; /* Position it to the right */
    top: 50%;
    border-color:transparent; /* Make all other sides transparent */
    border-left-color:#428bca; /* Add color to the side that matters */
    border-style:solid; /* This property is necessary to make it show */
}

建议使用实际(在 DOM 中的意思)元素,而不是使用 javascript 方法的伪元素,因为使用 DOM 更容易访问它们。如果您最终使用了伪元素,则需要更改实际的样式表,即更加困难 https://stackoverflow.com/a/21709814/2065702

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在“border-*”属性中使用百分比? 的相关文章

随机推荐

  • 雅罗斯拉夫斯基的双主元快速排序算法

    我正在研究我发现的双枢轴快速排序here http aofa2013 lsi upc edu slides Nebel pdf 幻灯片第 20 页 比较 雅罗斯拉夫斯基平均需求 1 9 n ln n 经典快速排序需要 2 n ln n 比较
  • 多个 jQuery-UI 滑块的合计

    我正在尝试实现一个有 4 个 jQuery UI 滑块的页面 并且我想让所有 4 个滑块的总数永远不会超过 400 我不介意以哪种方式实现这一点 它可以从 0 开始 一旦您更改 1 个滑块 剩余的可用总数就会减少 或者将滑块设置为超过最大值
  • Dart 扩展了 Map 以便于延迟加载

    我正在尝试将数据从服务器延迟加载到地图中 出于这个原因 我想向 Map 添加功能 以便当键不存在时 会进行调用以获取值 我尝试的是这样的 class LazyMap extends Map use length for now When t
  • 保存大图像 - 光栅问题

    我已经问过如何保存大图像的问题 我认为我走在正确的轨道上 但我仍然需要一些建议 我有一个 12000 x 12000 的图像 我需要将其另存为 png 无法使用 BufferedImage 我已经被建议使用 RenderedImage 接口
  • 使 MediaController 显示而不隐藏

    我尝试使用 MediaController 来播放音乐 我希望 MediaController 出现 直到按下 后退 按钮 现在我尝试了下面的代码 MediaController mediaController new MediaContr
  • vim colorchem 显示不正确的颜色

    我刚刚抓住了 Ultimate Vim Distribution http vim spf13 com 它附带了一堆颜色方案 由于某种原因 在我的 vimrc 中设置颜色方案 例如 colorscheme 公司 会导致与颜色方案实际定义的颜
  • 为什么这个语句在 java 中不起作用 x ^= y ^= x ^= y;

    int x 1 int y 2 x y x y 我期望这些值被交换 但它给出 x 0 和 y 1 当我用C语言尝试时 它给出了正确的结果 您的陈述大致相当于此扩展形式 x x y y x x y 与 C 不同 在 Java 中 保证二元运算
  • 使用 ng-repeat 和过滤器时数组中对象的 $index

    我对 Angular 相当陌生 并且能够在某种程度上解决问题 但我似乎无法找到这个场景的答案 我有一系列对象 我正在从 firebase 中将其拉下来 我对对象使用 ng repeat 然后相应地显示数据 我试图将索引作为路由参数传递给 编
  • auto foo(...) ->decltype(this) 有一些解决方法吗?

    我有下一堂课 并尝试声明成员函数 该函数将返回指向该类型的指针 但下一个代码 template
  • Django Admin内联递归ManyToMany

    我有以下模型 其自身具有多对多关系 class Ticket models Model STATUS 0 Open 1 Closed status models SmallIntegerField default 0 choices STA
  • 将指针从基类型转换为子类型

    我正在为我的一个项目构建一个简单的游戏设计 我有以下课程 class Character public virtual void Display virtual void SetParameters char param class Non
  • 测量函数调用的 CPU 周期

    我正在寻找一种方法来测量线程上的函数调用所占用的 cpu 周期 伪代码示例 void HostFunction var startTick CurrentThread CurrentTick does not exist ChildFunc
  • 为什么我的 R 中的“Fizz Buzz”测试不起作用?

    我听说这是一个常见的面试问题 请问这里有什么想法 谢谢 for i in 1 100 if i 15 0 print fizzbuzz else if i 3 0 print fizz else if i 5 0 print buzz el
  • 当 Spark 主内存无法容纳文件时,Spark 如何读取大文件(PB)

    在这些情况下大文件会发生什么 1 Spark从NameNode获取数据的位置 Spark 是否会同时停止 因为根据 NameNode 的信息 数据大小太长 2 Spark按照datanode块大小对数据进行分区 但所有数据不能存储到主内存中
  • 选择带有 JavaScript 和/或 CSS 的 Shadow DOM?

    Chrome 似乎已被弃用 deep and gt gt gt and shadow https www chromestatus com features 6750456638341120 https www chromestatus c
  • 从 Pandas Dataframe 中删除取消行

    我有一份发给客户的发票清单 然而 有时会发送一张错误的发票 随后又被取消 我的 Pandas Dataframe 看起来像这样 除了更大 约 300 万行 index customer invoice nr amount date 0 1
  • 为什么“char **”类型的索引给出整个字符串?

    考虑这个片段 include
  • 在 Java 1.4 中控制音频剪辑的音量

    我本以为这会是一件容易做到的事情 但没有任何谷歌搜索找到任何解决方案 我为客户端编写了一个全屏运行的应用程序 允许用户翻阅教育书籍 以帮助教孩子们阅读 到目前为止 一切都很好 所显示材料中的一些短语会被读回给用户 并且到目前为止一切顺利 通
  • 如何对自定义 Wicket 组件进行单元测试

    鉴于这个非常简单的 Wicket 组件 public class ProductImage extends WebComponent public ProductImage String id Product p super id new
  • 如何在“border-*”属性中使用百分比?

    我有使用 Twitter Bootstrap 3 的代码 nav with right arrow 我使用它创建的border 特性 但是如果我在中使用很长的文本right arrow 它不会扩展 如果我使用百分比 代码将无法工作 示例Js