【问题标题】:How do I use gradient image which gradates in both directions as border-image?如何使用在两个方向上渐变的渐变图像作为边框图像?
【发布时间】:2019-07-29 06:27:32
【问题描述】:

我希望我的<div> 有一个底部边框,该边框从远离左侧的距离开始。就像:

abc
  ^^^^^^^^^^

其中^ 代表一条边框。

我使用border-image 实现了这一点。我将border-image 设置为linear-gradient() 图像,该图像开始透明,并从某些像素变为灰色。

<style>
    div {
        width: 200px;
        border-top-style: none;
        border-bottom-style: solid;
        border-width: 1px;
        border-image: linear-gradient(to right,
            transparent 0,
            transparent 1em,
            lightgray 1em,
            lightgray 100%) 100% 1;
    }
</style>
<div>abc</div>

现在新的要求是在现有线的正下方添加一条 1px 的白线来模拟 3d 效果。我以为我可以简单地为边框图像添加一个垂直渐变,但我不知道该怎么做。

【问题讨论】:

    标签: css linear-gradients border-image


    【解决方案1】:

    考虑多个背景而不是边框​​。我使用了不同的颜色来更好地查看结果:

    .box {
      width: 200px;
      background: 
        linear-gradient(blue, blue) 1em 100%/ 100% 1px no-repeat,
        linear-gradient(red, red)   1em 100%/ 100% 2px no-repeat;
    }
    &lt;div class="box"&gt;abc&lt;/div&gt;

    【讨论】:

      【解决方案2】:

      您可以通过box-shadow 实现它

      如果您在 div 中使用 display: flex,则应使用 position: absoute 定位伪 after 元素

      看这个例子:

      body {
            background-color: lightgreen;
          }
          div { 
          display: flex;
          position: relative;
          
          }
          div:after {
            content: "";
            position: absolute;
            bottom: 0;
            left: 0;
            display: block;
            width: 200px;
            height: 1px;
            box-shadow: 10px 1px 0 0 lightgray, 10px 2px 0 0 white;
          }
      <div>abc</div>
      <div>edf</div>

      【讨论】:

      • 在简单的display: block div 中效果很好,但在我的情况下,div 是display: flex,这使得它位于最后一个孩子的右侧。如果我能适应,我正在努力。
      • 嗯,如果你提到这个问题会更好。您可以根据需要使用absolute 定位来对齐它。我会更新答案
      • 这几乎可以工作,但是如果 div 是width: 200px;(你在更新的代码中删除了它),边框会从 div 中溢出,尽管它并不难处理。根据您的代码,我设置了overflow-x: hidden; bottom: 2px; 并得到了令人满意的结果。 bottom: 2px; 是因为没有它,由于overflow-x: hidden;,这条线将不可见。
      • 我接受了另一个答案。您的答案有效,但涉及更多更改。感谢您的快速回答!
      猜你喜欢
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多