非常简单,有没有一种方法可以知道元素是否由于 flex-wrap
被包装,因此可以以不同的样式进行排版?
非常简单,有没有一种方法可以知道元素是否由于 flex-wrap
被包装,因此可以以不同的样式进行排版?
您可以创建不同的类,其中包含应用于 flex-wrap 属性的样式。您可以通过 JavaScript 管理这些类。请检查此方法的实现方式:
以下是代码示例,其中创建了 2 个类:flex-wrap-blue 将 flex-wrap 设置为 wrap 并将颜色更改为蓝色,另一个类是 flex-wrap-green,它将 flex-wrap 设置为 wrap-reverse 并将颜色更改为绿色。我通过 JavaScript 管理这两个类,如下所示:
HTML 代码:
<!DOCTYPE html>
<html>
<head></head>
<body>
<button id="btn-wrap">Apply Wrap</button>
<button id="btn-wrap-reverse">Apply Wrap Reverse</button>
<br />
<div class="large-box">
<div class="small-box">One</div>
<div class="small-box">Two</div>
<div class="small-box">Three</div>
<div class="small-box">Four</div>
</div>
</body>
</html>
CSS 代码:
.large-box {
display:flex;
width:100px;
border:1px solid #f00;
height:100px;
padding:1% 0 1% 0;
box-sizing:border-box;
}
.small-box {
width:30px;
border:1px solid #f0f;
height:20px;
padding:1%;
}
.flex-wrap-blue {
flex-wrap:wrap;
color:#00f;
}
.flex-wrap-green {
flex-wrap:wrap-reverse;
color:#0f0;
}
Javascript代码:
function addClass(elem, className) {
if (!elem.classList.contains(className)) {
elem.classList.add(className);
}
}
function removeClass(elem, className) {
if (elem.classList.contains(className)) {
elem.classList.remove(className);
}
}
const btnWrap = document.getElementById('btn-wrap');
const btnWrapReverse = document.getElementById('btn-wrap-reverse');
const box = document.getElementsByClassName('large-box')[0];
btnWrap.addEventListener('click', function(){
addClass(box, 'flex-wrap-blue');
removeClass(box, 'flex-wrap-green');
});
btnWrapReverse.addEventListener('click', function(){
addClass(box, 'flex-wrap-green');
removeClass(box, 'flex-wrap-blue');
});
你可以在我的Codepen上找到代码的运行效果。