html - 如何避免过渡和变换结合时对“悬停”的“抖动效应”?
问题描述
我正在尝试在hover
、 usingtransform
和transition
一起制作一个盒子。主要思想是有一个颠倒的文本(不可读),当鼠标移到每个框上时,文本将在该特定框上转换为正常(可读)。
新小提琴编辑:
https://jsfiddle.net/mt3x1phq/
我用css得到了效果。如果你快速移动鼠标,你可以看到效果,但如果你慢慢移动鼠标,盒子开始“晃动”。
我的问题是:如何避免这种“摇晃”效应?
这是我正在使用的 CSS 代码:
.card-list {
width: 50vw;
margin: 60px auto;
display: grid;
grid-template-columns: 1fr;
grid-gap: 60px;
text-align: center;
}
.card-container {
display: flex;
flex-direction: column;
background-color: #95dada;
border: 1px solid grey;
border-radius: 5px;
padding: 25px;
cursor: pointer;
-moz-osx-font-smoothing: grayscale;
backface-visibility: hidden;
transform: scale(-1.05);
transition: transform 0.5s ease-in-out;
}
.card-container:hover {
transform: scale(1.05);
}
解决方案
.card-list {
width: 50vw;
margin: 60px auto;
display: grid;
grid-template-columns: 1fr;
grid-gap: 60px;
text-align: center;
}
.card-container {
display: flex;
flex-direction: column;
background-color: #95dada;
border: 1px solid grey;
border-radius: 5px;
padding: 25px;
cursor: pointer;
-moz-osx-font-smoothing: grayscale;
backface-visibility: hidden;
transform: scale(-1.05);
transition: transform 0.5s ease-in-out;
}
.card-list:hover .card-container {
transform: scale(1.05);
}
<div class="card-list">
<div class="card-container">
<h1>
Hello World
</h1>
</div>
</div>
考虑这个代码片段。
.card-list{
height: 143px;
}
.card-list:hover .card-container {
transform: scale(1.05);
}
缩放时鼠标从 DOM 上移开 ,.card-container
.card-list {
width: 50vw;
margin: 60px auto;
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 60px;
text-align: center;
}
.card-container {
display: flex;
flex-direction: column;
background-color: #95dada;
border: 1px solid grey;
border-radius: 5px;
padding: 25px;
cursor: pointer;
-moz-osx-font-smoothing: grayscale;
backface-visibility: hidden;
transform: scale(-1.05);
transition: transform 0.5s ease-in-out;
}
/* .card-container:hover {
transform: scale(1.05);
} */
.card-container-wrap:hover .card-container {
transform: scale(1.05);
}
<div class="card-list">
<div class="card-container-wrap">
<div class="card-container">
<h1> Hello World </h1>
</div>
</div>
<div class="card-container-wrap">
<div class="card-container">
<h1> Hello World </h1>
</div>
</div>
</div>
推荐阅读
- php - 无法在 php 中创建我的第一个 SOAP 服务
- jquery - 设置没有值的选择列表项的值会中断提交事件处理程序
- rust - Cargo 生态系统中的“箱子”到底是什么?与 crates.io 上的内容的映射是什么?
- android - 使用adjustresize时如何隐藏导航栏和全屏?
- forms - 使用令牌形成 Click()
- python - 未捕获 asyncio.CancelledError
- c# - OxyPlot 触发 LineSeries 颜色变化通知
- python - MQTT 和 Python - 继续发送消息
- javascript - 在 Angular 6 中找不到名称
- python - 如何从 Azure Databricks Spark 中的 DataFrame 获取特定的行和列