diff --git a/dev/boilerplate.css b/dev/boilerplate.css new file mode 100644 index 0000000..0ff69ad --- /dev/null +++ b/dev/boilerplate.css @@ -0,0 +1,280 @@ +@charset "utf-8"; +/* +/* + * HTML5 ✰ Boilerplate + * + * Das Folgende ist das Ergebnis umfangreicher Nachforschungen zum browserunabhängigen Webdesign. + * Verweise auf die Urheber finden Sie in den Codekommentaren, außerdem ein herzliches Dankeschön an Nicolas Gallagher, Jonathan Neal, + * Kroc Camen und die H5BP-Entwicklergemeinde und das H5BP-Team. + * + * Ausführliche Informationen über diesen CSS-Code gibt's unter h5bp.com/css + * + * Dreamweaver-Modifikationen: + * 1. Auswahlmarkierung auskommentiert + * 2. Abschnitt über Medienabfrage entfernt (wir definieren unsere eigene Medienabfrage in einer gesonderten Datei) + * + * ==|== Normalisieren ====================================================== + */ + + +/* ============================================================================= + HTML5-Anzeigedefinitionen + ========================================================================== */ + +article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } +audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } +audio:not([controls]) { display: none; } +[hidden] { display: none; } + +/* ============================================================================= + Basis + ========================================================================== */ + +/* + * 1. Die Anpassung der Textgröße führt in IE6/7 zu merkwürdigen Resultaten, wenn die Schriftgröße des Bodytexts in em-Einheiten angegeben ist + * 2. Erzwingen einer vertikalen Bildlaufleiste in Nicht-IE-Browsern + * 3. Verhindern der iOS-Textgrößenanpassung beim Ändern der Geräteausrichtung ohne den Benutzerzoom zu deaktivieren: h5bp.com/g + */ + +html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } + +body { margin: 0; font-size: medium; line-height: 1.231; } + +body, button, input, select, textarea { font-family: sans-serif; color: #222; } + +/* + * Textschatten in der Auswahlmarkierung entfernen: h5bp.com/i + * Die folgenden Auswahldeklarationen müssen getrennt voneinander erfolgen + * Außerdem: leuchtendes Pink! (Die Hintergrundfarbe kann auch an das Design angepasst werden.) + */ + +/* Dreamweaver: die folgenden Codestellen auskommentieren, wenn die Auswahlmarkierung angepasst werden soll + *::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; } + *::selection { background: #fe57a1; color: #fff; text-shadow: none; } + */ + +/* ============================================================================= + Hyperlinks + ========================================================================== */ + +a { color: #222; } +a:visited { color: #000; } +a:hover { color: #eb3526; } +a:focus { outline: thin dotted; } + +/* Verbessert in allen Browsern die Lesbarkeit von Hyperlinks, die über die Tabulatortaste fokussiert werden (focus) und von Hyperlinks, auf die der Mauszeiger gerichtet ist (hover): h5bp.com/h */ +a:hover, a:active { outline: 0; } + + +/* ============================================================================= + Typografie + ========================================================================== */ + +abbr[title] { border-bottom: 1px dotted; } + +b, strong { font-weight: bold; } + +blockquote { margin: 1em 40px; } + +dfn { font-style: italic; } + +hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } + +ins { background: #ff9; color: #000; text-decoration: none; } + +mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; } + +/* Nichtproportionale Schriftfamilie neu deklarieren: h5bp.com/j */ +pre, code, kbd, samp { font-family: monospace, monospace; _font-family: 'courier new', monospace; font-size: 1em; } + +/* In allen Browsern die Lesbarkeit von vorformatiertem Text verbessern */ +pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } + +q { quotes: none; } +q:before, q:after { content: ""; content: none; } + +small { font-size: 85%; } + +/* Text höher oder tiefer stellen ohne die Zeilenhöhe zu beeinflussen: h5bp.com/k */ +sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } +sup { top: -0.5em; } +sub { bottom: -0.25em; } + + +/* ============================================================================= + Listen + ========================================================================== */ + +ul, ol { margin: 1em 0; padding: 0 0 0 40px; } +dd { margin: 0 0 0 40px; } +nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; } + + +/* ============================================================================= + Eingebetteter Inhalt + ========================================================================== */ + +/* + * 1. Verbessern der Bildqualität beim Skalieren in IE7: h5bp.com/d + * 2. Entfernen der Lücke zwischen Bildern und Rahmen in Bildcontainern: h5bp.com/e + */ + +img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; } + +/* + * Korrekter Überlauf in IE9 nicht verborgen + */ + +svg:not(:root) { overflow: hidden; } + + +/* ============================================================================= + Abbildungen + ========================================================================== */ + +figure { margin: 0; } + + +/* ============================================================================= + Formulare + ========================================================================== */ + +form { margin: 0; } +fieldset { border: 0; margin: 0; padding: 0; } + +/* Festlegen, dass 'label' den Fokus auf das betreffende Forularelement setzt */ +label { cursor: pointer; } + +/* + * 1. Korrekte Farbe wird in IE6/7/8/9 nicht vererbt + * 2. Korrekte Ausrichtung wird in IE6/7 merkwürdig angezeigt + */ + +legend { border: 0; *margin-left: -7px; padding: 0; } + +/* + * 1. Korrekte Schriftgröße wird in keinem der Browser vererbt + * 2. Entfernen von Rändern in FF3/4 S5 Chrome + * 3. Definieren konsistenter vertikaler Ausrichtung für alle Browser + */ + +button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; } + +/* + * 1. Für eine Übereinstimmung mit FF3/4 die Zeilenhöhe als normal definieren (im UA-Stylesheet '!important' verwenden) + * 2. Korrekter innerer Abstand wird in IE6/7 merkwürdig angezeigt + */ + +button, input { line-height: normal; *overflow: visible; } + +/* + * In 'table' inneren Abstand wieder einführen, um Überlappungen zu vermeiden und IE6/7-Probleme mit Leerraum zu vermeiden. + */ + +table button, table input { *overflow: auto; } + +/* + * 1. Anzeigen des Handcursors bei klickbaren Formularelementen + * 2. Gestaltung klickbarer Formularelemente in iOS ermöglichen + */ + +button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } + +/* + * Konsistente Größe und Darstellung von Feldern + */ + +input[type="checkbox"], input[type="radio"] { box-sizing: border-box; } +input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; } +input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } + +/* + * In FF3/4 innere Auffüllung und Rahmen entfernen: h5bp.com/l + */ + +button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } + +/* + * 1. In IE6/7/8/9 vertikale Standardbildlaufleiste entfernen + * 2. Größenänderung nur in der Vertikale zulassen + */ + +textarea { overflow: auto; vertical-align: top; resize: vertical; } + +/* Farben für die Formularüberprüfung */ +input:valid, textarea:valid { } +input:invalid, textarea:invalid { background-color: #f0dddd; } + + +/* ============================================================================= + Tabellen + ========================================================================== */ + +table { border-collapse: collapse; border-spacing: 0; } +td { vertical-align: top; } + + +/* ==|== Primärstile ======================================================== + Autor: + ========================================================================== */ + + + + + + + + + + + + + + + + +/* ==|== nichtsemantische Helferklassen ======================================== + Definieren Sie Ihre Stile vor dieser Auswahl + ========================================================================== */ + +/* Für den Austausch von Bildern */ +.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; } +.ir br { display: none; } + +/* Vor Bildschirmleseprogrammen und Browsern verbergen: h5bp.com/u */ +.hidden { display: none !important; visibility: hidden; } + +/* Nur visuell verbergen, aber für Bildschirmleseprogramme bereithalten: h5bp.com/v */ +.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } + +/* Erweitert die Klasse ".visuallyhidden" so, dass das Element bei der Tastaturnavigation den Fokus erhält: h5bp.com/p */ +.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } + +/* Visuell und vor Bildschirmleseprogrammen verbergen, aber das Layout beibehalten */ +.invisible { visibility: hidden; } + +/* Floats beinhalten: h5bp.com/q */ +.clearfix:before, .clearfix:after { content: ""; display: table; } +.clearfix:after { clear: both; } +.clearfix { zoom: 1; } + + +/* ==|== Druckstile ========================================================== + Druckstile. + Innen, um die erforderliche HTTP-Verbindung zu vermeiden: h5bp.com/r + ========================================================================== */ + + @media print { + * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } /* Schwarz druckt schneller: h5bp.com/s */ + a, a:visited { text-decoration: underline; } + a[href]:after { content: " (" attr(href) ")"; } + abbr[title]:after { content: " (" attr(title) ")"; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* Keine Bildverweise anzeigen und keine javascript/internal- Hyperlinks */ + pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } + thead { display: table-header-group; } /* h5bp.com/t */ + tr, img { page-break-inside: avoid; } + img { max-width: 100% !important; } + @page { margin: 0.5cm; } + p, h2, h3 { orphans: 3; widows: 3; } + h2, h3 { page-break-after: avoid; } +} diff --git a/dev/index.html b/dev/index.html new file mode 100644 index 0000000..0b55ceb --- /dev/null +++ b/dev/index.html @@ -0,0 +1,42 @@ + + + + + + Basic HTML Page + + + +
+

nutellarechner

+
+ + \ No newline at end of file diff --git a/dev/index.php b/dev/index.php new file mode 100644 index 0000000..0bef142 --- /dev/null +++ b/dev/index.php @@ -0,0 +1,120 @@ + Echter Wert) +$werteMap = [ + 1 => 8, + 2 => 15, + 3 => 20, + 4 => 30, + 5 => 40 +]; + +// Initialisierung der Variablen +$ergebnis = null; +$wert1 = 2; // Standardwert für Slider 1 +$wert2_position = 3; // Standard-Position für Slider 2 (entspricht hier der 20) +$echter_wert2 = $werteMap[$wert2_position]; + +// Prüfen, ob das Formular abgeschickt wurde +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $wert1 = filter_input(INPUT_POST, 'slider1', FILTER_VALIDATE_INT) ?: 1; + + // Wir lesen die Position (1-5) des Sliders aus + $wert2_position = filter_input(INPUT_POST, 'slider2', FILTER_VALIDATE_INT) ?: 1; + + // Zur Sicherheit prüfen, ob die Position in unserem Array existiert + if (array_key_exists($wert2_position, $werteMap)) { + $echter_wert2 = $werteMap[$wert2_position]; + } else { + $echter_wert2 = $werteMap[1]; // Fallback auf den ersten Wert + } + + // Die beiden echten Werte multiplizieren + $ergebnis = $wert1 * $echter_wert2; +} +?> + + + + + + + nutellarechner + + + + + +
+

nutellarechner

+

Für jede Nuss-Nougat-Creme geeignet.

+ +
+
+ + +
+ +
+ + +
+ + +
+ + +
+ Ergebnis: Du brauchst + Gramm Nutella. +
+ + +

Ich möchte lieber:

+
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/dev/respond.min.js b/dev/respond.min.js new file mode 100644 index 0000000..b7fe2f4 --- /dev/null +++ b/dev/respond.min.js @@ -0,0 +1,2 @@ +/*! Respond.js v1.0.1pre: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ +(function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length,z=0,y,x,A,v;for(;z=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send(null)},c=(function(){var v=false;try{v=new XMLHttpRequest()}catch(w){v=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this)); \ No newline at end of file diff --git a/dev/style.css b/dev/style.css new file mode 100644 index 0000000..8a06564 --- /dev/null +++ b/dev/style.css @@ -0,0 +1,430 @@ +/* ========================================================================== + 1. CSS Variablen (Custom Properties) + ========================================================================== */ +:root { + /* Farben */ + --color-primary: #222222; + --color-secondary: #eb3526; + --color-tertiary: #f7c66d; + --color-background: #7a381e; + --color-text: #333333; + --color-text-light: #666666; + --color-text-white: #ffffff; + + /* Typografie */ + --font-family-base: "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-size-base: 16px; + --font-size-title: 54px; + --line-height-base: 1.5; + + /* Abstände (Spacing) */ + --spacing-sm: 0.5rem; + --spacing-md: 1rem; + --spacing-lg: 2rem; + + /* Radien */ + --border-radius: 4px; +} + +/* ========================================================================== + 2. Basis Reset & Normierung + ========================================================================== */ +*, +*::before, +*::after { + box-sizing: border-box; /* Verhindert, dass Padding/Border die Breite verändern */ + margin: 0; + padding: 0; +} + +html { + font-size: var(--font-size-base); + scroll-behavior: smooth; +} + +body { + font-family: var(--font-family-base); + color: var(--color-text); + background-color: var(--color-background); + line-height: var(--line-height-base); + -webkit-font-smoothing: antialiased; +} + +footer { + width: 100%; + position: fixed; + bottom: 0px; + text-align: center; +} + +footer a { + text-decoration: none; + color: var(--color-tertiary); +} + +/* Responsives Verhalten für Medien */ +img, +picture, +video, +canvas, +svg { + display: block; + max-width: 100%; + height: auto; +} + +/* ========================================================================== + 3. Grundlegende Typografie + ========================================================================== */ +h1 { + margin-bottom: var(--spacing-sm); + line-height: 1.2; + color: var(--color-primary); + text-align: center; + font-size: var(--font-size-title); +} + +h2, +h3, +h4, +h5, +h6 { + margin-bottom: var(--spacing-md); + line-height: 1.2; + color: var(--color-primary); + text-align: center; +} + +p { + margin-bottom: var(--spacing-md); +} + +a { + color: var(--color-primary); + text-decoration: none; + transition: color 0.3s ease; +} + +a:hover { + text-decoration: underline; +} + +label { + display: block; + margin-bottom: var(--spacing-sm); + font-weight: bold; + color: var(--color-primary); +} + +nav { + display: block; +} + +.span-dark { + color: var(--color-primary); +} + +.span-red { + color: var(--color-secondary); +} + +.slogan { + color: var(--color-text-light); + font-style: italic; + font-size: small; + text-align: center; + margin-top: 0; + margin-bottom: var(--spacing-lg); +} + +.disclaimer { + color: var(--color-text); + background: var(--color-tertiary); + font-style: italic; + font-size: small; + text-align: center; + margin-top: 0; + margin-bottom: var(--spacing-lg); +} + +.value-display { + color: var(--color-secondary); + font-weight: bold; +} + +.result { + margin-top: var(--spacing-lg); + padding: var(--spacing-md); + background-color: var(--color-tertiary); + border-radius: var(--border-radius); + color: var(--color-primary); + font-size: 1.25rem; + text-align: center; +} + +.werbung-title { + width: 90%; + margin-left: 5%; + margin-right: 5%; + margin-top: var(--spacing-lg); + padding: var(--spacing-md); + border-radius: var(--border-radius); + color: var(--color-text); + font-size: 1rem; + text-align: center; +} + +.werbung-buttons { + display: flex; + justify-content: center; + gap: var(--spacing-md); + margin-top: var(--spacing-md); +} + +/* ========================================================================== + 4. Layout Buttons, Forms & Slider + ========================================================================== */ +.button-calc { + display: block; + margin: 0 auto; + padding: 0.6em 2em; + border: 1px solid transparent; + box-sizing: border-box; + outline: none; + color: var(--color-text); + background: var(--color-tertiary); + font-size: large; + cursor: pointer; + position: relative; + z-index: 0; + border-radius: var(--border-radius); + -webkit-user-select: none; + user-select: none; + touch-action: manipulation; +} + +.button-calc:before { + content: ""; + background: linear-gradient( + 45deg, + var(--color-background), + var(--color-secondary), + var(--color-tertiary), + var(--color-text-white) + ); + position: absolute; + top: -2px; + left: -2px; + background-size: 400%; + z-index: -1; + -webkit-filter: blur(5px); + filter: blur(5px); + width: calc(100% + 4px); + height: calc(100% + 4px); + animation: glowing-button-calc 20s linear infinite; + transition: opacity 0.5s ease-in-out; + border-radius: var(--border-radius); +} + +@keyframes glowing-button-calc { + 0% { + background-position: 0 0; + } + 50% { + background-position: 400% 0; + } + 100% { + background-position: 0 0; + } +} + +.button-calc:after { + z-index: -1; + content: ""; + position: absolute; + width: 100%; + height: 100%; + background: var(--color-tertiary); + left: 0; + top: 0; + border-radius: var(--border-radius); +} + +.button-calc:hover { + background: var(--color-tertiary); + color: var(--color-secondary); + border: 1px solid var(--color-secondary); +} + +.button-mett { + display: block; + margin: 0 auto; + padding: 0.6em 2em; + border: 1px solid transparent; + box-sizing: border-box; + outline: none; + color: #fffae8; + background: #cd7569; + cursor: pointer; + position: relative; + z-index: 0; + border-radius: var(--border-radius); +} + +.button-mett:hover { + color: #cd7569; + background-color: #fffae8; + border: 1px solid #fffae8; +} + +.button-nudeln { + display: block; + margin: 0 auto; + padding: 0.6em 2em; + border: 1px solid transparent; + box-sizing: border-box; + outline: none; + color: #fdbf5b; + background: #182132; + cursor: pointer; + position: relative; + z-index: 0; + border-radius: var(--border-radius); +} + +.button-nudeln:hover { + color: #182132; + background-color: #fdbf5b; + border: 1px solid #182132; +} + +.button-burger { + display: block; + margin: 0 auto; + padding: 0.6em 2em; + border: 1px solid transparent; + box-sizing: border-box; + outline: none; + color: orange; + background: #221600; + cursor: pointer; + position: relative; + z-index: 0; + border-radius: var(--border-radius); +} + +.button-burger:hover { + color: #221600; + background-color: orange; + border: 1px solid #221600; +} + +.form-group { + margin-bottom: var(--spacing-lg); +} + +input[type="range"] { + margin: 0 5%; + width: 90%; + accent-color: var(--color-secondary); +} + +/* ========================================================================== + 5. Layout Listen + ========================================================================== */ +ul, +ol { + margin: 1em 0; + padding: 0 0 0 40px; +} + +dd { + margin: 0 0 0 40px; +} + +nav ul, +nav ol { + list-style: none; + list-style-image: none; + margin: 0; + padding: 0; +} + +/* ========================================================================== + 6. Layout Container + ========================================================================== */ +.container { + width: 100%; + height: 776px; + padding-top: 100px; + padding-right: 15px; + padding-left: 15px; + margin-top: var(--spacing-md); + margin-right: auto; + margin-left: auto; + background-image: url('data:image/svg+xml,'); + background-repeat: no-repeat; + background-position: center top; +} + +/* Grid-Beispiel (Flexbox) */ +.row { + display: flex; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +.col { + flex: 1 0 100%; /* Nimmt auf Mobilgeräten die volle Breite ein */ + padding-right: 15px; + padding-left: 15px; +} + +/* ========================================================================== + 7. Media Queries (Mobile First) + ========================================================================== */ + +/* --- Kleine Geräte (Smartphones im Querformat, ab 576px) --- */ +@media (min-width: 576px) { + .container { + max-width: 809px; + } +} + +/* --- Mittlere Geräte (Tablets, ab 768px) --- */ +@media (min-width: 768px) { + .container { + max-width: 809px; + } + + /* Beispiel: Spalten stehen nebeneinander ab Tablet-Größe */ + .col { + flex: 1 0 50%; /* Zwei Spalten nebeneinander */ + } +} + +/* --- Große Geräte (Desktops, ab 992px) --- */ +@media (min-width: 992px) { + .container { + max-width: 809px; + } + + .col { + flex: 1; /* Alle Spalten verteilen sich gleichmäßig */ + } +} + +/* --- Sehr große Geräte (Große Desktops, ab 1200px) --- */ +@media (min-width: 1200px) { + .container { + max-width: 809px; + } +} + +/* --- Extra große Geräte (Ultrawide, ab 1400px) --- */ +@media (min-width: 1400px) { + .container { + max-width: 809px; + } +}