phosphor+fuse实现带关键字搜索过滤的图片瀑布流鼠标悬停显示文字代码
代码语言:html
所属分类:瀑布流
代码描述:phosphor+fuse实现带关键字搜索过滤的图片瀑布流鼠标悬停显示文字代码
代码标签: phosphor fuse 关键字 搜索 过滤 图片 瀑布流 鼠标 悬停 显示 文字 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/tailwind.2.2.7.css">
<style>
body,
html {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
Oxygen-Sans, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",Arial, sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol";
font-size: var(--font-size-200);
min-height: 100%;
overflow-y: scroll;
position: relative;
}
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 0 0% 3.9%;
--card: 0 0% 100%;
--card-foreground: 0 0% 3.9%;
--primary: 0 0% 9%;
--primary-foreground: 0 0% 98%;
--secondary: 0 0% 96.1%;
--secondary-foreground: 0 0% 9%;
--font-size-200: 14px;
--font-size-300: 16px;
--font-size-400: 20px;
--font-size-500: 24px;
--font-size-600: 32px;
--font-weight-light: 300;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--rounding-200: 8px;
--code-background: 0 0% 15%;
--code-foreground: 0 0% 98%;
--typographic-padding: 1rem;
--typographic-quote-size: 1.5rem;
}
@media (min-width: 768px) {
:root {
--typographic-padding: 1.25rem;
--typographic-quote-size: 2rem;
}
}
@media (min-width: 1280px) {
:root {
--typographic-padding: 1.5rem;
--typographic-quote-size: 2.5rem;
}
}
.dark {
--background: 0 0% 3.9%;
--foreground: 0 0% 98%;
--card: 0 0% 3.9%;
--card-foreground: 0 0% 98%;
--primary: 0 0% 98%;
--primary-foreground: 0 0% 9%;
--secondary: 0 0% 14.9%;
--secondary-foreground: 0 0% 98%;
--muted: 0 0% 14.9%;
--muted-foreground: 0 0% 63.9%;
--accent: 0 0% 14.9%;
--accent-foreground: 0 0% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 0 0% 98%;
--border: 0 0% 14.9%;
--input: 0 0% 14.9%;
--ring: 0 0% 83.1%;
}
}
.wrapper-masonry {
position: relative;
}
.masonry-layout {
box-sizing: border-box;
display: grid;
grid-gap: 1rem;
padding: 0;
}
.masonry-layout.columns-1 {
grid-template-columns: repeat(1, minmax(200px, 1fr));
}
.masonry-layout.columns-2 {
grid-template-columns: repeat(2, minmax(120px, 1fr));
}
.masonry-layout.columns-3 {
grid-template-columns: repeat(3, minmax(200px, 1fr));
}
.masonry-layout.columns-4 {
grid-template-columns: repeat(4, minmax(200px, 1fr));
}
.masonry-layout.columns-5 {
grid-template-columns: repeat(5, minmax(200px, 1fr));
}
.masonry-layout.columns-6 {
grid-template-columns: repeat(6, minmax(200px, 1fr));
}
.masonry-layout.columns-7 {
grid-template-columns: repeat(7, minmax(200px, 1fr));
}
.masonry-layout.columns-8 {
grid-template-columns: repeat(8, minmax(200px, 1fr));
}
.masonry-layout.columns-9 {
grid-template-columns: repeat(9, minmax(200px, 1fr));
}
input {
font-size: var(--font-size-300);
border-radius: var(--rounding-200);
}
.card {
position: relative;
overflow: hidden;
border-radius: var(--rounding-200);
background-color: var(--card);
color: var(--card-foreground);
cursor: pointer;
transition: transform 0.2s;
width: 100%;
margin-bottom: 1rem;
display: flex;
flex-direction: column;
}
.card:hover {
/* transform: scale(1.05); */
}
.card img {
width: 100%;
height: auto;
display: block;
}
.card-info {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.69);
color: white;
padding: var(--typographic-padding);
display: flex;
flex-direction: column;
justify-content: start;
align-items: baseline;
opacity: 0;
transition: opacity 0.2s;
/* backdrop-filter: blur(8px); */
}
.card:hover .card-info {
opacity: 1;
}
.card .title {
font-size: var(--font-size-400);
font-weight: var(--font-weight-semibold);
margin-bottom: 0.25rem;
}
.card .description {
font-size: var(--font-size-200);
}
.card .description a {
text-decoration: none;
}
.card .description a:hover {
text-decoration: underline;
}
.typographic-card {
padding: var(--typographic-padding);
border-radius: var(--rounding-200);
cursor: pointer;
display: flex;
flex-direction: column;
align-items: flex-start;
transition: all 0.2s;
width: 100%;
box-sizing: border-box;
min-height: 260px;
}
.typographic-name {
font-size: var(--font-size-300);
font-weight: var(--font-weight-semibold);
margin-bottom: 0.5rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
line-clamp: 1;
-webkit-box-orient: vertical;
}
.typographic-quote {
font-size: var(--typographic-quote-size);
margin-bottom: 0.75rem;
line-height: 1.18;
display: -webkit-box;
}
.typographic-url {
font-size: var(--font-size-200);
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
line-clamp: 1;
-webkit-box-orient: vertical;
opacity: 0.69;
}
</style>
</head>
<body translate="no">
<div class="container mx-auto p-5">
<div class="flex justify-between items-center mb-4">
<div class="flex items-baseline">
<h1 class="text-3xl font-semibold pr-2">Logo</h1>
<h2 class="text-base font-normal opacity-70"> <a href="">HOME</a></h2>
</div>
<button id="signupButton" class="bg-transparent text-slate-700 font-semibold py-2 px-4 border
border-slate-500 rounded hover:bg-white hover:text-slate-900 hover:border-slate-500">
ME
</button>
</div>
<input type="text" id="search" class="p-4 border mb-4 w-full" placeholder="Search...">
<div class="wrapper-masonry">
<div id="masonry"></div>
</div>
</div>
<!-- Modal -->
<div id="signupModal" class="fixed z-10 inset-0 overflow-y-auto hidden">
<div class="flex items-center justify-center min-h-screen p-4">
<div class="fixed inset-0 transition-opacity" aria-hidden="true">
<div class="absolute inset-0 bg-gray-500 opacity-75"></div>
</div>
<div class="bg-white rounded-lg overflow-hidden shadow-xl transform transition-all sm:max-w-lg sm:w-full p-8">
<div class="bg-white">
<div class="flex justify-between items-center mb-4">
<h2 class="text-2xl font-semibold">Subscribe to Desigeist</h2>
<button id="closeModal" class="text-gray-400 hover:text-gray-600 text-2xl">×</button>
</div>
<div id="mc_embed_shell">
<div id="mc_embed_signup">
<form action="" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<div id="mc_embed_signup_scroll">
<div class="mc-field-group mb-4">
<label for="mce-EMAIL" class="block text-sm font-medium text-gray-700">Email Address <span class="asterisk">*</span></label>
<input type="email" name="EMAIL" class="required email mt-1 p-2 block w-full border rounded" id="mce-EMAIL" required>
</div>
<div class="mc-field-group mb-4">
<label for="mce-FNAME" class="block text-sm font-medium text-gray-700">First Name (optional)</label>
<input type="text" name="FNAME" class="text mt-1 p-2 block w-full border rounded" id="mce-FNAME">
</div>
<div id="mce-responses" class="clear">
<div class="response" id="mce-error-response" style="display: none;"></div>
<div class="response" id="mce-success-response" style="display: none;"></div>
</div>
<div aria-hidden="true" style="position: absolute; left: -5000px;">
<input type="text" name="b_88328e131c58d0c0995e899eb_56742abe53" tabindex="-1" value="">
</div>
<div class="clear">
<input type="submit" name="subscribe" id="mc-embedded-subscribe" class="bg-transparent text-slate-700 font-semibold py-2 px-4 border border-slate-500 rounded hover:bg-white hover:text-slate-900 hover:border-slate-500 cursor-pointer" value="Get Spammed">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
// Modal functionality
const signupButton = document.getElementById('signupButton');
const signupModal = document.getElementById('signupModal');
const closeModal = document.getElementById('closeModal');
signupButton.addEventListener('click', () => {
signupModal.classList.remove('hidden');
});
closeModal.addEventListener('click', () => {
signupModal.classList.add('hidden');
});
window.addEventListener('click', (e) => {
if (e.target === signupModal) {
signupModal.classList.add('hidden');
}
});
</script>
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/phosphor-icons.css">
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/fuse.min.js"></script>
<script >
const getRandomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
const inspirationData = [
// Aug 1st
{
name: "Lost&Found Market Poster - March 24th",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "",
designerLink: "",
category: "Poster Design",
fontsUsed: "",
fontUrl: "",
tags: ["poster", "market", "vintage", "design", "France"]
},
{
name: "GitHub Universe",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "",
designerLink: "",
category: "Landing Page",
fontsUsed: "Mona Sans, MonaSansFallback",
fontUrl: "https://github.com/GitHub/Mona-Sans",
tags: ["GitHub", "software", "event", "conference"]
},
{
name: "1979 Volvo Laplander",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "",
designerLink: "",
category: "Automobile",
fontsUsed: "",
fontUrl: "",
tags: ["Volvo", "Laplander", "vintage", "1979", "off-road"]
},
{
name: "Lummi Photo - Minimalist Vintage Bicycle",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "Pablo Stanley",
designerLink: "https://www.lummi.ai/creator/pablostanley",
category: "Photography",
fontsUsed: "",
fontUrl: "",
tags: ["bicycle", "minimalist", "vintage", "urban", "design"]
},
{
name: "Cero Magazine",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "",
designerLink: "",
category: "Publication",
fontsUsed: "",
fontUrl: "",
tags: ["culture", "creativity", "inclusivity", "sustainability", "Broadway"]
},
{
name: "Objets Hermès",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "Andy Rementer",
designerLink: "https://andyrementer.com/",
category: "Illustration",
fontsUsed: "",
fontUrl: "",
tags: ["Hermès", "illustration", "art", "design", "Cargo"]
},
{
name: "Accueil Cantine Côtière",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "",
designerLink: "",
category: "Branding",
fontsUsed: "",
fontUrl: "",
tags: ["restaurant", "food", "local", "marine", "branding"]
},
{
name: "Mini Paper Sculptures",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "Imin Yeh",
designerLink: "https://iminyeh.com/",
category: "Design",
fontsUsed: "",
fontUrl: "",
tags: ["sculpture", "paper", "art", "design"]
},
{
name: "Cookie and Milk Illustration",
url: "",
imageUrl: `//repo.bfw.wiki/random/${getRandomInt(300, 600)}x${getRandomInt(300, 600)}/景色?rand=${getRandomInt(1, 10000)}`,
designer: "Travis Foster",
designerLink: "https://www.travisfoster.com",
category: "Illustration",
fontsUsed: "",
fontUrl: "",
tags: [&quo.........完整代码请登录后点击上方下载按钮下载查看
网友评论0