A new Portfolio with Vue.js

To mark the beginning of my second year at University I thought that I would try learning a new skill, namely Vue.js. I usually struggle to learn something if I don’t see any real practical application for it, but this time I figured I could turn my photography portfolio into a dynamic Vue.js enhanced page.

I started with creating a component for the portfolio elements on the homepage. I created a data set that contained all the information for the component. Vue then iterated over each one and created them. I then did the same for the images, once you’d clicked through to a specific component.

Next, I had to implement Vue Router, in order to get dynamic URLs. This was very tricky and took me a while to figure out that I needed to place the Portfolio page within a subfolder to apply .htaccess rules to it. Everything works now and it’s even a better way of showing all the images at once compared to the old method of just having the images pop up in a Lightbox. This would have never been possible without Vue as it would have taken too much time to hard code each image (there are 100s).

The next steps are to do a bit more styling and arrange the photos so that portraits and landscapes aren’t all next to each other breaking the flow of the page. I’m also going to take this as an opportunity to go through my portfolio and slim them down to around 25 of my best photos. The code is quite messy too so I might put each component in its own Vue file. In the far future, I’m thinking about possibly using Vue Native to turn the portfolio into an app.

Overall, it’s been a great experience learning Vue and it’s one step closer to a full-time developer role after I graduate.

Cookie Consent

Over the past couple of months, I’ve added some Analytics software to my site such as Google Analytics and Facebook Pixel. As my website serves customers in the EU, the Cookie Law applies. I have used JavaScript to ensure that cookies are not fired until the user has explicitly accepted them on the website. A button and banner are shown at the bottom of the screen for new users.

Disabled Peoples Voice

I got in touch with this client through Solent Creatives. They needed a website and shop to showcase their charitable work. They sell cards to raise money for charity and the site has a lot of info about them, and their events.

They had already hired a graphic designer and he gave me a PSD of each page. I then developed a custom theme for the site making sure it was pixel perfect.

I then conducted thorough cross-browser testing before showing the website to the client who was very happy with it.

Re-doing my portfolio

I built my web design portfolio site over the Christmas of 2018 and decided it needed a bit of a refresh during the summer.

I got in touch with the @_tashhockey, the person behind Honest Feedback, to give my website a bit of a review. She made some really good points and brought to light the fact that I was trying to make my website too much. It was my personal space to show off my work, it was for clients, and for future employers.

It took me a few months, but I decided I was going to focus on making my website a portfolio to show future employers. Something else is in the works to show clients.

I took out a lot of the content which had the added benefit of making the page load a lot quicker, and took a lot less time to scroll through. It now features my best websites and that’s it.

On mobile I made the portfolios scroll horizontally which means that the user doesn’t have to scroll past loads and loads of content.

I’m really happy with the design of the website so I only made some minor tweaks to colours to make things more legible. Redoing my portfolio provided me with a chance to brush up on my JavaScript and jQuery skills too.

No scroll whilst lightbox is open

I read the following article by CSS Tricks https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/ and decided that my website shouldn’t scroll whilst the lightbox is shown, i.e. on the Blog and the Memories pages when an image is clicked.

I use the Featherlight plugin on my Blog and the equivalent for the Memories page.

I added the following CSS to my Blog, which now means that the page will not scroll whilst the lightbox is open, but sticky elements like the navbar and the sidebar will stay in place. Similar code was added across the rest of the site.

html {
		position: relative!important;
		overflow-x: hidden;
	}
	html.with-featherlight {
		overflow-y: hidden;
		width: 100%;
	}
	html.with-featherlight body {
		overflow-y: scroll;
	}
	html.with-featherlight nav.featherlight-fix {
		position: fixed;
		margin-top: 0;
		left: 0;
	}
	html.with-featherlight #sidebar.featherlight-fix ul:first-child {
		position: fixed;
	}
	html.with-featherlight .cc-window.cc-banner.cc-type-info.cc-theme-edgeless.cc-bottom.cc-color-override--591744288 {
		width: calc(100% - 17px);
	}
	@media (max-width: 830px) {
		html.with-featherlight nav {
			margin-top: 0px;
		}
		.featherlight-previous, .featherlight-next {
			display: none!important;
		}
		html.with-featherlight #sidebar ul:first-child {
			position: -webkit-sticky;
			position: sticky;
		}
		html.with-featherlight .wrap {
			margin-top: 50px;
		}
	}
	@media (max-width: 830px) {
		html.with-featherlight nav {
			margin-top: 0px;
		}
	}
	@media (max-width: 1100px) and (min-width: 830px) {
		html.with-featherlight header.featherlight-fix {
			margin-bottom: 68px;
		}
		html.with-featherlight nav {
			margin-top: 0;
			margin-bottom: -7px;
		}
	}

Whilst experimenting with this I found that the built-in WordPress galleries did not work on Safari 10.1. I then filed a bug report which you can follow here: https://core.trac.wordpress.org/ticket/47744

Island RIBs

I was put in touch with Island RIBs through Solent Creatives. They needed a website redesign as they were refreshing the content on the site. They had already written out what parts of the website they wanted changing, and I worked with them to accomplish this and implement the new content.

This was a good experience for me. As it was hourly work, I had to keep tabs of how long I had spent on one task. It was also good to stick to the brief without deviating from it, as many of the websites I work on have a wide scope to the project.

I used the WP Staging Pro plugin to work on the website with the client so that they could preview all the changes I was making and we could push the site live in one go.

The website uses Generate Press as a theme, but whilst updating the content on the site I migrated their pages over to using the standard Gutenberg Block Editor.

Dark Mode

I read the following article: https://www.howtogeek.com/434592/what%E2%80%99s-new-in-chrome-76-arriving-july-30th/ and was excited by “Automatic Dark Mode is Coming to Websites”. I decided to give it a shot. I read up on the Media Queries Level 5 spec and added the “prefers-color-scheme” media query to my CSS.

I downloaded a copy of Chrome Canary to test the website, as this feature isn’t quite out in the current release of Chrome yet, however, the media query is supported in Firefox, so if you have Firefox installed and dark mode turned on, go check my website out.

Here’s a sample of the code I used:

@media screen and (prefers-color-scheme: dark) {
	body {
		background-color: #202124;
		color: white;
	}
}

By using Chrome Canary I also found out that I could install my website to windows, and not just my phone, which I found really cool. It comes up in start, the taskbar, the desktop, and has its own icon. I was astonished. The internet is really moving in a cool direction and I’m glad to be pioneering these new technologies with my photography website.