css - 添加变换比例过渡时自定义工具提示损坏
问题描述
如果我从第 18 行和第 48 行(只留下)scale
中删除,代码可以工作,但不合适。我想添加过渡以使过渡更平滑,但会导致矩形和工具提示不能很好地融合在一起。如何解决这个问题?transform
translateY
scale
.tooltip {
display: block;
background: #F24B5B;
color: white;
margin: 5em auto;
padding: 1em 0;
text-align: center;
width: 13em;
position: relative;
--rec-size: .3em;
--half-rec-size: calc( var(--rec-size) / 2 )
}
.tooltip::before,
.tooltip::after {
position: absolute;
opacity: 0;
transform: scale(.5) translateY(1em);
transform-origin: center bottom;
transition:
opacity .3s ease-out,
transform .15s ease-out
;
}
.tooltip::after {
content: '';
border: var(--rec-size) solid #0000;
}
.tooltip::before {
content: attr(title);
width: 80%;
line-height: 2em;
border-radius: .2em;
background: #000b;
}
.tooltip.top::before {
bottom: calc( 100% + var(--rec-size) );
left: 10%;
}
.tooltip.top::after {
border-top: var(--rec-size) solid #000b;
bottom: calc( 100% - var(--rec-size) );
left: calc( 50% - var(--half-rec-size) );
}
.tooltip:hover::before,
.tooltip:hover::after {
opacity: 1;
transform: scale(1) translateY(0);
}
<div class="tooltip top" title="Tooltip on top!">
Hover over me
</div>
解决方案
.tooltip {
display: block;
background: #F24B5B;
color: white;
margin: 5em auto;
padding: 1em 0;
text-align: center;
width: 13em;
position: relative;
--rec-size: .3em;
--half-rec-size: calc( var(--rec-size) / 2 )
}
.tooltip::before,
.tooltip::after {
position: absolute;
opacity: 0;
transform: scale(.5) translateY(1em);
transform-origin: center bottom;
transition:
opacity .3s ease-out,
transform .15s ease-out
;
}
.tooltip::after {
transform: translateY(0.5em);
}
.tooltip::after {
content: '';
border: var(--rec-size) solid #0000;
}
.tooltip::before {
content: attr(title);
width: 80%;
line-height: 2em;
border-radius: .2em;
background: #000b;
}
.tooltip.top::before {
bottom: calc( 100% + var(--rec-size) );
left: 10%;
}
.tooltip.top::after {
border-top: var(--rec-size) solid #000b;
bottom: calc( 100% - var(--rec-size) );
left: calc( 50% - var(--half-rec-size) );
}
.tooltip:hover::before,
.tooltip:hover::after {
opacity: 1;
transform: scale(1) translateY(0);
}
<div class="tooltip top" title="Tooltip on top!">
Hover over me
</div>
::after 和 ::before 设置不同的 translateY
.tooltip::after {
transform: translateY(0.5em);
}
或者像上面那个
.tooltip::after,.tooltip::before {
transform-origin: center 140%;
}
推荐阅读
- javascript - 自动 Html ID:当用户禁用 JavaScript 时不好
- java - 阻止接口的实现,允许接口扩展基接口
- php - 验证对象类
- javascript - 提交表单时如何使用复选框显示错误消息
- html - 跨平台禁用 android 和 IOS 中的放大功能
- scala - 使用 scala 访问 HbaseConfiguration 方法的问题
- php - 类中的 PHP PDO 注入
- python - 带有 -blinkcheck 和自定义 CA 的 sphinx-build
- python - 散景条形图:如何在 y 轴标签处抑制聚合名称?
- json - curl错误,--data-urlencode