Update style
This commit is contained in:
parent
1d5cc99877
commit
cfed14b1c4
17
package-lock.json
generated
17
package-lock.json
generated
@ -16,7 +16,8 @@
|
|||||||
"jquery": "^3.6.0",
|
"jquery": "^3.6.0",
|
||||||
"popper.js": "^1.16.1",
|
"popper.js": "^1.16.1",
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
"vue-router": "^3.5.2"
|
"vue-router": "^3.5.2",
|
||||||
|
"vuex": "^3.6.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "~4.5.0",
|
"@vue/cli-plugin-babel": "~4.5.0",
|
||||||
@ -16651,6 +16652,14 @@
|
|||||||
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
|
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/vuex": {
|
||||||
|
"version": "3.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
|
||||||
|
"integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==",
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/watchpack": {
|
"node_modules/watchpack": {
|
||||||
"version": "1.7.5",
|
"version": "1.7.5",
|
||||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
|
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
|
||||||
@ -31165,6 +31174,12 @@
|
|||||||
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
|
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"vuex": {
|
||||||
|
"version": "3.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
|
||||||
|
"integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==",
|
||||||
|
"requires": {}
|
||||||
|
},
|
||||||
"watchpack": {
|
"watchpack": {
|
||||||
"version": "1.7.5",
|
"version": "1.7.5",
|
||||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
|
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
"jquery": "^3.6.0",
|
"jquery": "^3.6.0",
|
||||||
"popper.js": "^1.16.1",
|
"popper.js": "^1.16.1",
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
"vue-router": "^3.5.2"
|
"vue-router": "^3.5.2",
|
||||||
|
"vuex": "^3.6.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "~4.5.0",
|
"@vue/cli-plugin-babel": "~4.5.0",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<SiteHeader />
|
<SiteHeader />
|
||||||
<router-view/>
|
<router-view />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container" :class="{'container-menu-active': clicked}">
|
<div class="container" :class="{'container-menu-active': clickedStatus}">
|
||||||
<router-link to="/">
|
<router-link to="/">
|
||||||
<div class="logo" @click="linkClicked">Kamil<span class="logo-element">Craft</span></div>
|
<div class="logo" @click="linkClicked">Kamil<span class="logo-element">Craft</span></div>
|
||||||
</router-link>
|
</router-link>
|
||||||
@ -18,8 +18,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.sub-page > .container .nav-btn,
|
||||||
|
.sub-page > .container .nav .site-menu .menu-element a:not([class|=router-link-exact]) {
|
||||||
|
color: #8D8D8D;
|
||||||
|
}
|
||||||
.container {
|
.container {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
height: 80px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -37,12 +42,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&-menu-active {
|
&-menu-active {
|
||||||
/* background-color: #EFEFEF; */
|
|
||||||
color: #8D8D8D;
|
color: #8D8D8D;
|
||||||
animation: container-active-menu 500ms forwards ease-in-out;
|
animation: container-active-menu 500ms forwards ease-in-out;
|
||||||
|
|
||||||
div.logo {
|
div.logo {
|
||||||
/* background-color: #F6F6F6; */
|
|
||||||
animation: logo-active-menu 500ms forwards ease-in-out;
|
animation: logo-active-menu 500ms forwards ease-in-out;
|
||||||
}
|
}
|
||||||
.nav {
|
.nav {
|
||||||
@ -57,6 +60,7 @@
|
|||||||
}
|
}
|
||||||
.nav {
|
.nav {
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
|
z-index: 10;
|
||||||
.nav-btn {
|
.nav-btn {
|
||||||
display: none;
|
display: none;
|
||||||
margin: 10px 25px;
|
margin: 10px 25px;
|
||||||
@ -165,6 +169,11 @@ export default {
|
|||||||
publicPath: process.env.BASE_URL
|
publicPath: process.env.BASE_URL
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
clickedStatus () {
|
||||||
|
return this.clicked
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeClickedStatus () {
|
changeClickedStatus () {
|
||||||
this.clicked = !this.clicked
|
this.clicked = !this.clicked
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<header class="page-header">
|
<header :class="thisClass">
|
||||||
<navigation/>
|
<navigation/>
|
||||||
|
<div v-if="isTitle" class="header-info" :class="{ 'header-info-home': isHome }">
|
||||||
|
<h1>{{ getTitle }}</h1>
|
||||||
|
<p v-if="isDescription && descriptionType === 'string'">{{ getDescription }}</p>
|
||||||
|
<p v-else-if="isDescription && descriptionType === 'array'"
|
||||||
|
v-for="(desc, key) in getDescription" :key="key">{{ desc }}</p>
|
||||||
|
</div>
|
||||||
</header>
|
</header>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -9,6 +15,30 @@ import Navigation from '@/components/Navigation'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SiteHeader',
|
name: 'SiteHeader',
|
||||||
|
computed: {
|
||||||
|
isHome () {
|
||||||
|
return this.$route.path === '/'
|
||||||
|
},
|
||||||
|
thisClass () {
|
||||||
|
return [this.isHome ? 'home-page' : 'sub-page']
|
||||||
|
},
|
||||||
|
getTitle () {
|
||||||
|
return this.$store.getters.getHeader.title
|
||||||
|
},
|
||||||
|
isTitle () {
|
||||||
|
return this.getTitle !== null
|
||||||
|
},
|
||||||
|
getDescription () {
|
||||||
|
return this.$store.getters.getHeader.description
|
||||||
|
},
|
||||||
|
descriptionType () {
|
||||||
|
const isArray = this.getDescription instanceof Array
|
||||||
|
return isArray ? 'array' : typeof this.getDescription
|
||||||
|
},
|
||||||
|
isDescription () {
|
||||||
|
return this.getDescription !== null
|
||||||
|
}
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
navigation: Navigation
|
navigation: Navigation
|
||||||
}
|
}
|
||||||
@ -16,7 +46,40 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.page-header {
|
.home-page {
|
||||||
background: linear-gradient(237.74deg, #1199A5 0%, #436DA7 83%);
|
background: linear-gradient(237.74deg, #1199A5 0%, #436DA7 83%);
|
||||||
}
|
}
|
||||||
|
.sub-page {
|
||||||
|
background-color: #EFEFEF;
|
||||||
|
}
|
||||||
|
.header-info {
|
||||||
|
text-align: center;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 40px 10px;
|
||||||
|
h1 {
|
||||||
|
position: relative;
|
||||||
|
font-weight: lighter;
|
||||||
|
font-size: 2.5em;
|
||||||
|
line-height: 1.5em;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
width: 100px;
|
||||||
|
height: 2px;
|
||||||
|
background-color: #A2CF00;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-home {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.welcome {
|
||||||
|
min-height: 40vh;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
import router from './router'
|
import router from './router'
|
||||||
|
import store from './store'
|
||||||
|
|
||||||
import '../scss/default.scss'
|
import '../scss/default.scss'
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import { fas } from '@fortawesome/free-solid-svg-icons'
|
import { fas } from '@fortawesome/free-solid-svg-icons'
|
||||||
@ -12,6 +14,7 @@ Vue.component('font-awesome-icon', FontAwesomeIcon)
|
|||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
|
store,
|
||||||
router,
|
router,
|
||||||
render: h => h(App)
|
render: h => h(App)
|
||||||
}).$mount('#app')
|
}).$mount('#app')
|
||||||
|
41
src/store/index.js
Normal file
41
src/store/index.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import Vuex from 'vuex'
|
||||||
|
|
||||||
|
Vue.use(Vuex)
|
||||||
|
|
||||||
|
const moduleSettings = {
|
||||||
|
state: {
|
||||||
|
header: {
|
||||||
|
title: null,
|
||||||
|
description: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getters: {
|
||||||
|
getHeader (state) {
|
||||||
|
return state.header
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
setHeader: (state, payload) => {
|
||||||
|
state.header = {
|
||||||
|
title: payload.title ?? null,
|
||||||
|
description: payload.description ?? null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
resetHeaderTitle (state) {
|
||||||
|
state.header.title = null
|
||||||
|
},
|
||||||
|
setHeaderDescription: (state, payload) => {
|
||||||
|
state.header.description = payload.title
|
||||||
|
},
|
||||||
|
resetHeaderDescription (state) {
|
||||||
|
state.header.description = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new Vuex.Store({
|
||||||
|
modules: {
|
||||||
|
settings: moduleSettings
|
||||||
|
}
|
||||||
|
})
|
@ -1,11 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<section id="about">
|
<section id="about">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>{{ $route.meta.title }}</h2>
|
<h2>Studia</h2>
|
||||||
<p>Nazywam się Kamil Niemczycki, jestem studentem kierunku Informatyka o specjalności Programowanie Aplikacji Mobilnych i Internetowych.</p>
|
<p>Nazywam się Kamil Niemczycki, jestem absolwentem Państwowej Wyższej Szkoły Zawodowej im. Witelona w Legnicy.</p>
|
||||||
<p>Swoją przygodę w internecie rozpocząłem od nagrywania poradników, które umieszczałem na moim starym kanale youtube Moje Poradniki (wcześniej Niemczycki12). Z czasem zacząłem odczuwać potrzebę wypowiedzenia się, co spowodowało, że utworzyłem drugi kanał NiKCamii (wcześniej KamilNiemczycki), który był miejscem gdzie dodawałem Vlogi.</p>
|
<p>Studiowałem na kierunku <i>Informatyka</i> o specjalności <i>Programowanie Aplikacji Mobilnych i Internetowych.</i></p>
|
||||||
<p>Aktualnie zajmuję się projektowaniem i programowaniem aplikacji web w postaci stron www, wykorzystując od strony backend'u język skryptowy PHP. Znam także język znaczników - HTML 5, jego kompana - CSS, jak i podstawy JavaScript(), które są wykorzystwyane w frontend'dzie.</p>
|
|
||||||
<p>Backend, frontend ❤</p>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
@ -19,6 +17,17 @@ section#about {
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: 'About'
|
name: 'About',
|
||||||
|
mounted () {
|
||||||
|
const header = {
|
||||||
|
title: this.$route.meta.title,
|
||||||
|
description: 'I\'m a software engineer specialised in frontend and backend development for complex scalable web apps. I write about software development on my blog.'
|
||||||
|
}
|
||||||
|
this.$store.commit('setHeader', header)
|
||||||
|
},
|
||||||
|
destroyed () {
|
||||||
|
this.$store.commit('resetHeaderTitle')
|
||||||
|
this.$store.commit('resetHeaderDescription')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -5,12 +5,30 @@
|
|||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import About from '../components/sections/About'
|
import About from '../components/sections/About'
|
||||||
import Experiences from '../components/sections/Experiences'
|
import Experiences from '../components/sections/Experiences'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Home',
|
name: 'Home',
|
||||||
|
mounted () {
|
||||||
|
const header = {
|
||||||
|
title: this.$route.meta.title,
|
||||||
|
description: [
|
||||||
|
'Chciałbym Państwa powitać na mojej stronie!',
|
||||||
|
'Przedstawiam tutaj część swojego życia związaną z programowaniem i projektowaniem aplikacji internetowych.'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
this.$store.commit('setHeader', header)
|
||||||
|
},
|
||||||
|
destroyed () {
|
||||||
|
this.$store.commit('resetHeaderTitle')
|
||||||
|
this.$store.commit('resetHeaderDescription')
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
About,
|
About,
|
||||||
Experiences
|
Experiences
|
||||||
|
Loading…
x
Reference in New Issue
Block a user