嘿,我在使用CSS动画方面遇到了困难。我正在使用Bootstrap 4,对网站开发和CSS都非常新手。我使用Animate.css进行我的动画制作。我希望图标按钮能够向侧边展开并显示包含选择元素的div(用于表格过滤,我使用datatables)。
这是我的可复制脚本:我不知道如何从图标按钮开始启动动画(我还想让选择按钮均匀间隔且垂直居中,但位于右侧)。我只能通过使用display:flex来实现这一点,但然后float-right无法为按钮工作。
以下是代码:我无法在jsfiddle中使用animate.css :/ 编辑:我忘记了animate方法: https://jsfiddle.net/z4yvp0gL/8/
HTML:
<div>
<div class="row button-container">
<div class="col" style="display: flex;">
<div id="sideExpand"><select>
<optgroup label="This is a group">
<option value="12" selected>This is item 1</option>
<option value="13">This is item 2</option>
<option value="14">This is item 3</option>
</optgroup>
</select><select>
<optgroup label="This is a group">
<option value="12" selected>This is item 1</option>
<option value="13">This is item 2</option>
<option value="14">This is item 3</option>
</optgroup>
</select><select>
<optgroup label="This is a group">
<option value="12" selected>This is item 1</option>
<option value="13">This is item 2</option>
<option value="14">This is item 3</option>
</optgroup>
</select></div>
<button class="btn btn btn-transparent btn-icon" id="filterToggle" onclick="SetActiveDiv('#sideExpand',this)"><i class="fa fa-filter" style="position: absolute;font-size: 150%;"></i></button>
</div>
</div>
</div>
CSS
#sideExpand {
display: none;
width: 100%;
border-radius: 35px;
background-color: rgba(31, 45, 65, 0.125);
}
select {
border: 0;
background-color: initial;
font-size: 100%;
display: block;
margin: auto;
word-wrap: normal;
}
.btn-icon {
padding: 0;
display: -webkit-inline-box;
display: inline-flex;
-webkit-box-align: center;
align-items: center;
-webkit-box-pack: center;
justify-content: center;
overflow: hidden;
border-radius: 100%;
flex-shrink: 0;
height: calc( (1rem * 1.5) + (0.5rem * 2) + (2px) ) !important;
width: calc( (1rem * 1.5) + (0.5rem * 2) + (2px) ) !important;
}
Javascript
function SetActiveDiv(ID, bt) {
var element = document.querySelector(ID);
if (element !== null) {
if (element.classList.contains("show")) {
element.classList.remove("show");
animateCSS(element, "fadeOutLeftBig", "2s")
animateCSS(bt, "fadeOutLeftBig", "2s")
return setTimeout(() => {
element.style.display = "none";
}, 2000);
} else {
element.style.display = "flex";
element.classList.add("show");
animateCSS(element, "fadeInLeftBig", "2s").then((message) => {});
return animateCSS(bt, "fadeInLeftBig", "2s").then((message) => {});
}
}
return console.log(ID, " not found!");
}