我正在try 在div元素上实现渐变模糊效果,该效果应该从下到上延伸到整个元素.然而,我不能让它正常工作.这种效果的表现并不均匀,但具有非常奇怪的 colored颜色 渐变.我做错了什么?

.gradient-blur {
  position: relative;
  width: 100%;
  height: 100%;
  backdrop-filter: blur(10px);
  opacity: 1;
  mask: linear-gradient(transparent, black 75%);
}
<div class="gradient-blur">
  <span class="showMoreButton" (click)="expandMessage()">
        Mehr anzeigen
    </span>
</div>

Heres what my problem looks like:

My desired output is more like this:

推荐答案

经过一些试验,我解决了我的问题.

以下是代码:

let bool = false;

function showMore() {
  var textContainer = document.getElementById("textContainer");
  var blurContainer = document.getElementById("blur");
  var showMoreButton = document.getElementById("showMoreButton");
  
  if(bool == false) {
    bool = true; 
    textContainer.style.height = "auto";
    blurContainer.style.display = "none";
    showMoreButton.innerHTML = "Show less";
  } else {
    bool = false;
    textContainer.style.height = "25vh";
    blurContainer.style.display = "inline";
    showMoreButton.innerHTML = "Show more";
  }
}
body {
  display: flex;
  justify-content: center;
  overflow: auto;
  margin: 50px 0 50px 0;
}

.container {
  position: absolute; 
  width: 25vw;
  height: 25vh;
  border: 1px solid black;
  overflow: hidden; 
}

.container p {
  padding: 10px;
  text-align: justify; 
}

.gradient-blur {
  display: flex;
  justify-content: center;
  position: absolute; 
  padding: unset;
  bottom: 0; 
  height: 50%; 
  width: 100%;
}

.gradient-blur > div,
.gradient-blur::before,
.gradient-blur::after {
  position: absolute;
  inset: 0;
}
.gradient-blur::before {
  content: "";
  z-index: 1;
  backdrop-filter: blur(0.2px);
  mask: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 1) 16.5%
  );
}
.gradient-blur > div:nth-of-type(1) {
  z-index: 2;
  backdrop-filter: blur(0.4px);
  mask: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 16.5%,
    rgba(0, 0, 0, 1) 33%
  );
}
.gradient-blur > div:nth-of-type(2) {
  z-index: 3;
  backdrop-filter: blur(0.8px);
  mask: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 33%,
    rgba(0, 0, 0, 1) 49.5%
  );
}
.gradient-blur > div:nth-of-type(3) {
  z-index: 4;
  backdrop-filter: blur(1.6px);
  mask: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 49.5%,
    rgba(0, 0, 0, 1) 66%
  );
}
.gradient-blur::after {
  content: "";
  z-index: 8;
  backdrop-filter: blur(2.2px);
  mask: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 66%,
    rgba(0, 0, 0, 1) 100%
  );
}

#showMoreButton {
  position: absolute;
  bottom: 5px; 
  height: 25px;
  width: 25%;
  color: #386FE5;
  z-index: 9999;
  cursor: pointer;
}
<div class="container" id="textContainer">
    <p>
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed  diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.   

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.   

Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
  </p>
  <div class="gradient-blur" id="blur">
    <div></div>
    <div></div>
    <div></div>
  </div> 
</div>
<button type="button" id="showMoreButton" onclick="showMore()"> Show more </button>

在完整视图中打开代码段以正确查看所有内容.

Html相关问答推荐

后续使用收件箱从网页表中提取值

动态FormControl值在Angular 上绑定错误的问题

风格规则应该适用于响应图像的哪些方面?哪种规则适用于<;图片和gt;,哪种规则适用于<;img>;?

在WooCommerce单一产品页面上使产品图片库粘滞(固定)

平移变换下的SVG剪辑路径行为

禁用的文本区域会丢失换行符

水平行中按钮的垂直偏移

SVG的动态CSS

Flex:第一个 div 有列,下一个 div 有行

为什么要添加换行符(至少在 Google Chrome 中)

perl hdb 调试器:浏览器以错误的编码显示 UTF-8 源代码

使用shinyjqui拖放到网格表中

四开:如何右对齐 PDF *和* HTML 中的文本

CSS flex:0 0 auto创建了1像素的间隙

css 网格创建空行和列

屏幕缩小时背景图像裁剪高度

修复 Vue 3 Component 中的 CSS 以显示后面的 Select 器样式而无需 !important

我如何让这个动画播放,然后停止,然后在设定的时间后再次播放? (CSS)

为什么相同持续时间的转换需要不同的时间?

如何在没有 JS 的情况下创建带搜索的 Select 菜单