如何仅使用 CSS 创建箭头? [复制]

Posted

技术标签:

【中文标题】如何仅使用 CSS 创建箭头? [复制]【英文标题】:How can I create an arrow using only CSS? [duplicate] 【发布时间】:2013-08-29 15:54:56 【问题描述】:

我看过下面的例子:

.arrow 
   height: 0;
   width: 0;
   border: 4px solid transparent;

.arrow.up 
   border-bottom-color: #000;

.arrow.down 
   border-top-color: #000;

http://jsfiddle.net/FrsGR/

但是我无法理解它是如何创建箭头的。谁能帮我解释一下?

【问题讨论】:

由于图像没有大小(宽度/高度),您看到的只是边框...边框为 4px 宽,可以分为 4 个部分(也称为三角形).. .上、下、左、右 有点难以解释,但所有 4 个边都有边界,并且相互重叠。想象一个带有 X 的正方形……每个“切片”都是一个边框……侧面(透明)边框与顶部或底部的黑色边框重叠,因此呈现出箭头的外观。希望这有助于解释一点。如果您需要澄清,请告诉我 哼....我修改了你的小提琴,在这个小提琴中,我想你可以看得很清楚。 jsfiddle.net/FrsGR/193 @JL 把它写成答案。 已经回答了,这里是动画版:jsfiddle.net/xq8Ce 【参考方案1】:

拿一个盒子。假设它高 5 像素,宽 5 像素。现在说它有一个 4px 的边框。这是您应该设想的:http://jsfiddle.net/FrsGR/190。

.arrow  // box
   height: 5px;
   width: 5px;
   border: 4px solid blue;

现在假设该框没有宽度或高度,因此您只剩下边框:http://jsfiddle.net/FrsGR/885/。

.arrow  // box with no width/height
   height: 0;
   width: 0;
   border: 4px solid blue;

它们现在相互重叠,这就是创造箭头的神奇之处。重叠线是从每个角到中心对角线绘制的。因此,最终结果是顶部、左侧和右侧的透明三角形,底部有一个黑色三角形。希望对您有所帮助!

很好的参考:How do CSS triangles work?

【讨论】:

这是一个很好的参考。很高兴看到我明白这是如何工作的:)【参考方案2】:

我以前不知道这个技巧,但我想我明白了。底部边框不是方形的,它的侧面是斜面的。左边框将在顶部和底部倾斜。这是如此不同颜色的边界干净地相遇。因为箭头元素的高度和宽度为 0,所以边框段的底部宽度与您在边框规则中指定的一样宽,但会缩小到 0px 的宽度(容器的大小)。

您可以通过设置不同的边框粗细或更改边框规则的“边”来玩转效果。 “箭头”始终指向与规则中设置的方向相反的方向。底部边框“指向”上方;右边框“指向”左侧。

这是一个快速图表:

向左是箭头技巧。右是更典型的边框,其中容器有一些尺寸。

【讨论】:

【参考方案3】:

CSS 正在围绕一个点(没有宽度/高度,但有一些 x,y 坐标)创建一个边框,其尺寸为 .arrow 中指定的 4px。这就像创建一个半径为 4px 的圆,除了由于 CSS 边框的性质,“圆”实际上是一个正方形。

您可以这样查看半径为 4px 的正方形的所有四个象限:

.arrow.up 
    border-top-color:blue;
    border-right-color:green;
    border-left-color:red;
   border-bottom-color: #000;

这是一个使用 40 像素而不是 4 像素大小的放大示例:

http://jsfiddle.net/dqB32/1/

【讨论】:

以上是关于如何仅使用 CSS 创建箭头? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 css 的 content 属性添加 html 特殊字符(右箭头)? [复制]

如何在带有 CSS 的元素后添加向下箭头? [复制]

用css创建边框箭头

你如何创建一个命名的异步箭头函数? [复制]

使用纯 CSS 创建向上和向下箭头图标或按钮

如何在 CSS 的选择输入字段中同时制作上/下箭头?