【问题标题】:HTML/CSS: How to fade the left and right edges of a div?HTML/CSS:如何淡化 div 的左右边缘?
【发布时间】:2020-07-18 11:49:50
【问题描述】:

问题陈述:

您好,我想使用纯 CSS 从左右边缘淡出 div 及其内容。 目前,我可以根据对堆栈溢出问题的回答来实现这一点。

代码:

   .container {
      height: 234px;
      width: 234px;
      overflow: scroll;

      mask-image: linear-gradient(transparent,
          black 20%,
          black 80%,
          transparent 100%);
      -webkit-mask-image: linear-gradient(transparent,
          black 20%,
          black 80%,
          transparent 100%);
    }

    .container::-webkit-scrollbar {
      display: none;
    }
  <div class="container">
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit
      dolorem libero, dolor, fuga illo nobis rem ipsam ipsa
      perferendis dolore autem fugiat! Dicta eius repellendus totam
      qui maiores odio a! Lorem ipsum dolor sit amet consectetur
      adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis
      rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius
      repellendus totam qui maiores odio a! Lorem ipsum dolor sit amet
      consectetur adipisicing elit. Impedit dolorem libero, dolor,
      fuga illo nobis rem ipsam ipsa perferendis dolore autem fugiat!
      Dicta eius repellendus totam qui maiores odio a! Lorem ipsum
      dolor sit amet consectetur adipisicing elit. Impedit dolorem
      libero, dolor, fuga illo nobis rem ipsam ipsa perferendis dolore
      autem fugiat! Dicta eius repellendus totam qui maiores odio a!
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit
      dolorem libero, dolor, fuga illo nobis rem ipsam ipsa
      perferendis dolore autem fugiat! Dicta eius repellendus totam
      qui maiores odio a! Lorem ipsum dolor sit amet consectetur
      adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis
      rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius
      repellendus totam qui maiores odio a!
    </p>
  </div>

我怎样才能使线性渐变使左右边缘消失而不是顶部和底部?

另外:这种语法非常简洁,但我不明白传递给 linear-gradient 的参数如何能够指定仅从顶部和底部淡化容器,并将其余部分保留为它是。简而言之,我们没有指定任何方向,例如 to-topto-bottom 那么这实际上是如何工作的?

注意:我知道这个问题与this 重复。但是在问题上指定的the answer 并不能解决我的用例,因为它不会淡出 div 的内部内容。

谢谢! :)

【问题讨论】:

  • 将文本放入p中,然后将p放入带有“width:tot px;”的div中position: relative”,并将 div::after 和 div::before 定位为“content”;位置:绝对;顶部/底部:0px; left:0 right:0”,然后给那些添加阴影(对不起,我在手机上,所以我无法做出严格的回答)
  • 你可以在这里问:stackoverflow.com/questions/62678236/… .. 你已经在那里得到了答案
  • 我不想在选择器前后使用。
  • @TemaniAfif 是的,我本可以,但是,我可能不得不编辑问题和东西。与新问题相比,已编辑问题的受众较少。纠正我,如果我的想法是错误的:)
  • 不需要编辑问题,你问回答的人。你甚至没有评论我的回答,我可以在 2 秒内轻松地从左到右

标签: javascript html css reactjs redux


【解决方案1】:

默认的线性渐变从上到下运行。因此,您需要使用透明的to leftto right。为了使其更清晰,您必须降低透明度。在两种或更多颜色之间进行过渡,从而形成一条直线前进的颜色带。 See here.

.container {
      height: 234px;
      width: 234px;
      overflow: scroll;

      mask-image: linear-gradient(transparent,
          black 20%,
          black 80%,
          transparent 100%);
      -webkit-mask-image: linear-gradient( to right,transparent,
          black 20%,
          black 80%,
          transparent 100%);
          
    }

    .container::-webkit-scrollbar {
      display: none;
    }


 
<div class="container">
    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit
      dolorem libero, dolor, fuga illo nobis rem ipsam ipsa
      perferendis dolore autem fugiat! Dicta eius repellendus totam
      qui maiores odio a! Lorem ipsum dolor sit amet consectetur
      adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis
      rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius
      repellendus totam qui maiores odio a! Lorem ipsum dolor sit amet
      consectetur adipisicing elit. Impedit dolorem libero, dolor,
      fuga illo nobis rem ipsam ipsa perferendis dolore autem fugiat!
      Dicta eius repellendus totam qui maiores odio a! Lorem ipsum
      dolor sit amet consectetur adipisicing elit. Impedit dolorem
      libero, dolor, fuga illo nobis rem ipsam ipsa perferendis dolore
      autem fugiat! Dicta eius repellendus totam qui maiores odio a!
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit
      dolorem libero, dolor, fuga illo nobis rem ipsam ipsa
      perferendis dolore autem fugiat! Dicta eius repellendus totam
      qui maiores odio a! Lorem ipsum dolor sit amet consectetur
      adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis
      rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius
      repellendus totam qui maiores odio a!
    </p>
  </div>

【讨论】:

  • 嘿,完美!您能否使用我的问题中 Also 部分中提出的语法来取悦我? :)
  • @VinaySharma 看到这个webdesignerdepot.com/2010/11/…
  • 我的意思是这些论点应该是什么意思:transparent, black 40%, black 60%, transparent 100%。他们如何指定只淡化顶部和底部,为什么他们的百分比保持不同?
  • @VinaySharma,它是指定颜色所需的透明度,当你改变它时,你会得到不同程度的透明度。请参阅我提供的链接。
  • 我读了这篇文章,但它是关于与十六进制代码和东西有关的东西。并没有真正解释线性渐变中透明属性的使用以及不同百分比的原因。
【解决方案2】:

这里是代码。我把 justify 这样你就可以更好地看到它。 这是example

  .container {
  width: 234px;
  text-align: justify;
  mask-image: linear-gradient(to left, transparent, black 40%, black 60%, transparent 100%);
  -webkit-mask-image: linear-gradient(to left, transparent, black 40%, black 60%, transparent 100%);
<div class="container">
  <p>
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius repellendus totam qui maiores odio a! Lorem ipsum dolor sit amet consectetur adipisicing
    elit. Impedit dolorem libero, dolor, fuga illo nobis rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius repellendus totam qui maiores odio a! Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit dolorem libero, dolor, fuga illo
    nobis rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius repellendus totam qui maiores odio a! Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis rem ipsam ipsa perferendis dolore autem
    fugiat! Dicta eius repellendus totam qui maiores odio a! Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius repellendus totam qui maiores
    odio a! Lorem ipsum dolor sit amet consectetur adipisicing elit. Impedit dolorem libero, dolor, fuga illo nobis rem ipsam ipsa perferendis dolore autem fugiat! Dicta eius repellendus totam qui maiores odio a!
  </p>
</div>

如果您需要较弱的淡入淡出版本:

<style>
.container {
    width: 234px;
    text-align: justify;
    mask-image: linear-gradient(to left,#00000030, black 20%, black 80%, #00000030 100%);
    -webkit-mask-image: linear-gradient(to left,#00000030, black 20%, black 80%, #00000030 100%);
    }
</style>

【讨论】:

  • 嘿,完美!您能否使用我的问题中 Also 部分中提出的语法来取悦我? :)
  • 默认是从上到下。请为答案投票:) 谢谢
  • 我知道默认是从上到下。我的意思是这些论点应该是什么意思:transparent, black 40%, black 60%, transparent 100%。他们如何指定只淡化顶部和底部,为什么他们的百分比保持不同?
  • @VinaySharma 也许是时候从你想使用的规则中熟悉规范了,MDN 在大多数情况下比 W3C 更容易。线性梯度?见:developer.mozilla.org/en-US/docs/Web/CSS/…。 /掩码?developer.mozilla.org/en-US/docs/Web/CSS/mask-image
猜你喜欢
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
相关资源
最近更新 更多