具有从阴影创建的边框的剪辑路径的边框半径 [英] border radius for a clip path having border created from shadow

查看:31
本文介绍了具有从阴影创建的边框的剪辑路径的边框半径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的形状,其中顶部 div 是动态的,我需要在这些角上添加边框半径.形状由两个共享线性渐变背景的 div 组成.边框是使用阴影生成的.

这是我的代码.

#parent {宽度:最大内容;背景:线性渐变(到左下角,透明,rgba(255,255,255,0.75),透明,rgba(255,255,255,0.75),透明,rgba(255,255,255,0.75))黄色;}#池容器{填充:10px;宽度:200px;边距:0 5px 0 5px;显示:弹性;弹性方向:列;位置:相对;过滤器:投影(0px -2px 0px 黑色)投影(0px 2px 0px 黑色)投影(-2px 0px 0px 黑色)投影(2px 0px 0px 黑色)}#侧步{高度:80px;宽度:80px;过渡:全部1s;}#pool-container:hover #side-step {左边距:120px;}#回避,#主池{剪辑路径:多边形(0 0, 100% 0, 100% 100%, 0 100%);}#side-step::before,#main-pool::before {内容: "";位置:绝对;顶部:0;左:0;右:0;底部:0;背景:线性梯度(120deg, rgba(248, 201, 129, 1) 0%, rgba(227, 76, 145, 1) 100%);}#主池{宽度:100%;高度:150px;}

<div id="side-step"></div><div id="主池"></div>

解决方案

这里有一个想法,我将考虑在 这个以前的答案.调整 stdDeviation 值来控制半径:

#parent {宽度:最大内容;背景:线性渐变(到左下角,透明,rgba(255,255,255,0.75),透明,rgba(255,255,255,0.75),透明,rgba(255,255,255,0.75))黄色;}#池容器{填充:10px;宽度:200px;边距:0 5px 0 5px;显示:弹性;弹性方向:列;位置:相对;过滤器:url('#goo') drop-shadow(0px -2px 0px black) drop-shadow(0px 2px 0px black) drop-shadow(-2px 0px 0px black) drop-shadow(2px 0px 0px black)}#侧步{高度:80px;宽度:80px;过渡:全部1s;}#pool-container:hover #side-step {左边距:120px;}#回避,#主池{剪辑路径:多边形(0 0, 100% 0, 100% 100%, 0 100%);}#side-step::before,#main-pool::before {内容: "";位置:绝对;顶部:0;左:0;右:0;底部:0;背景:线性梯度(120deg, rgba(248, 201, 129, 1) 0%, rgba(227, 76, 145, 1) 100%);}#主池{宽度:100%;高度:150px;}

<div id="side-step"></div><div id="主池"></div>

<svg style="可见性:隐藏;位置:绝对;"width="0" height="0" xmlns="http://www.w3.org/2000/svg" version="1.1"><定义><filter id="goo"><feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"/><feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 19 -9" result="goo"/><feComposite in="SourceGraphic" in2="goo" operator="atop"/></过滤器></defs></svg>

I have this shape where top div is dynamic and i need to add border radius accross these corners. shape is made of two divs having shared linear gradient background. and border is generated using drop-shadows.

here is my code.

#parent {
  width: max-content;
  background:linear-gradient(to bottom left, transparent,rgba(255,255,255,0.75),transparent,rgba(255,255,255,0.75),transparent,rgba(255,255,255,0.75)) yellow;
}

#pool-container {
  padding: 10px;
  width: 200px;
  margin: 0 5px 0 5px;
  display: flex;
  flex-direction: column;
  position: relative;
  filter: drop-shadow(0px -2px 0px black) drop-shadow(0px 2px 0px black) drop-shadow(-2px 0px 0px black) drop-shadow(2px 0px 0px black)
}

#side-step {
  height: 80px;
  width: 80px;
  transition: 1s all;
}

#pool-container:hover #side-step {
  margin-left: 120px;
}

#side-step,
#main-pool {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}

#side-step::before,
#main-pool::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient( 120deg, rgba(248, 201, 129, 1) 0%, rgba(227, 76, 145, 1) 100%);
}

#main-pool {
  width: 100%;
  height: 150px;
}

<div id="pool-container">
  <div id="side-step"></div>
  <div id="main-pool"></div>
</div>

解决方案

Here is an idea where I will consider an SVG filter I used in this previous answer. Adjust the stdDeviation value to control the radius:

#parent {
  width: max-content;
  background:linear-gradient(to bottom left, transparent,rgba(255,255,255,0.75),transparent,rgba(255,255,255,0.75),transparent,rgba(255,255,255,0.75)) yellow;
}

#pool-container {
  padding: 10px;
  width: 200px;
  margin: 0 5px 0 5px;
  display: flex;
  flex-direction: column;
  position: relative;
  filter: url('#goo') drop-shadow(0px -2px 0px black) drop-shadow(0px 2px 0px black) drop-shadow(-2px 0px 0px black) drop-shadow(2px 0px 0px black) 
}

#side-step {
  height: 80px;
  width: 80px;
  transition: 1s all;
}

#pool-container:hover #side-step {
  margin-left: 120px;
}

#side-step,
#main-pool {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}

#side-step::before,
#main-pool::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient( 120deg, rgba(248, 201, 129, 1) 0%, rgba(227, 76, 145, 1) 100%);
}

#main-pool {
  width: 100%;
  height: 150px;
}

<div id="pool-container">
  <div id="side-step"></div>
  <div id="main-pool"></div>
</div>

<svg style="visibility: hidden; position: absolute;" width="0" height="0" xmlns="http://www.w3.org/2000/svg" version="1.1">
    <defs>
        <filter id="goo"><feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />    
            <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 19 -9" result="goo" />
            <feComposite in="SourceGraphic" in2="goo" operator="atop"/>
        </filter>
    </defs>
</svg>

这篇关于具有从阴影创建的边框的剪辑路径的边框半径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆