css 具有多种颜色的边框颜色

bxjv4tth  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(215)

我找到了一些关于border-color的信息,结果发现,你可以用不同的颜色指定每个边框。我的问题如下:可以用两种或多种颜色来指定左边框吗?问题是,我有一个带有li元素的导航栏,这些元素由paddingborder属性划分。例如:

li {
    float: left;
    padding-left&right: 10px;
    border-left: 2px solid white;
}

并且边框和li元素中的文本一样高。我需要的是让边框比文本短。所以我想我可以给予它三种颜色:透明-白色-透明。
也许有一个现实的方法来做到这一点?这只是在我的头上,我发现的信息,这是不可能的,以缩短边界下的高度li元素。

xu3bshqb

xu3bshqb1#

最合适的实现方式是利用border-image属性和Stephen Brickner回答中提到的线性梯度,但缺点是目前浏览器的支持非常低。
还有一些其他方法具有比可以使用的更好的浏览器支持,它们如下:

方法1:带边框的伪元素

您可以使用高度比父级li元素短的伪元素(:before:after),向其添加border并将其放置在适当的位置以实现所需的效果。分隔线的粗细由伪元素边框的宽度确定。

.right-to-left {
  position: relative;
  float: left;
  width: 150px;
  padding: 0px 10px;
}
.right-to-left:after {
  position: absolute;
  content: '';
  right: 0px;
  height: 50%;
  top: 25%;
  border-right: 2px solid;
}

/* just for demo */

body {
  background: black;
  background-image: radial-gradient(circle, #3F9CBA 0%, #153346 100%);
  color: white;
}
<div class="right-to-left">Some text <br/> and more</div>
<div class="right-to-left">Some text <br/> and more</div>
<div class="right-to-left">Some text <br/> and more</div>

在可能的选项中,此方法具有最高的浏览器支持。但是,如果分隔符需要多种颜色(或)需要渐变效果,则不能使用此方法。

方法二:背景梯度

您可以将linear-gradient作为背景图像添加到元素中,并将其适当定位以生成比文本短的行。在此方法中,分隔线的粗细由背景图像的宽度确定。
一个二个一个一个
浏览器对此的支持比border-image方法好,但比伪元素方法差,优点是分隔符可以有多种颜色,甚至可以像上面的代码片段一样使用渐变模式。

wn9m85ua

wn9m85ua2#

你必须对它使用一个变换。例如:

.right-to-left {
    border-width: 3px 3px 3px 0;
    border-style: solid;
    -webkit-border-image: 
      -webkit-gradient(linear, 0 0, 100% 0, from(black), to(rgba(0, 0, 0, 0))) 1 100%;
    -webkit-border-image: 
      -webkit-linear-gradient(left, black, rgba(0, 0, 0, 0)) 1 100%;
    -moz-border-image:
      -moz-linear-gradient(left, black, rgba(0, 0, 0, 0)) 1 100%; 
    -o-border-image:
      -o-linear-gradient(left, black, rgba(0, 0, 0, 0)) 1 100%;
    border-image:
      linear-gradient(to left, black, rgba(0, 0, 0, 0)) 1 100%;     
}

相关问题