@@ -17,6 +17,8 @@ Array.prototype.on = Array.prototype.addEventListener = function(name, fn) {
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
NodeList.prototype.__proto__ = Array.prototype;
|
||||||
|
|
||||||
// anstatt
|
// anstatt
|
||||||
// Array.from(document.querySelectorAll('.menu-main li a')).forEach((elem) =>
|
// Array.from(document.querySelectorAll('.menu-main li a')).forEach((elem) =>
|
||||||
// elem.addEventListener('click', (event) => {
|
// elem.addEventListener('click', (event) => {
|
||||||
@@ -31,12 +33,9 @@ Array.prototype.on = Array.prototype.addEventListener = function(name, fn) {
|
|||||||
// }
|
// }
|
||||||
// );
|
// );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// helper
|
// helper
|
||||||
const $on = (el, ev, fn) => {
|
const $on = (el, ev, fn) => {
|
||||||
Array.isArray(el) ? el.forEach(ae => $on(ae, ev, fn)) :
|
Array.isArray(el) ? el.forEach((ae) => $on(ae, ev, fn)) : el.addEventListener(ev, fn);
|
||||||
el.addEventListener(ev, fn);
|
|
||||||
return el;
|
return el;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -80,8 +79,7 @@ function rangeFromStartToEnd(start, end, step = 1) {
|
|||||||
result[index++] = value;
|
result[index++] = value;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
function range(startOrEnd, end, step) {
|
function range(startOrEnd, end, step) {
|
||||||
if (end) {
|
if (end) {
|
||||||
@@ -89,4 +87,4 @@ function range(startOrEnd, end, step) {
|
|||||||
} else {
|
} else {
|
||||||
return rangeFromStartToEnd(0, startOrEnd);
|
return rangeFromStartToEnd(0, startOrEnd);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -0,0 +1,369 @@
|
|||||||
|
/* -------------------------------------------- Haupt CSS fuer alle Seiten -------------------------------------------- */
|
||||||
|
|
||||||
|
/* ---------------- CSS-Reset ------------------- */
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
a,
|
||||||
|
div,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
span,
|
||||||
|
p,
|
||||||
|
img,
|
||||||
|
strong,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
table,
|
||||||
|
th,
|
||||||
|
td,
|
||||||
|
tr {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 0px none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: inherit;
|
||||||
|
font-family: inherit;
|
||||||
|
font-variant: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
table-layout: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- Body / HTML ------------------- */
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 100%;
|
||||||
|
background-color: #fffef7;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 1.2em;
|
||||||
|
font-weight: normal;
|
||||||
|
color: black;
|
||||||
|
margin: 0rem auto 2rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- layout ------------------- */
|
||||||
|
|
||||||
|
header {
|
||||||
|
background: url(../img/js_header.png) left top no-repeat transparent;
|
||||||
|
background-size: cover;
|
||||||
|
height: 250px;
|
||||||
|
min-width: 850px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header:after {
|
||||||
|
content: ' ';
|
||||||
|
display: block;
|
||||||
|
height: 250px;
|
||||||
|
background: rgba(255, 254, 247, 0);
|
||||||
|
background: -moz-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -webkit-gradient(
|
||||||
|
left top,
|
||||||
|
left bottom,
|
||||||
|
color-stop(0%, rgba(255, 254, 247, 0)),
|
||||||
|
color-stop(22%, rgba(255, 254, 247, 0.55)),
|
||||||
|
color-stop(42%, rgba(255, 254, 247, 0.7)),
|
||||||
|
color-stop(43%, rgba(255, 254, 247, 0.71)),
|
||||||
|
color-stop(61%, rgba(255, 254, 247, 0.78)),
|
||||||
|
color-stop(75%, rgba(255, 254, 247, 0.92)),
|
||||||
|
color-stop(87%, rgba(255, 254, 247, 1)),
|
||||||
|
color-stop(100%, rgba(255, 254, 247, 1))
|
||||||
|
);
|
||||||
|
background: -webkit-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -o-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -ms-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fffef7', endColorstr='#fffef7', GradientType=0 );
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fffef7', endColorstr='#fffef7', GradientType=0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
main,
|
||||||
|
footer {
|
||||||
|
width: 70%;
|
||||||
|
margin: 3rem auto;
|
||||||
|
min-width: 850px;
|
||||||
|
padding: 0 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- Content ------------------- */
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 3em;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2.5em;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2em;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height: 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cited {
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.b {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.i {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.align_right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.align_left {
|
||||||
|
text-align: left;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.align_center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.float_left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.float_right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.clear_both {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.special {
|
||||||
|
color: #b7595b;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.keyword {
|
||||||
|
color: #db6f50;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.gray,
|
||||||
|
.grey {
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links */
|
||||||
|
main a:link,
|
||||||
|
main a:visited {
|
||||||
|
color: #eb690b;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
main a:focus,
|
||||||
|
main a:hover,
|
||||||
|
main a:active {
|
||||||
|
color: #eb690b;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-position: outside;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-left: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
line-height: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- Article ------- */
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2.7em;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form input[type='button'] {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 1px 20px 3px 20px;
|
||||||
|
background-color: #93412b;
|
||||||
|
color: white;
|
||||||
|
border: 1px solid white;
|
||||||
|
font-size: 1em;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form input[type='button']:hover {
|
||||||
|
background-color: white;
|
||||||
|
color: #93412b;
|
||||||
|
border: 1px solid #93412b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form select {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 1em;
|
||||||
|
background-color: white;
|
||||||
|
color: #93412b;
|
||||||
|
border: 1px solid #93412b;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- Chat ------- */
|
||||||
|
|
||||||
|
#chat {
|
||||||
|
width: 100%;
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #9c352f;
|
||||||
|
height: 20rem;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_window {
|
||||||
|
background-color: white;
|
||||||
|
width: 85%;
|
||||||
|
float: left;
|
||||||
|
height: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_history {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 8%;
|
||||||
|
max-height: 92%;
|
||||||
|
padding: 0px 0px 5px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_history p {
|
||||||
|
font-size: 0.6em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_text {
|
||||||
|
height: 8%;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 85%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_text input {
|
||||||
|
width: 98%;
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members {
|
||||||
|
list-style-type: none;
|
||||||
|
height: 100%;
|
||||||
|
width: 15%;
|
||||||
|
margin-left: 85%;
|
||||||
|
border-left: 1px solid #9c352f;
|
||||||
|
text-align: right;
|
||||||
|
box-sizing: border-box;
|
||||||
|
min-width: 100px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members li {
|
||||||
|
line-height: 1.2em;
|
||||||
|
padding: 5px 10px 2px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members .highlighted {
|
||||||
|
background-color: #c14d45;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.chat_member {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.chat_member1 {
|
||||||
|
color: #3626c8;
|
||||||
|
}
|
||||||
|
.chat_member2 {
|
||||||
|
color: #e38d0b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#member_search {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 15%;
|
||||||
|
height: 8%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#member_search input {
|
||||||
|
width: 88%;
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 316 B |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 146 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 49 KiB |
@@ -0,0 +1,110 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
|
||||||
|
<title>010010000100111101010100</title>
|
||||||
|
<meta name="description" content="JavaScript. HTML mühelos manipuliert" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="assets/css/styles.css" type="text/css" media="screen" />
|
||||||
|
<link rel="shortcut icon" href="assets/img/favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header></header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<h1 class="article">
|
||||||
|
Hot Binary Heat Changing Mug
|
||||||
|
<span class="keyword">"010010000100111101010100"</span>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<img
|
||||||
|
alt="Hot Binary Heat Changing Mug"
|
||||||
|
src="assets/img/thinkgeek_2024_hot_binary_heat_change_mug.gif"
|
||||||
|
class="float_left"
|
||||||
|
id="product_img" />
|
||||||
|
|
||||||
|
<h2>Description</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Numbers make up
|
||||||
|
<span class="special">everything</span> in our digital world. They flow around us, invisible like the Force or
|
||||||
|
the Matrix, controlling all our many computer-y devices. Two numbers, in particular:
|
||||||
|
<span class="special">0 and 1</span>. <span class="b i">Off and On</span>. Well, we can tell you this: when
|
||||||
|
there's no coffee in our cup, we're completely OFF our game. But when our mug is full of hot coffee, we're
|
||||||
|
totally ON. And now, with the <span class="keyword">Hot Binary Heat Changing Mug</span>, there's a mug that
|
||||||
|
tells us which state our mug is in. In binary!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
See, the
|
||||||
|
<span class="keyword">Hot Binary Heat Changing Mug</span>
|
||||||
|
looks like just a dark mug with binary numbers all over it. That's its OFF or cold state. Add hot coffee (or any
|
||||||
|
liquid) and a series of digits will turn white. Read them continuously from left to right, and you'll read:
|
||||||
|
<span class="keyword">010010000100111101010100</span>. That's <span class="special">in binary</span>. Of course,
|
||||||
|
your
|
||||||
|
<span class="keyword">Hot Binary Heat Changing Mug</span>
|
||||||
|
could just be paying you a compliment. Cheeky, mug.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img alt="010010000100111101010100" src="assets/img/thinkgeek_2024_hot_binary_heat_change_mug_grid_embed.jpg" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Product Specifications</h2>
|
||||||
|
|
||||||
|
<ul id="product_specification">
|
||||||
|
<li class="keyword">Hot Binary Heat Changing Mug</li>
|
||||||
|
<li>
|
||||||
|
As you add hot liquids, the binary for "HOT" appears (read from left to right in one line, not two:
|
||||||
|
010010000100111101010100)
|
||||||
|
</li>
|
||||||
|
<li>A <span class="keyword">ThinkGeek</span> creation and exclusive!</li>
|
||||||
|
<li>
|
||||||
|
Care Instructions:
|
||||||
|
<span class="i b">Hand wash only. Not microwave or dishwasher safe.</span>
|
||||||
|
</li>
|
||||||
|
<li>Materials: Ceramic</li>
|
||||||
|
<li>Dimensions: approx. 3.15" diameter x 3.75" tall</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>You wanna buy it?</h3>
|
||||||
|
|
||||||
|
<p class="buy_info_text">If you like to buy this brilliant mug, just do the following steps:</p>
|
||||||
|
|
||||||
|
<ol class="model" data-model="LDV73C-X3">
|
||||||
|
<li>Select how many items do you want.</li>
|
||||||
|
<li>Press "buy".</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<form id="buy_form">
|
||||||
|
<select>
|
||||||
|
<option>1 item</option>
|
||||||
|
<option>2 items</option>
|
||||||
|
<option>3 items</option>
|
||||||
|
<option>4 items</option>
|
||||||
|
</select>
|
||||||
|
<input type="button" value="buy" />
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>(C) by ThinkGeek – Produkttext mit freundlicher Genehmigung von ThinkGeek Inc.</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
{
|
||||||
|
const $ = (qs) => document.querySelector(qs);
|
||||||
|
const $$ = (qs) => Array.from(document.querySelectorAll(qs));
|
||||||
|
|
||||||
|
// Übung 15: — Teil 7
|
||||||
|
// Verändere die Produktseite der Binär-Tasse mithilfe von JavaScript. Du kannst wieder die JS-Konsole verwenden.
|
||||||
|
|
||||||
|
// 1. Füge in der Liste der Product Specifications mithilfe von JavaScript folgenden Listenpunkt hinzu:
|
||||||
|
// Capacity: 11 oz.
|
||||||
|
|
||||||
|
// 2. Erweitere die Select-Box neben dem buy-Button mithilfe von JavaScript um den Eintrag: 5 items.
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,369 @@
|
|||||||
|
/* -------------------------------------------- Haupt CSS fuer alle Seiten -------------------------------------------- */
|
||||||
|
|
||||||
|
/* ---------------- CSS-Reset ------------------- */
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
a,
|
||||||
|
div,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
span,
|
||||||
|
p,
|
||||||
|
img,
|
||||||
|
strong,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
table,
|
||||||
|
th,
|
||||||
|
td,
|
||||||
|
tr {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 0px none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: inherit;
|
||||||
|
font-family: inherit;
|
||||||
|
font-variant: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
table-layout: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- Body / HTML ------------------- */
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 100%;
|
||||||
|
background-color: #fffef7;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 1.2em;
|
||||||
|
font-weight: normal;
|
||||||
|
color: black;
|
||||||
|
margin: 0rem auto 2rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- layout ------------------- */
|
||||||
|
|
||||||
|
header {
|
||||||
|
background: url(../img/js_header.png) left top no-repeat transparent;
|
||||||
|
background-size: cover;
|
||||||
|
height: 250px;
|
||||||
|
min-width: 850px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header:after {
|
||||||
|
content: ' ';
|
||||||
|
display: block;
|
||||||
|
height: 250px;
|
||||||
|
background: rgba(255, 254, 247, 0);
|
||||||
|
background: -moz-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -webkit-gradient(
|
||||||
|
left top,
|
||||||
|
left bottom,
|
||||||
|
color-stop(0%, rgba(255, 254, 247, 0)),
|
||||||
|
color-stop(22%, rgba(255, 254, 247, 0.55)),
|
||||||
|
color-stop(42%, rgba(255, 254, 247, 0.7)),
|
||||||
|
color-stop(43%, rgba(255, 254, 247, 0.71)),
|
||||||
|
color-stop(61%, rgba(255, 254, 247, 0.78)),
|
||||||
|
color-stop(75%, rgba(255, 254, 247, 0.92)),
|
||||||
|
color-stop(87%, rgba(255, 254, 247, 1)),
|
||||||
|
color-stop(100%, rgba(255, 254, 247, 1))
|
||||||
|
);
|
||||||
|
background: -webkit-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -o-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -ms-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fffef7', endColorstr='#fffef7', GradientType=0 );
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fffef7', endColorstr='#fffef7', GradientType=0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
main,
|
||||||
|
footer {
|
||||||
|
width: 70%;
|
||||||
|
margin: 3rem auto;
|
||||||
|
min-width: 850px;
|
||||||
|
padding: 0 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- Content ------------------- */
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 3em;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2.5em;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2em;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height: 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cited {
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.b {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.i {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.align_right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.align_left {
|
||||||
|
text-align: left;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.align_center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.float_left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.float_right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.clear_both {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.special {
|
||||||
|
color: #b7595b;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.keyword {
|
||||||
|
color: #db6f50;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.gray,
|
||||||
|
.grey {
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links */
|
||||||
|
main a:link,
|
||||||
|
main a:visited {
|
||||||
|
color: #eb690b;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
main a:focus,
|
||||||
|
main a:hover,
|
||||||
|
main a:active {
|
||||||
|
color: #eb690b;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-position: outside;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-left: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
line-height: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- Article ------- */
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2.7em;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form input[type='button'] {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 1px 20px 3px 20px;
|
||||||
|
background-color: #93412b;
|
||||||
|
color: white;
|
||||||
|
border: 1px solid white;
|
||||||
|
font-size: 1em;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form input[type='button']:hover {
|
||||||
|
background-color: white;
|
||||||
|
color: #93412b;
|
||||||
|
border: 1px solid #93412b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form select {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 1em;
|
||||||
|
background-color: white;
|
||||||
|
color: #93412b;
|
||||||
|
border: 1px solid #93412b;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- Chat ------- */
|
||||||
|
|
||||||
|
#chat {
|
||||||
|
width: 100%;
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #9c352f;
|
||||||
|
height: 20rem;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_window {
|
||||||
|
background-color: white;
|
||||||
|
width: 85%;
|
||||||
|
float: left;
|
||||||
|
height: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_history {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 8%;
|
||||||
|
max-height: 92%;
|
||||||
|
padding: 0px 0px 5px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_history p {
|
||||||
|
font-size: 0.6em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_text {
|
||||||
|
height: 8%;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 85%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_text input {
|
||||||
|
width: 98%;
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members {
|
||||||
|
list-style-type: none;
|
||||||
|
height: 100%;
|
||||||
|
width: 15%;
|
||||||
|
margin-left: 85%;
|
||||||
|
border-left: 1px solid #9c352f;
|
||||||
|
text-align: right;
|
||||||
|
box-sizing: border-box;
|
||||||
|
min-width: 100px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members li {
|
||||||
|
line-height: 1.2em;
|
||||||
|
padding: 5px 10px 2px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members .highlighted {
|
||||||
|
background-color: #c14d45;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.chat_member {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.chat_member1 {
|
||||||
|
color: #3626c8;
|
||||||
|
}
|
||||||
|
.chat_member2 {
|
||||||
|
color: #e38d0b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#member_search {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 15%;
|
||||||
|
height: 8%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#member_search input {
|
||||||
|
width: 88%;
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 316 B |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 146 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 49 KiB |
@@ -0,0 +1,109 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
|
||||||
|
<title>010010000100111101010100</title>
|
||||||
|
<meta name="description" content="JavaScript. HTML mühelos manipuliert" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="assets/css/styles.css" type="text/css" media="screen" />
|
||||||
|
<link rel="shortcut icon" href="assets/img/favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header></header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<h1 class="article">
|
||||||
|
Hot Binary Heat Changing Mug
|
||||||
|
<span class="keyword">"010010000100111101010100"</span>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<img
|
||||||
|
alt="Hot Binary Heat Changing Mug"
|
||||||
|
src="assets/img/thinkgeek_2024_hot_binary_heat_change_mug.gif"
|
||||||
|
class="float_left"
|
||||||
|
id="product_img" />
|
||||||
|
|
||||||
|
<h2>Description</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Numbers make up
|
||||||
|
<span class="special">everything</span> in our digital world. They flow around us, invisible like the Force or
|
||||||
|
the Matrix, controlling all our many computer-y devices. Two numbers, in particular:
|
||||||
|
<span class="special">0 and 1</span>. <span class="b i">Off and On</span>. Well, we can tell you this: when
|
||||||
|
there's no coffee in our cup, we're completely OFF our game. But when our mug is full of hot coffee, we're
|
||||||
|
totally ON. And now, with the <span class="keyword">Hot Binary Heat Changing Mug</span>, there's a mug that
|
||||||
|
tells us which state our mug is in. In binary!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
See, the
|
||||||
|
<span class="keyword">Hot Binary Heat Changing Mug</span>
|
||||||
|
looks like just a dark mug with binary numbers all over it. That's its OFF or cold state. Add hot coffee (or any
|
||||||
|
liquid) and a series of digits will turn white. Read them continuously from left to right, and you'll read:
|
||||||
|
<span class="keyword">010010000100111101010100</span>. That's <span class="special">in binary</span>. Of course,
|
||||||
|
your
|
||||||
|
<span class="keyword">Hot Binary Heat Changing Mug</span>
|
||||||
|
could just be paying you a compliment. Cheeky, mug.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img alt="010010000100111101010100" src="assets/img/thinkgeek_2024_hot_binary_heat_change_mug_grid_embed.jpg" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Product Specifications</h2>
|
||||||
|
|
||||||
|
<ul id="product_specification">
|
||||||
|
<li class="keyword">Hot Binary Heat Changing Mug</li>
|
||||||
|
<li>
|
||||||
|
As you add hot liquids, the binary for "HOT" appears (read from left to right in one line, not two:
|
||||||
|
010010000100111101010100)
|
||||||
|
</li>
|
||||||
|
<li>A <span class="keyword">ThinkGeek</span> creation and exclusive!</li>
|
||||||
|
<li>
|
||||||
|
Care Instructions:
|
||||||
|
<span class="i b">Hand wash only. Not microwave or dishwasher safe.</span>
|
||||||
|
</li>
|
||||||
|
<li>Materials: Ceramic</li>
|
||||||
|
<li>Dimensions: approx. 3.15" diameter x 3.75" tall</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>You wanna buy it?</h3>
|
||||||
|
|
||||||
|
<p class="buy_info_text">If you like to buy this brilliant mug, just do the following steps:</p>
|
||||||
|
|
||||||
|
<ol class="model" data-model="LDV73C-X3">
|
||||||
|
<li>Select how many items do you want.</li>
|
||||||
|
<li>Press "buy".</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<form id="buy_form">
|
||||||
|
<select>
|
||||||
|
<option>1 item</option>
|
||||||
|
<option>2 items</option>
|
||||||
|
<option>3 items</option>
|
||||||
|
<option>4 items</option>
|
||||||
|
</select>
|
||||||
|
<input type="button" value="buy" />
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>(C) by ThinkGeek – Produkttext mit freundlicher Genehmigung von ThinkGeek Inc.</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
{
|
||||||
|
const $ = (qs) => document.querySelector(qs);
|
||||||
|
const $$ = (qs) => Array.from(document.querySelectorAll(qs));
|
||||||
|
|
||||||
|
// Übung 16: — Teil 8
|
||||||
|
// Verändere erneut die Produktseite der Binär-Tasse mithilfe von JavaScript. Du kannst auch hier wieder die JS-Konsole verwenden.
|
||||||
|
|
||||||
|
// 1. Entferne die Überschrift Description mit der remove-Methode.
|
||||||
|
|
||||||
|
// 2. Entferne mit der remove-Methode den Text "010010000100111101010100" aus der Hauptüberschrift.
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,369 @@
|
|||||||
|
/* -------------------------------------------- Haupt CSS fuer alle Seiten -------------------------------------------- */
|
||||||
|
|
||||||
|
/* ---------------- CSS-Reset ------------------- */
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
a,
|
||||||
|
div,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
span,
|
||||||
|
p,
|
||||||
|
img,
|
||||||
|
strong,
|
||||||
|
ul,
|
||||||
|
li,
|
||||||
|
table,
|
||||||
|
th,
|
||||||
|
td,
|
||||||
|
tr {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
border: 0px none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: inherit;
|
||||||
|
font-family: inherit;
|
||||||
|
font-variant: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
table-layout: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- Body / HTML ------------------- */
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 100%;
|
||||||
|
background-color: #fffef7;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 1.2em;
|
||||||
|
font-weight: normal;
|
||||||
|
color: black;
|
||||||
|
margin: 0rem auto 2rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- layout ------------------- */
|
||||||
|
|
||||||
|
header {
|
||||||
|
background: url(../img/js_header.png) left top no-repeat transparent;
|
||||||
|
background-size: cover;
|
||||||
|
height: 250px;
|
||||||
|
min-width: 850px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header:after {
|
||||||
|
content: ' ';
|
||||||
|
display: block;
|
||||||
|
height: 250px;
|
||||||
|
background: rgba(255, 254, 247, 0);
|
||||||
|
background: -moz-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -webkit-gradient(
|
||||||
|
left top,
|
||||||
|
left bottom,
|
||||||
|
color-stop(0%, rgba(255, 254, 247, 0)),
|
||||||
|
color-stop(22%, rgba(255, 254, 247, 0.55)),
|
||||||
|
color-stop(42%, rgba(255, 254, 247, 0.7)),
|
||||||
|
color-stop(43%, rgba(255, 254, 247, 0.71)),
|
||||||
|
color-stop(61%, rgba(255, 254, 247, 0.78)),
|
||||||
|
color-stop(75%, rgba(255, 254, 247, 0.92)),
|
||||||
|
color-stop(87%, rgba(255, 254, 247, 1)),
|
||||||
|
color-stop(100%, rgba(255, 254, 247, 1))
|
||||||
|
);
|
||||||
|
background: -webkit-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -o-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: -ms-linear-gradient(
|
||||||
|
top,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
background: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(255, 254, 247, 0) 0%,
|
||||||
|
rgba(255, 254, 247, 0.55) 22%,
|
||||||
|
rgba(255, 254, 247, 0.7) 42%,
|
||||||
|
rgba(255, 254, 247, 0.71) 43%,
|
||||||
|
rgba(255, 254, 247, 0.78) 61%,
|
||||||
|
rgba(255, 254, 247, 0.92) 75%,
|
||||||
|
rgba(255, 254, 247, 1) 87%,
|
||||||
|
rgba(255, 254, 247, 1) 100%
|
||||||
|
);
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fffef7', endColorstr='#fffef7', GradientType=0 );
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fffef7', endColorstr='#fffef7', GradientType=0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
main,
|
||||||
|
footer {
|
||||||
|
width: 70%;
|
||||||
|
margin: 3rem auto;
|
||||||
|
min-width: 850px;
|
||||||
|
padding: 0 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---------------- Content ------------------- */
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 3em;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2.5em;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2em;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
line-height: 15px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 1.7em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cited {
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.u {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.b {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.i {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.align_right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.align_left {
|
||||||
|
text-align: left;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.align_center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.float_left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.float_right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.clear_both {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.special {
|
||||||
|
color: #b7595b;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.keyword {
|
||||||
|
color: #db6f50;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.gray,
|
||||||
|
.grey {
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links */
|
||||||
|
main a:link,
|
||||||
|
main a:visited {
|
||||||
|
color: #eb690b;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
main a:focus,
|
||||||
|
main a:hover,
|
||||||
|
main a:active {
|
||||||
|
color: #eb690b;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-position: outside;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-left: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
line-height: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- Article ------- */
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #93412b;
|
||||||
|
font-size: 2.7em;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form input[type='button'] {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 1px 20px 3px 20px;
|
||||||
|
background-color: #93412b;
|
||||||
|
color: white;
|
||||||
|
border: 1px solid white;
|
||||||
|
font-size: 1em;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form input[type='button']:hover {
|
||||||
|
background-color: white;
|
||||||
|
color: #93412b;
|
||||||
|
border: 1px solid #93412b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#buy_form select {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 1em;
|
||||||
|
background-color: white;
|
||||||
|
color: #93412b;
|
||||||
|
border: 1px solid #93412b;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ------- Chat ------- */
|
||||||
|
|
||||||
|
#chat {
|
||||||
|
width: 100%;
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid #9c352f;
|
||||||
|
height: 20rem;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_window {
|
||||||
|
background-color: white;
|
||||||
|
width: 85%;
|
||||||
|
float: left;
|
||||||
|
height: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_history {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 8%;
|
||||||
|
max-height: 92%;
|
||||||
|
padding: 0px 0px 5px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_history p {
|
||||||
|
font-size: 0.6em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_text {
|
||||||
|
height: 8%;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 85%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_text input {
|
||||||
|
width: 98%;
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members {
|
||||||
|
list-style-type: none;
|
||||||
|
height: 100%;
|
||||||
|
width: 15%;
|
||||||
|
margin-left: 85%;
|
||||||
|
border-left: 1px solid #9c352f;
|
||||||
|
text-align: right;
|
||||||
|
box-sizing: border-box;
|
||||||
|
min-width: 100px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members li {
|
||||||
|
line-height: 1.2em;
|
||||||
|
padding: 5px 10px 2px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#chat_members .highlighted {
|
||||||
|
background-color: #c14d45;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.chat_member {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.chat_member1 {
|
||||||
|
color: #3626c8;
|
||||||
|
}
|
||||||
|
.chat_member2 {
|
||||||
|
color: #e38d0b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#member_search {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 15%;
|
||||||
|
height: 8%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#member_search input {
|
||||||
|
width: 88%;
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 316 B |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 146 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 49 KiB |
@@ -0,0 +1,111 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
|
||||||
|
<title>010010000100111101010100</title>
|
||||||
|
<meta name="description" content="JavaScript. HTML mühelos manipuliert" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="assets/css/styles.css" type="text/css" media="screen" />
|
||||||
|
<link rel="shortcut icon" href="assets/img/favicon.ico" type="image/x-icon" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<header></header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<h1 class="article">
|
||||||
|
Hot Binary Heat Changing Mug
|
||||||
|
<span class="keyword">"010010000100111101010100"</span>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<img
|
||||||
|
alt="Hot Binary Heat Changing Mug"
|
||||||
|
src="assets/img/thinkgeek_2024_hot_binary_heat_change_mug.gif"
|
||||||
|
class="float_left"
|
||||||
|
id="product_img" />
|
||||||
|
|
||||||
|
<h2>Description</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Numbers make up
|
||||||
|
<span class="special">everything</span> in our digital world. They flow around us, invisible like the Force or
|
||||||
|
the Matrix, controlling all our many computer-y devices. Two numbers, in particular:
|
||||||
|
<span class="special">0 and 1</span>. <span class="b i">Off and On</span>. Well, we can tell you this: when
|
||||||
|
there's no coffee in our cup, we're completely OFF our game. But when our mug is full of hot coffee, we're
|
||||||
|
totally ON. And now, with the <span class="keyword">Hot Binary Heat Changing Mug</span>, there's a mug that
|
||||||
|
tells us which state our mug is in. In binary!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
See, the
|
||||||
|
<span class="keyword">Hot Binary Heat Changing Mug</span>
|
||||||
|
looks like just a dark mug with binary numbers all over it. That's its OFF or cold state. Add hot coffee (or any
|
||||||
|
liquid) and a series of digits will turn white. Read them continuously from left to right, and you'll read:
|
||||||
|
<span class="keyword">010010000100111101010100</span>. That's <span class="special">in binary</span>. Of course,
|
||||||
|
your
|
||||||
|
<span class="keyword">Hot Binary Heat Changing Mug</span>
|
||||||
|
could just be paying you a compliment. Cheeky, mug.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img alt="010010000100111101010100" src="assets/img/thinkgeek_2024_hot_binary_heat_change_mug_grid_embed.jpg" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Product Specifications</h2>
|
||||||
|
|
||||||
|
<ul id="product_specification">
|
||||||
|
<li class="keyword">Hot Binary Heat Changing Mug</li>
|
||||||
|
<li>
|
||||||
|
As you add hot liquids, the binary for "HOT" appears (read from left to right in one line, not two:
|
||||||
|
010010000100111101010100)
|
||||||
|
</li>
|
||||||
|
<li>A <span class="keyword">ThinkGeek</span> creation and exclusive!</li>
|
||||||
|
<li>
|
||||||
|
Care Instructions:
|
||||||
|
<span class="i b">Hand wash only. Not microwave or dishwasher safe.</span>
|
||||||
|
</li>
|
||||||
|
<li>Materials: Ceramic</li>
|
||||||
|
<li>Dimensions: approx. 3.15" diameter x 3.75" tall</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>You wanna buy it?</h3>
|
||||||
|
|
||||||
|
<p class="buy_info_text">If you like to buy this brilliant mug, just do the following steps:</p>
|
||||||
|
|
||||||
|
<ol class="model" data-model="LDV73C-X3">
|
||||||
|
<li>Select how many items do you want.</li>
|
||||||
|
<li>Press "buy".</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<form id="buy_form">
|
||||||
|
<select>
|
||||||
|
<option>1 item</option>
|
||||||
|
<option>2 items</option>
|
||||||
|
<option>3 items</option>
|
||||||
|
<option>4 items</option>
|
||||||
|
</select>
|
||||||
|
<input type="button" value="buy" />
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>(C) by ThinkGeek – Produkttext mit freundlicher Genehmigung von ThinkGeek Inc.</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
{
|
||||||
|
const $ = (qs) => document.querySelector(qs);
|
||||||
|
const $$ = (qs) => Array.from(document.querySelectorAll(qs));
|
||||||
|
|
||||||
|
// Übung 17: — Teil 9
|
||||||
|
// Verändere die Produktseite der Binär-Tasse mithilfe von JavaScript.
|
||||||
|
|
||||||
|
// Füge noch einmal den folgenden Listenpunkt zur Liste der Product Specifications hinzu:
|
||||||
|
|
||||||
|
// Capacity: 11 oz.
|
||||||
|
|
||||||
|
// Füge den Listenpunkt aber dieses Mal nicht am Ende der Liste ein, sondern vor dem Eintrag Materials: Ceramic.
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -20,3 +20,15 @@ body {
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.product-manager table td {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-manager table td button {
|
||||||
|
margin: 0 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-manager table .th-actions {
|
||||||
|
width: 180px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -34,7 +34,32 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
addProduct(product);
|
addProduct(product);
|
||||||
|
disableNonFunctionalButtons();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onClickRemove = (e) => {
|
||||||
|
const btn = e.currentTarget;
|
||||||
|
const currentRow = parents(btn, 'tr')[0]; // btn.closest('tr'); // btn.parentNode.parentNode;
|
||||||
|
|
||||||
|
currentRow.remove();
|
||||||
|
// currentRow.parentNode.removeChild(currentRow); // IE11 support
|
||||||
|
disableNonFunctionalButtons();
|
||||||
|
};
|
||||||
|
|
||||||
|
const onClickMoveUp = (e) => {
|
||||||
|
const btn = e.currentTarget;
|
||||||
|
const currentRow = parents(btn, 'tr')[0];
|
||||||
|
DOM.tbody.insertBefore(currentRow, currentRow.previousElementSibling);
|
||||||
|
disableNonFunctionalButtons();
|
||||||
|
};
|
||||||
|
|
||||||
|
const onClickMoveDown = (e) => {
|
||||||
|
const btn = e.currentTarget;
|
||||||
|
const currentRow = parents(btn, 'tr')[0];
|
||||||
|
DOM.tbody.insertBefore(currentRow, currentRow.nextElementSibling.nextElementSibling);
|
||||||
|
disableNonFunctionalButtons();
|
||||||
|
};
|
||||||
|
|
||||||
// === XHR/FETCH ========
|
// === XHR/FETCH ========
|
||||||
|
|
||||||
// === FUNCTIONS ========
|
// === FUNCTIONS ========
|
||||||
@@ -43,6 +68,7 @@
|
|||||||
// addProduct(product);
|
// addProduct(product);
|
||||||
// });
|
// });
|
||||||
PRODUCTS.forEach(addProduct);
|
PRODUCTS.forEach(addProduct);
|
||||||
|
disableNonFunctionalButtons();
|
||||||
};
|
};
|
||||||
|
|
||||||
const addProduct = (product) => {
|
const addProduct = (product) => {
|
||||||
@@ -60,21 +86,108 @@
|
|||||||
const td = document.createElement('td');
|
const td = document.createElement('td');
|
||||||
td.classList.add('td-actions');
|
td.classList.add('td-actions');
|
||||||
|
|
||||||
const btnRemove = document.createElement('button');
|
const btnRemove = createBtn({
|
||||||
|
classNames: ['btn-danger', 'button-product-remove'],
|
||||||
|
iconName: 'trash-can',
|
||||||
|
label: 'Remove product',
|
||||||
|
clickHandler: onClickRemove,
|
||||||
|
});
|
||||||
|
const btnMoveUp = createBtn({
|
||||||
|
classNames: ['btn-secondary', 'button-product-move-up'],
|
||||||
|
iconName: 'chevron-up',
|
||||||
|
label: 'Move up',
|
||||||
|
clickHandler: onClickMoveUp,
|
||||||
|
});
|
||||||
|
const btnMoveDown = createBtn({
|
||||||
|
classNames: ['btn-secondary', 'button-product-move-down'],
|
||||||
|
iconName: 'chevron-down',
|
||||||
|
label: 'Move down',
|
||||||
|
clickHandler: onClickMoveDown,
|
||||||
|
});
|
||||||
|
|
||||||
|
td.append(btnRemove, btnMoveUp, btnMoveDown);
|
||||||
|
|
||||||
|
return td;
|
||||||
|
};
|
||||||
|
|
||||||
|
// const createBtnRemove = () => {
|
||||||
|
// const btn = document.createElement('button');
|
||||||
|
// const icon = document.createElement('i');
|
||||||
|
// const span = document.createElement('span');
|
||||||
|
|
||||||
|
// btn.classList.add('btn', 'btn-danger', 'button-product-remove');
|
||||||
|
// icon.classList.add('fas', 'fa-trash-can');
|
||||||
|
// span.classList.add('visually-hidden');
|
||||||
|
// span.textContent = 'Remove Product';
|
||||||
|
|
||||||
|
// btn.addEventListener('click', onClickRemove);
|
||||||
|
|
||||||
|
// btn.appendChild(icon);
|
||||||
|
// btn.appendChild(span);
|
||||||
|
|
||||||
|
// return btn;
|
||||||
|
// };
|
||||||
|
|
||||||
|
// const createBtnMoveUp = () => {
|
||||||
|
// const btn = document.createElement('button');
|
||||||
|
// const icon = document.createElement('i');
|
||||||
|
// const span = document.createElement('span');
|
||||||
|
|
||||||
|
// btn.classList.add('btn', 'btn-secondary', 'button-product-move-up');
|
||||||
|
// icon.classList.add('fas', 'fa-chevron-up');
|
||||||
|
// span.classList.add('visually-hidden');
|
||||||
|
// span.textContent = 'Move up';
|
||||||
|
|
||||||
|
// btn.addEventListener('click', onClickMoveUp);
|
||||||
|
|
||||||
|
// btn.appendChild(icon);
|
||||||
|
// btn.appendChild(span);
|
||||||
|
|
||||||
|
// return btn;
|
||||||
|
// };
|
||||||
|
|
||||||
|
// const createBtnMoveDown = () => {
|
||||||
|
// const btn = document.createElement('button');
|
||||||
|
// const icon = document.createElement('i');
|
||||||
|
// const span = document.createElement('span');
|
||||||
|
|
||||||
|
// btn.classList.add('btn', 'btn-secondary', 'button-product-move-down');
|
||||||
|
// icon.classList.add('fas', 'fa-chevron-down');
|
||||||
|
// span.classList.add('visually-hidden');
|
||||||
|
// span.textContent = 'Move down';
|
||||||
|
|
||||||
|
// btn.addEventListener('click', onClickMoveDown);
|
||||||
|
|
||||||
|
// btn.appendChild(icon);
|
||||||
|
// btn.appendChild(span);
|
||||||
|
|
||||||
|
// return btn;
|
||||||
|
// };
|
||||||
|
|
||||||
|
const createBtn = (options = {}) => {
|
||||||
|
const {
|
||||||
|
classNames = [],
|
||||||
|
iconName = 'circle',
|
||||||
|
label,
|
||||||
|
clickHandler = (e) => {
|
||||||
|
console.log('no click action');
|
||||||
|
},
|
||||||
|
} = options;
|
||||||
|
const btn = document.createElement('button');
|
||||||
const icon = document.createElement('i');
|
const icon = document.createElement('i');
|
||||||
const span = document.createElement('span');
|
const span = document.createElement('span');
|
||||||
|
|
||||||
btnRemove.classList.add('btn', 'btn-danger', 'button-product-remove');
|
btn.classList.add('btn', ...classNames);
|
||||||
icon.classList.add('fas', 'fa-trash-can');
|
icon.classList.add('fas', `fa-${iconName}`);
|
||||||
span.classList.add('visually-hidden');
|
span.classList.add('visually-hidden');
|
||||||
span.textContent = 'Remove Product';
|
span.textContent = label;
|
||||||
|
|
||||||
btnRemove.appendChild(icon);
|
btn.addEventListener('click', clickHandler);
|
||||||
btnRemove.appendChild(span);
|
|
||||||
|
|
||||||
td.appendChild(btnRemove);
|
btn.appendChild(icon);
|
||||||
|
btn.appendChild(span);
|
||||||
|
|
||||||
return td;
|
return btn;
|
||||||
};
|
};
|
||||||
|
|
||||||
const createTd = (text, ...classNames) => {
|
const createTd = (text, ...classNames) => {
|
||||||
@@ -95,5 +208,21 @@
|
|||||||
return tr;
|
return tr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const disableNonFunctionalButtons = () => {
|
||||||
|
DOM.tbody.querySelectorAll('tr').forEach((tr) => {
|
||||||
|
tr.querySelector('.button-product-move-up').disabled = !tr.previousElementSibling;
|
||||||
|
tr.querySelector('.button-product-move-down').disabled = !tr.nextElementSibling;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Helper
|
||||||
|
function parents(el, selector) {
|
||||||
|
const parents = [];
|
||||||
|
while ((el = el.parentNode) && el !== document) {
|
||||||
|
if (!selector || el.matches(selector)) parents.push(el);
|
||||||
|
}
|
||||||
|
return parents;
|
||||||
|
}
|
||||||
|
|
||||||
init();
|
init();
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -34,6 +34,14 @@
|
|||||||
<i class="fas fa-trash-can"></i>
|
<i class="fas fa-trash-can"></i>
|
||||||
<span class="visually-hidden">Remove Product</span>
|
<span class="visually-hidden">Remove Product</span>
|
||||||
</button>
|
</button>
|
||||||
|
<button class="btn btn-secondary button-product-move-up">
|
||||||
|
<i class="fas fa-chevron-up"></i>
|
||||||
|
<span class="visually-hidden">Move up</span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-secondary button-product-move-down">
|
||||||
|
<i class="fas fa-chevron-down"></i>
|
||||||
|
<span class="visually-hidden">Move down</span>
|
||||||
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</tr> -->
|
</tr> -->
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||