更具体地说,我使用聚合物纸张阴影。
我试图删除paper-shadow
框的两边以创建一个简单的箭头框,但我似乎无法摆脱它。我已尝试删除position: absolute
,但这似乎并没有消除重叠行为。
这是我的html / css的样子:
HTML:
<div class="content-container">
<paper-shadow z="1">
<div class="content">
<h1>{{heading}}</h1>
<content></content>
</div>
<paper-shadow class="triangle" z="1"> </paper-shadow>
</paper-shadow>
</div>
CSS:
.content-container
flex: 3 0 45%
order: 1
position: relative
.content, .triangle
background-color: #fafafa
.content
padding: 20px
.triangle
position: absolute
height: 20px
width: 20px
top: 50%
left: 100%
transform: translate(-50%, -50%) rotate(-45deg)
box-shadow
来自paper-shadow
:https://www.polymer-project.org/docs/elements/paper-elements.html#paper-shadow
答案 0 :(得分:3)
您尝试做的事情无法使用CSS完成,或者至少不是您认为可以完成的方式。如果你有两个盒子阴影重叠的元素,而其中一个元素需要高于另一个元素(z-index),你就无法从一半的元素中删除重叠的部分。
然而,有一个&#34; hacky&#34;这样做的方法是将框阴影按原样渲染,然后用一个简单的矩形覆盖它以覆盖重叠的阴影。伪类最好这样做,但这只适用于你使用的背景颜色对于两个元素都相同而且你需要在你的元素中使用填充,这样这个人工矩形不会与你的内容重叠。
示例HTML:
<div class="box">
<div class="triangle"></div>
</div>
和CSS:
.box {
background:white;
width:200px;
height:100px;
box-shadow:0px 0px 15px rgba(0, 0, 0, 0.4);
position:relative;
padding:25px;
}
.triangle {
position: absolute;
height: 20px;
width: 20px;
top: 50%;
left: 100%;
transform: translate(-50%, -50%) rotate(-45deg);
background: white;
box-shadow:0px 0px 15px rgba(0, 0, 0, 0.4);
}
.box:after {
position:absolute;
content:'';
background: white;
height:40px;
width:25px;
right:0;
top:50%;
margin-top:-20px;
}
答案 1 :(得分:2)
或者您也可以仅使用pseudo
元素before
和after
作为三角形,阴影使用:before
添加三角形,:after
添加{{} 1}}
shadow
body {
background-color: #eee;
padding: 20px;
}
.box {
background: white;
width: 200px;
height: 100px;
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.4);
position: relative;
padding: 25px;
}
.box:after {
content: '';
position: absolute;
height: 31px;
width: 31px;
top: 50%;
left: 100%;
transform: translate(-50%, -50%) rotate(-45deg);
background: white;
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.4);
z-index: -1;
}
.box:before {
content: '';
position: absolute;
height: 0px;
width: 0px;
top: 50%;
left: 100%;
transform: translate(-50%, -50%) rotate(-45deg);
background: white;
border-width: 30px 30px 0px 0px;
border-color: transparent white;
border-style: solid;
}