Result
選択したグループに該当するアイテムだけが上位にソートされる、という簡易的なもの
Flexboxで並べて、radioボタンで作られたボタンにチェックが入るとorder:-1;が有効化され、上位に表示されます
css
.products__sort {
display: flex;
flex-flow: wrap;
}
.products__wrap {
display: flex;
flex-flow: wrap;
margin: 25px 0 0;
}
.products .sort-radio {
display: none;
}
.products .sort-radio[id="app"]:checked ~ .products__wrap .product[data-product-type="app"] {
order: -1;
background-color: #007888;
color: #fff;
}
.products .sort-radio[id="app"]:checked ~ .products__sort .button[for="app"] {
background-color: #007888;
}
.products .sort-radio[id="game"]:checked ~ .products__wrap .product[data-product-type="game"] {
order: -1;
background-color: #007888;
color: #fff;
}
.products .sort-radio[id="game"]:checked ~ .products__sort .button[for="game"] {
background-color: #007888;
}
.products .sort-radio[id="service"]:checked ~ .products__wrap .product[data-product-type="service"] {
order: -1;
background-color: #007888;
color: #fff;
}
.products .sort-radio[id="service"]:checked ~ .products__sort .button[for="service"] {
background-color: #007888;
}
各ボタンが:checkedの時、.products__wrap以下でdata-product-typeの値が同じアイテムがorder: -1;となる事で上位にソートされます。
html
<div class="products">
<input class="sort-radio" type="radio" name="sort-radio" id="app"/>
<input class="sort-radio" type="radio" name="sort-radio" id="game"/>
<input class="sort-radio" type="radio" name="sort-radio" id="service"/>
<div class="products__sort">
<label class="button" for="app">app</label>
<label class="button" for="game">game</label>
<label class="button" for="service">service</label>
</div>
<div class="products__wrap">
<div class="product" data-product-type="app">app</div>
<div class="product" data-product-type="app">app</div>
<div class="product" data-product-type="game">game</div>
<div class="product" data-product-type="service">service</div>
<div class="product" data-product-type="game">game</div>
・
・
・
・
</div>
