css - 如何计算 IE11 中 CSS Grid 列的宽度以进行动画处理?
问题描述
“滑动”按钮切换left-margin
. 需要找到一种方法来制作动画,left-margin
但是transition
在任何calc
ed 元素上使用 a 似乎在 IE11 中仍然存在问题。
JS Bin 中的示例 https://jsbin.com/qirozodete/1/edit?html,css,output 及以下。
这是我正在从事的项目的一个非常简单的模型。尝试创建一个grid
在每个分辨率下滑动和缩小 1 列的元素。目前使用 acalc
来计算网格列的大小,适用于 FF/Chrome/Safari。只是不是IE。
不要认为我可以使用transform: translate
任何一个,因为元素不会缩小,而且calcs
所需的比仅仅 stacking 更复杂一些translates
。
任何想法将不胜感激。
document.getElementById('slide-btn').addEventListener('click', function() {
document.getElementById('grid').classList.toggle('slide');
})
button {
background: white;
border: 1px solid black;
padding: 5px 10px;
}
#grid {
display: -ms-grid;
-ms-grid-columns: 1fr 1fr 1fr 1fr;
}
#grid-item-1 {
background: teal;
-ms-grid-column: 1;
-ms-grid-column-span: 2;
height: 150px;
transition: margin-left 500ms ease-in;
}
#grid.slide #grid-item-1 {
margin-left: calc(100vw / 4);
}
<button id="slide-btn">Slide</button>
<div id="grid">
<div id="grid-item-1"></div>
</div>
解决方案
我测试了您的代码并重现了该问题。我认为我们只能使用 JavaScript 进行更改作为 IE 中的解决方法。我们可以计算出价值clientWidth
并计算出marginLeft
价值。
示例代码:
document.getElementById('slide-btn').addEventListener('click', function() {
var ml = document.getElementById("grid-item-1").style.marginLeft;
var vw = (document.documentElement.clientWidth) / 4;
if (ml == "") {
document.getElementById("grid-item-1").style.marginLeft = vw + "px";
} else {
document.getElementById("grid-item-1").style.marginLeft = "";
}
})
button {
background: white;
border: 1px solid black;
padding: 5px 10px;
}
#grid {
display: -ms-grid;
-ms-grid-columns: 1fr 1fr 1fr 1fr;
display: grid;
grid-template-columns: repeat( 4, 1fr);
}
#grid-item-1 {
background: teal;
-ms-grid-column: 1;
-ms-grid-column-span: 2;
grid-column: span 2;
height: 150px;
transition: margin-left 500ms ease-in;
}
<button id="slide-btn">Slide</button>
<div id="grid">
<div id="grid-item-1"></div>
</div>
推荐阅读
- vba - VBA 找到工作簿,然后给出错误说它丢失
- ios - 平移时,VoiceOver 无法访问超级视图边界之外的视图
- javascript - Can't redraw image represented in base64
- algorithm - 使用预处理在 O(1) 时间内在数组中查询范围中位数
- python - BeautifulSoup 查找嵌套标签,儿童
- glsl - 我的 GLSL 着色器程序是否由浏览器或驱动程序优化?
- javascript - Laravel 和调查
- javascript - angularjs - 执行 ngResource http post 请求的顺序调用函数
- neo4j - Extra match clause causes very slow neo4j query
- php - 是否可以使用php创建插入方法