仅从左侧删除阴影

Remove drop-shadow from left side only

我有这个按钮,它有一个 :after 来创建一个箭头。我给按钮一个框阴影,并给 :after 一个投影,使 :after 看起来像是按钮的一部分。但是 :after 的左边缘下方有一点阴影 运行,这使得它看起来与按钮断开连接。见图:

有什么方法可以去掉左边的阴影 运行?

箭头出于某种原因离开了它下方的按钮,但没关系,只需尝试将箭头的阴影 运行 停在左边缘。

代码如下:

#go-button {
  position:relative;
  border-radius: 6px;
  height: 64px;
  text-decoration: none;
  width: 80%;
  background-color: #00BFA5;
  padding: 12px;
  border: 0px solid #Fc4747;
  color: white;
  cursor: pointer;
  font-size: 14px;
  font-weight: 200;
  z-index: 100;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); }

.bubble:after {
  content: '';
  position: absolute;
  border-style: solid;
  border-width: 15px 0 15px 24px;
  border-color: transparent #00BFA5;
  display: block;
  width: 0;
  z-index: 1;
  margin-top: -15px;
  right: -24px;
  top: 50%;
  -webkit-filter: drop-shadow(0px 4px 5px rgba(130, 130, 130, 0.7));
  filter: drop-shadow(0px 4px 5px rgba(130, 130, 130, 0.7));
  -ms-filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')";
  filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')"; }
<button id="go-button" type="submit" class="bubble">
  GO
</button>

box-shadow 属性 可能是您想在这里使用的。阴影用于更复杂的对象或 SVG。

您只需要在 :after 元素周围应用更好的框阴影。

.bubble:after {
   box-sizing: border-box;    
   border: 1em solid #00BFA5;
   border-color: transparent transparent #00BFA5 #00BFA5;
   transform-origin: 0 0;
   transform: rotate(-135deg);
   display: block;
   width: 0;
   z-index: 1;
   margin-top: -15px;
   right: -250px;
   top: 50%;
   box-shadow: -3px 3px 3px 0 rgba(0, 0, 0, 0.4);
}

因为你没有提供工作 fiddle 我会把旋转等的调整留给你,但一般的想法是你需要在设置后设置盒子阴影的样式设置适当的边框和边框颜色。

JsFiddle

您实际上 想要使用 drop-shadow,因为这是一个 "complex object"。将其移动到父元素;您会发现阴影已正确应用于 after 伪元素:

#go-button {
  position:relative;
  border-radius: 6px;
  height: 64px;
  text-decoration: none;
  width: 80%;
  background-color: #00BFA5;
  padding: 12px;
  border: 0px solid #Fc4747;
  color: white;
  cursor: pointer;
  font-size: 14px;
  font-weight: 200;
  z-index: 100;
  -webkit-filter: drop-shadow(0px 4px 5px rgba(130, 130, 130, 0.7));
  filter: drop-shadow(0px 4px 5px rgba(130, 130, 130, 0.7));
  -ms-filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')";
  filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')";
}

.bubble:after {
  content: '';
  position: absolute;
  border-style: solid;
  border-width: 15px 0 15px 24px;
  border-color: transparent #00BFA5;
  display: block;
  width: 0;
  z-index: 1;
  margin-top: -15px;
  right: -24px;
  top: 50%;
}
<button id="go-button" type="submit" class="bubble">
  GO
</button>

如果您还没有对元素使用 :before,您可以随时使用另一个伪元素隐藏阴影。另一种选择是抵消阴影,但这实际上只适用于小阴影。

第一个例子:

#go-button {
  position:relative;
  border-radius: 6px;
  height: 64px;
  text-decoration: none;
  width: 80%;
  background-color: #00BFA5;
  padding: 12px;
  border: 0px solid #Fc4747;
  color: white;
  cursor: pointer;
  font-size: 14px;
  font-weight: 200;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  z-index: 1;
}

.bubble:after {
  content: '';
  position: absolute;
  border-style: solid;
  border-width: 15px 0 15px 24px;
  border-color: transparent #00BFA5;
  display: block;
  width: 0;
  margin-top: -15px;
  right: -24px;
  top: 50%;
  -webkit-filter: drop-shadow(0px 4px 5px rgba(130, 130, 130, 0.7));
  filter: drop-shadow(0px 4px 5px rgba(130, 130, 130, 0.7));
  -ms-filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')";
  filter: "progid:DXImageTransform.Microsoft.Dropshadow(OffX=0, OffY=2, Color='#444')";
}

.bubble:before {
  display: block;
  position: absolute;
  content: '';
  right: 0;
  top: 8px;
  height: 48px;
  width: 8px;
  background: #00BFA5;
  z-index: 2;
}
<button id="go-button" type="submit" class="bubble">
  GO
</button>