vue+css实现列表筛选过滤效果代码

代码语言:html

所属分类:其他

代码描述:vue+css实现列表筛选过滤效果代码,使用了css中的has来实现。

代码标签: vue css 列表 筛选 过滤

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


<!DOCTYPE html>
<html lang="en" >

<head>

 
<meta charset="UTF-8">

 
 
<link rel='stylesheet' href='https://fonts.googleapis.com/css2?family=Quicksand:wght@700&amp;display=swap'>
 
<style>
@import url("https://fonts.googleapis.com/css2?family=Fira+Sans&family=Inconsolata&display=swap");

* {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
}

:root {
        --highlight: #d33a03;
        --dark-grey: #333333;
        --lite-grey: #777777;
}

body {
        min-height: 100vh;
        display: grid;
        justify-content: center;
        font-family: "Fira Sans", sans-serif;
}

ul {
        list-style: none;
}

input[type="checkbox"] {
        appearance: none;
}

section {
        width: 70vw;
        display: grid;
        grid-template-columns: 25% 1fr;
        padding: 2em;
        margin-top: 2em;
}

/* Main Staff List
------------------------------------------------*/
main {
        padding: 0 2em;
}
main h3 {
        font-family: "Inconsolata", sans-serif;
        font-size: 1rem;
        font-weight: bold;
        letter-spacing: 2px;
        text-transform: uppercase;
        color: var(--dark-grey);
}
main ul {
        margin-top: 2em;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 2em;
}

.card {
        display: grid;
        grid-template-columns: 70px 1fr;
        column-gap: 5px;
        align-items: center;
        padding: 0.5em 1em;
        box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
        border: 1px solid #e2e2e2;
        border-radius: 1.2em;
        -webkit-border-radius: 1.2em;
        -moz-border-radius: 1.2em;
        -ms-border-radius: 1.2em;
        -o-border-radius: 1.2em;
}
.card__photo {
        width: 50px;
        height: 50px;
        border-radius: 50%;
        -webkit-border-radius: 50%;
        -moz-border-radius: 50%;
        -ms-border-radius: 50%;
        -o-border-radius: 50%;
}
.card__info h4 {
        font-family: "Fira Sans", sans-serif;
        font-size: 1.1rem;
        font-weight: 400;
        color: var(--dark-grey);
}
.card__info p {
        font-family: "Inconsolata", sans-serif;
        font-size: 0.9rem;
        font-style: normal;
        letter-spacing: 2px;
        text-transform: uppercase;
        color: var(--lite-grey);
}

/* Tags Sidebar
------------------------------------------------*/
aside h3 {
        font-family: "Inconsolata", sans-serif;
        font-size: 1rem;
        font-style: normal;
        font-weight: bold;
        letter-spacing: 2px;
        text-transform: uppercase;
        color: var(--dark-grey);
}
aside ul {
        padding: 0.5em 0;
}
aside li {
        display: inline-block;
}
aside label {
        font-family: "Fira Sans", sans-serif;
        font-size: 0.9rem;
        font-style: normal;
        font-weight: normal;
        letter-spacing: normal;
        line-height: 20px;
        text-transform: none;
        color: var(--lite-grey);
        cursor: pointer;
}
/* Removes the last comma */
aside li:last-of-type label > span {
        display: none;
}

/* Developer */
/* If any tag is selected then hide all posts... */
aside:has(:checked) + main li {
        display: none;
}
/* and only show the selected posts... */
aside:has(#developer:checked) + main li[data-tag="developer"] {
        display: grid;
}
/* then highlight the selected tag */
aside label:has(+ #developer:checked) {
        font-weight: bold;
        color: var(--highlight);
}

/* Engineer */
aside label:has(+ #engineer:checked) {
        font-weight: bold;
        color: var(--highlight);
}
aside:has(#engineer:checked) + main li[data-tag="engineer"] {
        display: grid;
}
/* Designer */
aside label:has(+ #designer:checked) {
        font-weight: bold;
        color: var(--highlight);
}
aside:has(#designer:checked) + main li[data-tag="designer"] {
        display: grid;
}
/* UI */
aside label:has(+ #ui:checked) {
        font-weight: bold;
        color: var(--highlight);
}
aside:has(#ui:checked) + main li[data-tag="ui"] {
        display: grid;
}
/* Mobile */
aside label:has(+ #mobile:checked) {
        font-weight: bold;
        color: var(--h.........完整代码请登录后点击上方下载按钮下载查看

网友评论0