stuff
commit
d5b9c54ea1
|
@ -0,0 +1,18 @@
|
|||
const app = Vue.createApp({
|
||||
data: () => ({
|
||||
newItem: "",
|
||||
items: ["buy milk"],
|
||||
}),
|
||||
methods: {
|
||||
addItem() {
|
||||
if (!this.newItem) return;
|
||||
this.items.unshift(this.newItem);
|
||||
this.newItem = "";
|
||||
},
|
||||
removeItem(index) {
|
||||
this.items.splice(index, 1);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
app.mount("#comp");
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Example 1 Week 5</title>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://unpkg.com/mustard-ui@latest/dist/css/mustard-ui.min.css"
|
||||
/>
|
||||
<script src="https://unpkg.com/vue@latest" defer></script>
|
||||
<script src="app.js" defer></script>
|
||||
<style>
|
||||
.active {
|
||||
background-color: aqua;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<section id="comp" class="section-secondary">
|
||||
<h1>ToDo List</h1>
|
||||
<div class="form-control">
|
||||
<label>Enter new Item</label>
|
||||
<input type="text" placeholder="Fill me up" v-model="newItem" />
|
||||
</div>
|
||||
<button
|
||||
:class="[!!newItem ? 'button-primary':'button-primary-outlined']"
|
||||
@click="addItem"
|
||||
>
|
||||
Add
|
||||
</button>
|
||||
<ul>
|
||||
<li v-for="(item, index) of items" :key="index">
|
||||
{{ item }} <button
|
||||
class="button-danger button-small"
|
||||
@click="removeItem(index)"
|
||||
>
|
||||
X
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
|
@ -0,0 +1,20 @@
|
|||
const app = Vue.createApp({
|
||||
data: () => ({
|
||||
myName: "Marc",
|
||||
myAge: 12,
|
||||
anImageUrl:
|
||||
"https://images.unsplash.com/photo-1444464666168-49d633b86797?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2338&q=80",
|
||||
myInput:
|
||||
"Deserunt cupidatat dolor ea ex excepteur ad Lorem culpa pariatur dolore.",
|
||||
}),
|
||||
methods: {
|
||||
agePlusFive() {
|
||||
return this.myAge + 5;
|
||||
},
|
||||
randomNumber() {
|
||||
return Math.random();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
app.mount("#assignment");
|
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vue Basics</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Jost:wght@400;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<script src="https://unpkg.com/vue@next" defer></script>
|
||||
<script src="app.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<section id="assignment">
|
||||
<!-- 1) Output your name -->
|
||||
<h2>{{myName}}</h2>
|
||||
<!-- 2) Output your age -->
|
||||
<p>{{myAge}}</p>
|
||||
<!-- 3) Output your age + 5 -->
|
||||
<p>{{ agePlusFive() }}</p>
|
||||
<!-- 4) Output a random number (0 to 1) -->
|
||||
<p>{{ randomNumber() }}</p>
|
||||
<div>
|
||||
<!-- 5) Display some image you found via Google -->
|
||||
<img :src="anImageUrl" height="300" />
|
||||
</div>
|
||||
<!-- 6) Prepopulate the input field with your name via the "value" attribute -->
|
||||
<input type="text" v-model="myInput" />
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,63 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: 'Jost', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
section {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
border-bottom: 4px solid #ccc;
|
||||
color: #970076;
|
||||
margin: 0 0 1rem 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
background-color: #970076;
|
||||
padding: 0.5rem;
|
||||
color: white;
|
||||
border-radius: 25px;
|
||||
}
|
||||
|
||||
input {
|
||||
font: inherit;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
input:focus {
|
||||
outline: none;
|
||||
border-color: #1b995e;
|
||||
background-color: #d7fdeb;
|
||||
}
|
||||
|
||||
button {
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
border: 1px solid #ff0077;
|
||||
background-color: #ff0077;
|
||||
color: white;
|
||||
padding: 0.05rem 1rem;
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
button:hover,
|
||||
button:active {
|
||||
background-color: #ec3169;
|
||||
border-color: #ec3169;
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
const app = Vue.createApp({
|
||||
data: () => ({
|
||||
paragraph2: "",
|
||||
paragraph3: "",
|
||||
}),
|
||||
methods: {
|
||||
showAlert() {
|
||||
alert("WTF!");
|
||||
},
|
||||
update2(event) {
|
||||
this.paragraph2 = event.target.value;
|
||||
},
|
||||
update3(event) {
|
||||
this.paragraph3 = event.target.value;
|
||||
},
|
||||
},
|
||||
});
|
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vue Basics</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Jost:wght@400;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<script src="https://unpkg.com/vue@next" defer></script>
|
||||
<script src="app.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Events</h1>
|
||||
</header>
|
||||
<section id="assignment">
|
||||
<h2>Event Practice</h2>
|
||||
<!-- 1) Show an alert (any text of your choice) when the button is pressed -->
|
||||
<button @click="showAlert">Show Alert</button>
|
||||
<hr />
|
||||
<!-- 2) Register the user input on "keydown" and output it in the paragraph (hint: event.target.value helps) -->
|
||||
<input type="text" @keydown="update2" />
|
||||
<p>{{paragraph2}}</p>
|
||||
<hr />
|
||||
<!-- 3) Repeat 2) but only output the entered value if the ENTER key was pressed -->
|
||||
<input type="text" @keydown.enter="update3" />
|
||||
<p>{{paragraph3}}</p>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,73 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: 'Jost', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
background-color: #1b995e;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment h2 {
|
||||
font-size: 2rem;
|
||||
border-bottom: 4px solid #ccc;
|
||||
color: #1b995e;
|
||||
margin: 0 0 1rem 0;
|
||||
}
|
||||
|
||||
#assignment p {
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
background-color: #8ddba4;
|
||||
padding: 0.5rem;
|
||||
color: #1f1f1f;
|
||||
border-radius: 25px;
|
||||
}
|
||||
|
||||
#assignment input {
|
||||
font: inherit;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#assignment input:focus {
|
||||
outline: none;
|
||||
border-color: #1b995e;
|
||||
background-color: #d7fdeb;
|
||||
}
|
||||
|
||||
#assignment button {
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
border: 1px solid #ff0077;
|
||||
background-color: #ff0077;
|
||||
color: white;
|
||||
padding: 0.05rem 1rem;
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
#assignment button:hover,
|
||||
#assignment button:active {
|
||||
background-color: #ec3169;
|
||||
border-color: #ec3169;
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26);
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
const app = Vue.createApp({
|
||||
data: () => ({
|
||||
sum: 0,
|
||||
timeout: null,
|
||||
}),
|
||||
methods: {
|
||||
add(amount) {
|
||||
this.sum += amount;
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
result() {
|
||||
if (this.sum < 37) return "Not there yet";
|
||||
if (this.sum > 37) return "Too much!";
|
||||
return this.number;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
sum() {
|
||||
clearTimeout(this.timeout);
|
||||
this.timeout = setTimeout(() => {
|
||||
this.sum = 0;
|
||||
}, 5000);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
app.mount("#assignment");
|
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vue Basics</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Jost:wght@400;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<script src="https://unpkg.com/vue@next" defer></script>
|
||||
<script src="app.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Reactivity in Action</h1>
|
||||
</header>
|
||||
<section id="assignment">
|
||||
<button @click="add(5)">Add 5</button>
|
||||
<button @click="add(1)">Add 1</button>
|
||||
<!-- 1) Connect the buttons and calculate a value (a number) -->
|
||||
<!-- Show "Not there yet" until you reach a result of exactly 37 -->
|
||||
<!-- Show "Too much!" if the result is greater than 37 -->
|
||||
<p>Result: {{result}}</p>
|
||||
<p>{{sum}}</p>
|
||||
<!-- 2) Watch for changes in "result" and reset the value to 0 after 5 seconds -->
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,73 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: 'Jost', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
background-color: #1b995e;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment h2 {
|
||||
font-size: 2rem;
|
||||
border-bottom: 4px solid #ccc;
|
||||
color: #1b995e;
|
||||
margin: 0 0 1rem 0;
|
||||
}
|
||||
|
||||
#assignment p {
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
background-color: #8ddba4;
|
||||
padding: 0.5rem;
|
||||
color: #1f1f1f;
|
||||
border-radius: 25px;
|
||||
}
|
||||
|
||||
#assignment input {
|
||||
font: inherit;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#assignment input:focus {
|
||||
outline: none;
|
||||
border-color: #1b995e;
|
||||
background-color: #d7fdeb;
|
||||
}
|
||||
|
||||
#assignment button {
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
border: 1px solid #ff0077;
|
||||
background-color: #ff0077;
|
||||
color: white;
|
||||
padding: 0.05rem 1rem;
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
#assignment button:hover,
|
||||
#assignment button:active {
|
||||
background-color: #ec3169;
|
||||
border-color: #ec3169;
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26);
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
const app = Vue.createApp({
|
||||
data: () => ({
|
||||
class1: "",
|
||||
visible: true,
|
||||
color: "",
|
||||
}),
|
||||
});
|
||||
|
||||
app.mount("#assignment");
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vue Basics</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Jost:wght@400;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<script src="https://unpkg.com/vue@next" defer></script>
|
||||
<script src="app.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Vue Styling</h1>
|
||||
</header>
|
||||
<section id="assignment">
|
||||
<!-- 1) Fetch the user input and use it as a CSS class -->
|
||||
<!-- The entered class should be added to the below paragraph -->
|
||||
<input type="text" v-model="class1" />
|
||||
<!-- (available classes: "user1", "user2") -->
|
||||
<p :class="[class1, visible ? 'visible' : 'hidden']">Style me!</p>
|
||||
<button @click="visible = !visible">Toggle Paragraph</button>
|
||||
<!-- 2) Use the "visible" and "hidden" classes to show/ hide the above paragraph -->
|
||||
<!-- Clicking the button should toggle between the two options -->
|
||||
|
||||
<!-- 3) Add dynamic inline styling to the below paragraph and let the user enter a background-color -->
|
||||
<input type="text" v-model="color" />
|
||||
<p :style="`background-color: ${color}`">Style me inline!</p>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,91 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: 'Jost', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
background-color: #1b995e;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment h2 {
|
||||
font-size: 2rem;
|
||||
border-bottom: 4px solid #ccc;
|
||||
color: #1b995e;
|
||||
margin: 0 0 1rem 0;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
background-color: #8ddba4;
|
||||
padding: 0.5rem;
|
||||
color: #1f1f1f;
|
||||
border-radius: 25px;
|
||||
}
|
||||
|
||||
#assignment input {
|
||||
font: inherit;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#assignment input:focus {
|
||||
outline: none;
|
||||
border-color: #1b995e;
|
||||
background-color: #d7fdeb;
|
||||
}
|
||||
|
||||
#assignment button {
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
border: 1px solid #ff0077;
|
||||
background-color: #ff0077;
|
||||
color: white;
|
||||
padding: 0.05rem 1rem;
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
#assignment button:hover,
|
||||
#assignment button:active {
|
||||
background-color: #ec3169;
|
||||
border-color: #ec3169;
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
.user1 {
|
||||
background-color: blue;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.user2 {
|
||||
background-color: purple;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.visible {
|
||||
display: block;
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
const app = Vue.createApp({
|
||||
data: () => ({
|
||||
tasks: [],
|
||||
newTask: "",
|
||||
showList: true,
|
||||
}),
|
||||
methods: {
|
||||
addTask() {
|
||||
this.tasks.unshift(this.newTask);
|
||||
this.newTask = "";
|
||||
},
|
||||
toggleList() {
|
||||
this.showList ^= true;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
app.mount("#assignment");
|
|
@ -0,0 +1,35 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vue Basics</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Jost:wght@400;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<script src="https://unpkg.com/vue@next" defer></script>
|
||||
<script src="app.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Vue Lists and Conditional Content</h1>
|
||||
</header>
|
||||
<section id="assignment">
|
||||
<h2>Assignment</h2>
|
||||
<!-- 1) Add code to manage a list of tasks in a Vue app -->
|
||||
<!-- When clicking "Add Task" a new task with the entered text should be added -->
|
||||
<input type="text" v-model="newTask" />
|
||||
<button @click="addTask">Add Task</button>
|
||||
<ul v-if="showList">
|
||||
<!-- 2) Output the list of tasks here -->
|
||||
<li v-for="task in tasks">{{task}}</li>
|
||||
</ul>
|
||||
<!-- 3) When the below button is pressed, the list should be shown or hidden -->
|
||||
<!-- BONUS: Also update the button caption -->
|
||||
<button v-if="showList" @click="showList=false">Hide List</button>
|
||||
<button v-else @click="showList=true">Show List</button>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,80 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: 'Jost', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
background-color: #1b995e;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#assignment h2 {
|
||||
font-size: 2rem;
|
||||
border-bottom: 4px solid #ccc;
|
||||
color: #1b995e;
|
||||
margin: 0 0 1rem 0;
|
||||
}
|
||||
|
||||
#assignment ul {
|
||||
list-style: none;
|
||||
margin: 1rem 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#assignment li {
|
||||
margin: 1rem 0;
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
background-color: #8ddba4;
|
||||
padding: 0.5rem;
|
||||
color: #1f1f1f;
|
||||
border-radius: 25px;
|
||||
}
|
||||
|
||||
#assignment input {
|
||||
font: inherit;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#assignment input:focus {
|
||||
outline: none;
|
||||
border-color: #1b995e;
|
||||
background-color: #d7fdeb;
|
||||
}
|
||||
|
||||
#assignment button {
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
border: 1px solid #ff0077;
|
||||
background-color: #ff0077;
|
||||
color: white;
|
||||
padding: 0.05rem 1rem;
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
#assignment button:hover,
|
||||
#assignment button:active {
|
||||
background-color: #ec3169;
|
||||
border-color: #ec3169;
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26);
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
Vue.createApp({
|
||||
data() {
|
||||
return {
|
||||
goals: [],
|
||||
enteredValue: ``
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
addGoal() {
|
||||
this.goals.push(this.enteredValue);
|
||||
this.enteredValue = ``;
|
||||
}
|
||||
}
|
||||
}).mount(`#app`);
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>A First App</title>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<div>
|
||||
<label for="goal">Goal</label>
|
||||
<input type="text" id="goal" v-model="enteredValue"/>
|
||||
<button v-on:click="addGoal">Add Goal</button>
|
||||
</div>
|
||||
<ul>
|
||||
<li v-for="goal in goals">{{ goal }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<script src="https://unpkg.com/vue@3"></script>
|
||||
<script src="app.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,40 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#app {
|
||||
margin: 3rem auto;
|
||||
max-width: 40rem;
|
||||
padding: 1rem;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
label, input {
|
||||
margin-bottom: 0.5rem;
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 1rem 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 1rem 0;
|
||||
padding: 1rem;
|
||||
border: 1px solid #ccc;
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
const app = Vue.createApp({
|
||||
data: () => ({
|
||||
friends: [
|
||||
{
|
||||
name: "Manuel Lorenz",
|
||||
phone: "01234 5678 991",
|
||||
email: "manuel@localhost.com",
|
||||
},
|
||||
{
|
||||
name: "Julie Jones",
|
||||
phone: "09876 543 221",
|
||||
email: "julie@localhost.com",
|
||||
},
|
||||
],
|
||||
}),
|
||||
methods: {},
|
||||
computed: {},
|
||||
watch: {},
|
||||
});
|
||||
|
||||
app.mount("#app");
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Vue Basics</title>
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Jost:wght@400;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
<script src="https://unpkg.com/vue@next" defer></script>
|
||||
<script src="app.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>FriendList</h1>
|
||||
</header>
|
||||
<section id="app">
|
||||
<ul>
|
||||
<li v-for="friend in friends" :key="friend.name">
|
||||
<h2>{{friend.name}}</h2>
|
||||
<button @click="friend.showDetails = !friend.showDetails">
|
||||
Show Details
|
||||
</button>
|
||||
<ul v-if="friend.showDetails">
|
||||
<li><strong>Phone:</strong> {{friend.phone}}</li>
|
||||
<li><strong>Email:</strong> {{friend.email}}</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,63 @@
|
|||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: 'Jost', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 3rem auto;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
background-color: #58004d;
|
||||
color: white;
|
||||
text-align: center;
|
||||
width: 90%;
|
||||
max-width: 40rem;
|
||||
}
|
||||
|
||||
#app ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
#app li {
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
|
||||
margin: 1rem auto;
|
||||
border-radius: 10px;
|
||||
padding: 1rem;
|
||||
text-align: center;
|
||||
width: 90%;
|
||||
max-width: 40rem;
|
||||
}
|
||||
|
||||
#app h2 {
|
||||
font-size: 2rem;
|
||||
border-bottom: 4px solid #ccc;
|
||||
color: #58004d;
|
||||
margin: 0 0 1rem 0;
|
||||
}
|
||||
|
||||
#app button {
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
border: 1px solid #ff0077;
|
||||
background-color: #ff0077;
|
||||
color: white;
|
||||
padding: 0.05rem 1rem;
|
||||
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.26);
|
||||
}
|
||||
|
||||
#app button:hover,
|
||||
#app button:active {
|
||||
background-color: #ec3169;
|
||||
border-color: #ec3169;
|
||||
box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.26);
|
||||
}
|
Loading…
Reference in New Issue