我有一个带有箭头和箭头边框的工具提示,但我需要箭头来获取工具提示的方框阴影我怎么能这样做?
我需要一个跨浏览器的解决方案.我不能使用CSS过滤器.
.tooltip {
position: absolute;
}
.arrow_box {
position: relative;
background-color: #fff;
border: 1px solid lightgrey;
border-radius: 2px;
padding: 12px;
box-shadow: 1px 1.5px 4px 0px rgba(170, 174, 181, 0.45);
-webkit-transform: translateX(6px);
transform: translateX(6px);
}
.arrow_box:after, .arrow_box:before {
right: 100%;
top: 50%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.arrow_box:after {
border-color: rgba(255, 255, 255, 0);
border-right-color: #fff;
border-width: 6px;
margin-top: -6px;
}
.arrow_box:before {
border-color: rgba(211, 211, 211, 0);
border-right-color: #d3d3d3;
border-width: 7px;
margin-top: -7px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="tooltip">
<div class="arrow_box">
<p>tooltip</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
前几天我偶然发现了这个,我想我会把它留在这里。我的解决方案是单个元素,仅使用伪元素之一:before
并利用clip-path
.
:root {
--shadowSize: 20px;
--shadowColor: #f00;
}
.box {
position: relative;
width: 300px;
padding: 20px;
box-shadow: 0 0 var(--shadowSize) var(--shadowColor);
background-color: #fff;
border-radius: 4px;
}
.box:before {
content: "";
position: absolute;
top: 50%;
right: 0;
width: 30px;
height: 30px;
background-color: #fff;
box-shadow: 0 0 var(--shadowSize) var(--shadowColor);
transform: translate(50%, -50%) rotate(45deg);
clip-path: polygon(
calc(var(--shadowSize) * -1) calc(var(--shadowSize) * -1),
calc(100% + var(--shadowSize)) calc(var(--shadowSize) * -1),
calc(100% + var(--shadowSize)) calc(100% + var(--shadowSize))
);
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Officia excepturi et unde soluta accusamus dolorum. Architecto, a laborum. Unde impedit aliquam voluptatibus sed dignissimos mollitia nihil consectetur dolores accusamus recusandae?</div>
Run Code Online (Sandbox Code Playgroud)
如果要将箭头放置在框的另一侧,则必须调整 - 元素clip-path
的 或 旋转。:before
如果你想使用偏移量,CSS也必须调整box-shadow
,目前它只计算它的实际大小。
使用 SCSS 的示例:https ://codepen.io/MyXoToD/pen/gOMvYOx
你的问题的解决方案可以解决,就像这里发布的那样:https: //codepen.io/ryanmcnz/pen/JDLhu
基本上:
1.创建一个正方形(:: after),旋转它并添加框阴影.
2.创建第二个正方形(:: before),它与在气球内部铸造的盒子阴影重叠.
body {
background-color: #fff;
}
.triangle {
position: relative;
margin: 3em;
padding: 1em;
box-sizing: border-box;
background: #fff;
border: 1px solid #fafafa;
box-shadow: 0px 3px 3px 0 rgba(0, 0, 0, 0.4);
}
.triangle::after{
z-index: -10;
content: "";
position: absolute;
width: 0;
height: 0;
margin-left: 0;
bottom: 0;
top: calc(50% - 5px);
left:0;
box-sizing: border-box;
border: 5px solid #fff;
border-color: transparent transparent #fff #fff;
transform-origin: 0 0;
transform: rotate(45deg);
box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.4);
}
.triangle::before{
z-index: 10;
content: "";
position: absolute;
width: 0;
height: 0;
margin-left: 0;
bottom: 0;
top: calc(50% - 5px);
left:0;
box-sizing: border-box;
border: 5px solid black;
border-color: transparent transparent #fff #fff;
transform-origin: 0 0;
transform: rotate(45deg);
}
Run Code Online (Sandbox Code Playgroud)
<div class="triangle">This is a CSS3 triangle with a proper box-shadow!</div>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2967 次 |
最近记录: |