3 回答

TA贡献1828条经验 获得超6个赞
使用伪元素避免额外的元素
.triangle
top:
left:
right:
bottom:
.oneAndOnlyDiv {
height: 100px;
width: 200px;
border: 3px solid gray;
background: lightgray;
position: relative;
}
.oneAndOnlyDiv:before {
content: "";
position: absolute;
top: 100%;
left: 20px;
width: 0;
border-top: 20px solid black;
border-left: 20px solid transparent;
border-right: 20px solid transparent;
}
<div class="oneAndOnlyDiv">Main div</div>
命中测试
div { height: 100px; width: 200px; background: gray; position: relative; cursor:pointer;}div:before { content: ""; position: absolute; top: 100%; left: 20px; height: 20px; width: 20px; background: black; transform: rotate(45deg); transform-origin:top right;}
<div>Only element</div>
或者使用扭曲的伪元素:
div { height: 100px; width: 200px; background: gray; position: relative; cursor:pointer;}div:before { content: ""; position: absolute; top: 90%; left: 20px; height: 30%; width: 20px; background: black; transform: skewY(-45deg); transform-origin:bottom left; z-index:-1;}
<div>Only element</div>
calc
div { height: 100px; width: 200px; background: gray; position: relative; cursor:pointer;}div:before { content: ""; position: absolute; top: -webkit-calc(100% - 10px); /*may require prefix for old browser support*/ top: calc(100% - 10px); /*i.e. half the height*/ left: 20px; height: 20px; width: 20px; background: gray; transform: rotate(45deg);}
<div>Only element</div>
添加边框
border-bottom
border-right
inherit
边界
div { height: 100px; width: 200px; background: gray; position: relative; cursor:pointer; border:3px double black;}div:before { content: ""; position: absolute; top: -webkit-calc(100% - 10px); /*may require prefix for old browser support*/ top: calc(100% - 10px); /*i.e. half the height*/ left: 20px; height: 20px; width: 20px; background: gray; transform: rotate(45deg); border-bottom:inherit; border-right:inherit; box-shadow:inherit;}
<div>Only element</div>
方框阴影:
:after
div { height: 100px; width: 200px; background: gray; position: relative; cursor:pointer; box-shadow: 5px 5px 10px 2px black;}div:before,div:after { content: ""; position: absolute; top: -webkit-calc(100% - 10px); /*may require prefix for old browser support*/ top: calc(100% - 10px); /*i.e. half the height*/ left: 20px; height: 20px; width: 20px; background: gray; transform: rotate(45deg);z-index:-1; box-shadow:inherit;}div:after{ box-shadow:none; z-index:8; }
<div>Only element</div>
把一切都放在一起
还可以使用“边框半径”属性将边框半径再次添加到消息框或语音气泡中:
div {
height: 100px;
width: 200px;
background: gray;
position: relative;
cursor:pointer;
border:3px double black;
border-radius:10px;
}
div:before {
content: "";
position: absolute;
top: -webkit-calc(100% - 10px); /*may require prefix for old browser support*/
top: calc(100% - 10px); /*i.e. half the height*/
left: 20px;
height: 20px;
width: 20px;
background: gray;
transform: rotate(45deg);
border-bottom:inherit;
border-right:inherit;
box-shadow:inherit;
}
<div>Only element</div>
div { height: 100px; width: 200px; background: gray; position: relative; cursor:pointer; border:3px double black; border-radius:10px;}div:before { content: ""; position: absolute; top: -webkit-calc(100% - 13px); /*may require prefix for old browser support*/ top: calc(100% - 13px); /*i.e. half the height + border*/ left: 20px; height: 20px; width: 20px; background: gray; transform: rotate(45deg); border:3px double transparent; border-bottom:inherit; border-right:inherit; box-shadow:inherit; border-radius:50%;}
<div>Only element</div>
不喜欢用“魔法数字”?
transform:translate(50%)
您不需要知道边框的大小,也不需要知道宽度的一半。 您将使您的消息框/气泡的定位更加动态,并将支持进一步的大小。
div {
height: 100px;
width: 200px;
background: gray;
position: relative;
cursor: pointer;
border: 3px double black;
border-radius: 10px;
}
div:before {
content: "";
position: absolute;
top: 100%;
left: 30px;
height: 20px;
width: 20px;
background: gray;
box-sizing:border-box;
transform: rotate(45deg) translate(-50%);
border-bottom: inherit;
border-right: inherit;
box-shadow: inherit;
}
<div>Only element</div>
div { height: 100px; width: 200px; background: gray; position: relative; cursor: pointer; border: 3px double black; border-radius: 10px;}div:before { content: ""; position: absolute; top: 100%; left: 10%; height: 20px; width: 20px; background: gray; box-sizing: border-box; transform: rotate(45deg) translate(-50%); border-bottom: inherit; border-right: inherit; box-shadow: inherit; transition: all 0.8s;}div:hover:before { left: 90%;}
<div>Only element</div>
div { height: 100px; width: 200px; background: gray; position: relative; cursor: pointer; border: 3px double black; border-radius: 10px;}div:before { content: ""; position: absolute; top: 15%; left: 100%; height: 20px; width: 20px; background: gray; box-sizing:border-box; transform: rotate(45deg) translate(-50%); border-top: inherit; border-right: inherit; box-shadow: inherit; transition:all 0.8s;}div:hover:before{ top:80%; }
<div>Only Element</div>
div { height: 100px; width: 200px; background: gray; position: relative; cursor: pointer; border-radius: 10px;}div:before { content: ""; position: absolute; top: 70%; left: 100%; height: 20px; width: 20px; background: gray; box-sizing:border-box; transform: translate(-50%) skewX(45deg); box-shadow: inherit; transition:all 0.8s; z-index:-1;}div:hover:before{ transform: translate(-50%); border-radius:50%; top:20%; }
<div>Only Element</div>
- 3 回答
- 0 关注
- 383 浏览
相关问题推荐
添加回答
举报