feat: Add game and gallery screens
This commit is contained in:
parent
e21b9d36b5
commit
3c9c438b25
4 changed files with 123 additions and 0 deletions
25
source/screens/demo/examples/game.liquid
Normal file
25
source/screens/demo/examples/game.liquid
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
title: Game - TFW
|
||||
tags:
|
||||
- demoExample
|
||||
- gameExample
|
||||
---
|
||||
{% assign bodyClass = "body_game" -%}
|
||||
{% layout "hippie/app.liquid" %}
|
||||
|
||||
{% block body %}
|
||||
<div class="sec_main_center">
|
||||
<nav role="doc-toc">
|
||||
<hgroup>
|
||||
<h1>{{ title }}</h1>
|
||||
<p>Additional name</p>
|
||||
</hgroup>
|
||||
<ul class="list_link">
|
||||
<li><a href="#new">Neues Spiel</a></li>
|
||||
<li><a href="#continue">Spiel fortsetzen</a></li>
|
||||
<li><a href="#options">Einstellungen</a></li>
|
||||
<li><a href="#quit">Spiel beenden</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
{% endblock %}
|
||||
77
source/screens/demo/examples/ui/gallery.liquid
Executable file
77
source/screens/demo/examples/ui/gallery.liquid
Executable file
|
|
@ -0,0 +1,77 @@
|
|||
---
|
||||
title: Gallery
|
||||
tags:
|
||||
- ui
|
||||
---
|
||||
{% assign bodyClass = "body_frame" -%}
|
||||
{% layout "hippie/app.liquid" %}
|
||||
|
||||
{% block body %}
|
||||
{% render 'hippie/partials/frame-header.liquid' %}
|
||||
<main class="io">
|
||||
<section>
|
||||
<header class="io">
|
||||
<nav>
|
||||
<div class="group">
|
||||
<input id="slider-size" value="5" min="1" max="10" step="1" type="range"/>
|
||||
<label class="right" for="slider-size">Größe</label>
|
||||
</div>
|
||||
<button title="details">
|
||||
<i class="bi bi-layout-sidebar-reverse"></i> Details
|
||||
</button>
|
||||
</nav>
|
||||
<nav></nav>
|
||||
</header>
|
||||
<div class="gallery">
|
||||
<div>A</div>
|
||||
<div>B</div>
|
||||
<div>C</div>
|
||||
</div>
|
||||
{% render 'hippie/partials/frame-status.liquid' %}
|
||||
</section>
|
||||
</main>
|
||||
{% render 'hippie/partials/frame-mode.liquid' %}
|
||||
{% endblock %}
|
||||
|
||||
{%- block script %}
|
||||
{{ block.super -}}
|
||||
<script>
|
||||
const sizeSlider = document.getElementById('slider-size');
|
||||
const galleryItems = document.querySelectorAll('#flex > div');
|
||||
|
||||
// Set the default size
|
||||
const defaultSize = 128; // In pixels
|
||||
const minSize = 16; // Minimum width in pixels
|
||||
const steps = 10;
|
||||
// Define specific sizes for each step (from 1 to 10)
|
||||
const sizes = [16, 32, 64, 96, 128, 256, 512, 1024, 2048]; // Sizes in pixels
|
||||
|
||||
|
||||
// Calculate width based on slider value
|
||||
function calculateWidth(value) {
|
||||
// Map 1-10 to a pixel width
|
||||
return Math.floor(minSize + (value - 1) * (defaultSize - minSize) / (steps - 1));
|
||||
}
|
||||
|
||||
// Set initial size
|
||||
galleryItems.forEach(item => {
|
||||
item.style.width = `${defaultSize}px`;
|
||||
item.style.width = `${sizes[5]}px`; // Initial width based on the default step (8 corresponds to index 7)
|
||||
});
|
||||
|
||||
sizeSlider.addEventListener('input', function () {
|
||||
// const newSize = calculateWidth(Number(sizeSlider.value));
|
||||
// galleryItems.forEach(item => {
|
||||
// item.style.width = `${newSize}px`;
|
||||
// });
|
||||
const selectedStep = Number(sizeSlider.value) - 1; // Adjust for zero-indexing
|
||||
const newSize = sizes[selectedStep]; // Get size from the array using slider value
|
||||
galleryItems.forEach(item => {
|
||||
item.style.width = `${newSize}px`;
|
||||
});
|
||||
});
|
||||
|
||||
// Initialize slider to default
|
||||
sizeSlider.value = 6; // Sets default to 128px width
|
||||
</script>
|
||||
{% endblock %}
|
||||
18
source/style/modules/ui/_gallery_module.scss
Normal file
18
source/style/modules/ui/_gallery_module.scss
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
@use "../../hippie-style/hippie";
|
||||
|
||||
.gallery {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: left;
|
||||
align-items: start;
|
||||
gap: 10px;
|
||||
background-color: hippie.$color_back_io;
|
||||
|
||||
& > div {
|
||||
background-color: hotpink;
|
||||
aspect-ratio: 2 / 3;
|
||||
width: 128px;
|
||||
transition: width 0.3s ease;
|
||||
}
|
||||
}
|
||||
|
||||
3
source/style/modules/ui/_game_module.scss
Normal file
3
source/style/modules/ui/_game_module.scss
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
.body_game {
|
||||
background-color: hotpink;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue