Category Archives: Web Design Tips

Curtain Mobile Nav

Today’s Tidy Tutorial is going to look at a take on a mobile nav, showcasing a curtain style open and close animation with fading nav links.

We’ve got a couple of elements here that are pretty standard and won’t be covered but you can check the Pen to see these (mainly the nav toggles). Before we jump into the nitty-gritty let’s look at the setup…

A FREE Mobile Nav Tutorial

We’re going to need a HTML structure of the nav, it’s going to look a little like this:

There’s nothing out of the ordinary here, looking at the above code block it’s a pretty standard structure. The only item which could be considered an oddity is the toggle bars being the first nav item – this is purely for some automatically calculated spacing for the closing toggle. Now we just need some initial styling:

This first CSS block will place the nav above the page’s content when we’re ready to show it. Also you’ll see the comment above the ‘height’ declaration, we’re placing this here so we can style the nav. We will need to take this away to hide the nav, but first, before we completely hide the nav we need to write a quick fix to space out the close toggle bar properly and move onto some styling:

Nothing complex here, it just places the cross to the left and moves it into the centre of the li. The reason it originally seems out of line is due to the transforms moving the spans into the cross shape. To see how we’ve created to toggles please see the Codepen Pen of this tutorial.

Everything is quite squished right now, so we need to make the ul the same height as the nav and also space out the links:

Here we’re using the beauty of flex to automatically evenly space out the links, flex direction states we want the links in a column. If you’re unsure on any of the styles around flex then check this post from CSS Tricks, everything you’ll need to know will be covered: css-tricks.com/snippets/css/a-guide-to-flexbox/

Time to add in the curtain effects styles, we’re going to use pseudo elements. We’ll start by creating both and move the positioning of each after:

You’re going to see a rectangle now that takes up half of the page…

::before is our left “curtain”, ::after will be the right. We need to move the ::after pseudo element to the right side. We will do this with the following style:

Now your whole screen should be covered by the “curtains”. These need to be hidden off screen though so they can be animated in later:

Simple transforms are how we do this, adding a minus to the ::before’s style to move this to the left.

Now the majority of styles have been completed but before we move on we need to hide the nav when we don’t need it. A simple few lines will do this:

On our page we should just see the hamburger and whatever other content we’ve placed on the page, for us just a header:

Next we’re going to need to add the only JS side to this tutorial, a simple class added to the nav element will be what triggers the opening and closing of the nav. We just need one event listener which is going to toggle the class, it doesn’t get much simpler than this:

That’s the JS done, everything else is going to run through CSS. All the styles which deal with the open nav are going to be prefaced with ‘.nav-open’. Starting with these following few styles we make it so the mobile nav is able to be opened, the page once you click on the nav toggle will be covered by the “curtain” elements.

Two problems here though – first, we’re stuck here; we’ve not shown the links so you can’t go back. Second, the curtain elements jumped in rather than animated in. Let’s fix the latter first:

You can tweak this style however you like, the timings can make a big difference but the biggest impact can be made through the timing function, we’re using ease-out but play around with other standard timings and even try creating your own cubic bezier (here’s a great site for helping you create your own cubic-bezier.com).

This is where things get a little finicky, if you were to close the nav now you’ll see the whole thing instantly disappears. This is down to the measures taken to completely hide the nav when it’s not in use. To fix this we have to get creative with transitions:

Toggle between the open and closed state now and you’ll see the curtain elements open and close properly. Once the curtains move in we can tackle the links, currently they show and hide instantly, we want these to appear after the curtains have shown.

We’ll start by getting the nav links to show once the curtains have closed, to do this is pretty similar to the above, on the ‘.nav-item’ class we set the transition duration and delay. The delay needs to be set for longer than the curtains’ transition duration:

The reason we’re breaking out the transition declarations into their long form is so we can override them individually. Also as mentioned above, setting the delay on the nav-open class means we can provide different times for both the opening and closing sections of this transitions. We want the nav items to fade out first on the closing – to do this we’ll set the transition delay to 0 on the just the ‘.nav-item’ class:

We’re nearly there! We just need a few final tweaks. The first one to tackle is getting the curtains to transition out after the links have faded out. We need to add the delay onto the nav before and afters, also adding a delay to the nav-open before and after of 0s to keep the curtains opening first on the initial menu opening:

The very last bits run of the same ideas as the previous couple of CSS code blocks, we need to update the time on the nav elements’ transition duration to the total time of the closing transition. This is the nav pseudo elements’ transition duration (.5s) + nav links’ transition duration (.5s) + transition delay difference (.15) which equals 1.15s.

Finally let’s do the double transition timing trick to get the padding of the main nav to visible as soon as the nav opens and be removed once the links fade out – this stops a glitchy looking jump. The reason it’s added after is to help make the nav hide completely, if we were to use display none on the container then the children (nav items) would lose their ability to transition their opacity. The last code block is:

There we have it, a completed mobile curtain like navigation. There’re a few quirks of CSS to overcome along the way but the final product is worthy of that extra effort. Have a play around with the styles in the Pen and see what you can come up with!

codepen.io/TidyDesign/pen/gdvqPp/

Thank you for reading, we hope you enjoyed this FREE mobile nav tutorial, until next time!

Luke

Creating a Responsive SVG Overlay

Today I’m going to show you a way to change up the standard straight lines below your header images, we’re going to use a wave in this tutorial but any shapes you like will be suitable.

This process is done by creating an SVG and placing this into the HTML file below your header> (or whatever container you’d like). I’ll be using Figma to create my SVG overlay, but you can use any SVG editor to achieve these results, just note that some steps may be slightly different. There’s a couple other SVG editors you can choose from if you haven’t got Figma (a free piece of software), one being Adobe Illustrator and another the free editor InkScape. Now we’re sorted on what we’ll need to continue, let’s jump in!

I’ve placed in a background image on the pages to replicate a header area, this is purely to keep a nice visual representation of how it’ll look once live. The first step will be to place a rectangle on top the header image, let’s put this at the bottom of the image. I made the rectangle 6px high choosing a bright red to help it stand out. I also added some guidelines to visually separate the page into 3 sections.

From here you’ll need to double click the red rectangle, you should now see diagonal lines over the shape when hovered over. With that done move up to the toolbar at the top and select the pen tool.

Zoom into the first of the guidelines and click on the intersect between the guideline and the top of the rectangle, make sure to hit the escape key to create just one single point. Scroll along and do the same on the second guideline.

Before you zoom out head all the way to the right, use the move/select tool and drag the top right point of the rectangle up 10px – 15px.

Now zoom back out and you should see something similar to this…

Still using the move/select tool grab the point on the first guideline and drag it up in straight line. How high you drag this up determines how big your wave will be.

This next step is where we’ll see the curve of the wave taking shape. Double click on the red shape and move up to the toolbar in the top left to select the bend tool. The next step is to click on the two points over the guidelines…

Simple, right? Now you’ve got a crisp wave like topped rectangle, we just need to export it to be used on the web. With the wave selected look to the sidebar on the right of the page, the last option you should see under the Design tab is Export, select SVG from the drop down, hit export and now it’s saved ready for use.

Here’s the SVG code I’m left with, you should see something similar:

We just need to make a couple of changes to this, one so we can easily refer to it and the other to help make it responsive. These changes are only on the first line, we need to add an ID and also remove both the width and height attributes (the fill attribute is unnecessary and can go too):

Right! We’re ready to get to the code now… We’re going to need a header tag with a background image, and a container for our SVG code:

The container is needed to keep the SVG to the right aspect ratio, without it you’ll be able to get the SVG to be as wide as the container but it’ll also take up the height of the container. So paste in the SVG code into the container and we’re a handful of CSS lines away from completing this. First, we need to make the header tag position relative, and add the following styles to the SVG container:

#svg-container {
	position: absolute;
	bottom: 0;
	width: 100%;
	height: 0;
}

You’re probably thinking “I’m not seeing the SVG!”, the last piece to finish this off is taking advantage of the old padding bottom trick. We need to calculate the aspect ratio, a simple formula by multiplying the percentage width by the viewBox height, divided by the viewBox width. Let’s break that down, our percentage width, as we want it to be full screen, is 100%, our viewBox is ‘viewBox=”0 0 1440 45″‘ therefore the CSS value will be: padding-bottom: calc(100% * 45 / 1400);

Change the values to what yours needs to be a boom! Now you’ll see the wave sat perfectly at the bottom of the header. If you want to see a live example, please see this Codepen Pen;

https://codepen.io/TidyDesign/pen/xaPVoR

Luke

Creating a Cut Out Text Effect

Before we start, there’s a couple of small caveats to this incredibly visually pleasing (and simple) CSS trick, but don’t let that put you off!

First of all, there’s only two colours that this trick correctly works with – white on black, and black on white. The second of these caveats is browser support, it’s not available on all browsers, but it’s natural fallback is actually a perfectly suitable mid-ground. The blend mode stops working and you’re left with either black text on a white background, or white text on a black background, still completely legible and not out of the ordinary to see on the web. Check here to see where it will and won’t work – https://caniuse.com/#feat=css-mixblendmode.

Now, on to the trick itself…

This trick relies on mix-blend-mode. Simply put, the mix-blend-mode style describes how an element’s content should blend with the content of the element’s direct parent and the element’s background. There’s many different mix-blend-mode options, but the two we are using today will be ‘multiply’ and ‘screen’.

As I’m sure you’ll already know the majority of the CSS used to create this set up I won’t bloat out the examples with unnecessary code, but there’s a CodePen you can view which holds all of the CSS used https://codepen.io/TidyDesign.

We will start with black text on a white background. So create a h1 element and let’s give this a background colour of white, and a colour of black.

h1.cutout {
	background: white;
	color: black;
}


With this set up we can add the magic…

h1.cutout {
	background: white;
	color: black;
	mix-blend-mode: screen;
}

How simple is that, 3 lines of code and we’ve got a great cut out text effect!

Now, if you want to switch the colours to be white on black all we have to do is change these three styles. Swap over the colour and background values and change ‘mix-blend-mode: screen;’ to ‘mix-blend-mode: multiply;’.

That’s all, who doesn’t like effects this striking which are so easy to create! CSS is full of little secrets like this, try playing around with the colours and blend modes in the Pen to see what other things you can create…

https://codepen.io/TidyDesign/pen/aamweL/

Thank you for reading

Luke

UX Design Hampshire

UX stands for User Experience, some refer to this as UXD also known as User Experience Design. This process is all about enhancing user satisfaction, be it lowering the bounce rate of a web page or increasing the chance of an online sale through subtle call to actions / offers.

The process of UX design includes reviewing elements of interaction, we’d ask questions such as (1) who is your target audience (2) who is the competition and (3) what is your primary goal for the website / application we develop for you?

Before starting any UX design work we’d need to review and understand above. Some experimentation (visual design work) would follow, these would be concepts only, an idea of how things could look and move forwards. Your feedback on these designs would be taken into consideration, working together (and performing further research) these designs would evolve.

A review of information architecture (the structural design), users / user research, current trends (be it technology or browsing habits) is also advised. A good question to ask is “who is currently doing it well and why?”

In terms of UX this forms part of everything we do as a business, from sales to site development. Reflecting back; some clients had their own UX visions, views, ideas or a direction for us to follow, others simply leave us to it… Sadly “visual candy” is subjective, what works for one individual may not work for another. So with this in mind, a sufficient time allocation (UX development budget) is recommended plus we have to factor in trends. Concept work, competitor analysis and a collaborative approach will work best.

So what should you be looking for in a UX designer? Should you be employing a graphic design agency or a web design agency? Is UX design the same as web design? How much can you learn from the competition? What is a UX deliverable? Who is responsible for usability testing? These are just a few questions that spring to mind what I think “UX designer”.

Personally I would look for the following;

Natural ability

As humans we can learn to do a lot of different things, a simple formula of “time + dedication + hard work”, however natural ability (our genetics) are with us from day one. Before entering this crazy pace world of web dev I studied art at school / college, this evolved into a University degree called “BA Communication Design”. My point is this; an eye for detail and creative flair has been with me since I was little, long before web design. Some folk are natural runners, others great swimmers, my talent has always been art. UX design requires a combination of both technical and creative thinking, I’d suggest you look for someone (or a company) that caters for both. A lot of UX design boils down to common sense and an eye for detail – this is important to remember.


Check out some of my artwork here

Understanding usability

Usability and UX design go hand in hand, an ability to use a system, application or an object correctly without weeks of training is very important (time is money). Personally I think Apple do this so well, you receive a new iPhone, there is no 300 page user manual, simply a card with two or three instructions – boom, job done!

Good usability (and also first impressions) is essential to a positive user experience, but this alone does not guarantee a successful product… Usability testing forms part of this process, we have been involved with many focus groups (MyBirthplace.org and a room full of midwives spring to mind), understanding and working with user feedback is important. When I think of usability and usability testing I think of an object (be it a web page or application) designed with an end-user in mind, however end-users will vary. A good UX designer will want to make an object effective, easy to use (or learn), satisfying and faultless – catering for all (or should I say most) end-users.

As a UX designer, our main goal will be to solve problems, making “the process” as pleasant as possible. UX designers will need to be a jack of all trades or have people around them that bring certain skills to the table. For example; A pretty user interface may look nice (visually pleasing) however if its code base is buggy then application performance (speed and stability) may result in a bad UX. So, it is more than just looking pretty.

Personally I’d suggest you avoid listing out unnecessary product features and think more like Apple, less is more! Simplify your designs and documentation, incorporate your business and its mission statements to build trust. Getting a grasp on the user’s needs and goals is a must, from here we can begin to map out unique selling points or interaction frameworks / wireframes.

Anyway, I hope you enjoyed this post on UX design. If you have any questions for Tidy Design then please do not hesitate to contact us, we’d be happy to help.

Mike

Why HTTPS?

As a start in a 2017 effort to update and revamp TidyDesign.com, we have upgraded to HTTPS, the security-concerned friend of HTTP.

HTTP stands for HyperText Transfer Protocol, and it denotes the set of rules computers use while communicating in HyperText (web pages) over the web. That HTTP’s rules underpin the web can be seen in the typical URL – “http://website.com”. The prefix to that address denotes the protocol in use.

You may have noticed that more and more sites over the past decade are labelled with a different prefix – “https://website.com”. This denotes that the site is accessed over HTTPS; or HyperText Transfer Protocol Secure. HTTPS adds security concerns to HTTP’s base ruleset, ensuring that all transferred data is encrypted, undamaged and travelling to an authenticated recipient (in other words, HTTPS helps ensure that you are actually browsing Amazon.com, not someone pretending to be Amazon).

For the modern web, HTTPS is important. There’s no way around it. HTTP doesn’t concern itself much with secure communication, because the original purpose of the web was just to share textual information. The modern web, by which we trade personal details millions of times a second, requires a more secure underlying ruleset. When you’re sending someone your credit card details to make a purchase, you’re going to want that to be encrypted – it’s as simple as that.

There are reasons other than adapting to industry standards to upgrade to HTTPS, from SEO to simple consumer reassurance. Google ranks secure sites higher than insecure sites by default, so upgrading is a good first-step for getting to page one. Consumers are becoming more aware of security concerns on the web, too – largely thanks to that green padlock you see next to secure web addresses in the browser – and are less likely to provide any details over an insecure connection. The sound theory is that if you provide a secure connection, your customer is much more likely to contribute to your business with confidence.

Implementation of HTTPS for a domain involves purchasing a certificate from a Certificate Authority, and some server configuration. Those certificates verify domains as being owned by the people who claim to own them, facilitating the green padlock your users will see. Here at Tidy, we’re happy to provide this service and set up secure connections, moving the web forward and growing your business – just give us a call, or send us an email.

Jonno

The importance of Title and Meta tags

HTML documents are not all about text and content. While the bulk of an HTML document will denote the content seen on a webpage and how that content is displayed, some of the most key facets of these documents are not shown to the user in the conventional way – instead, these elements are shown to search engines and browsers.

web-designer-in-portsmouth

Two of the most important of these “hidden” elements are the <title> and <meta> tags. Both serve to improve the general usability of search engines, and attract new traffic by way of advertising a page and its content more accurately.

<title> tags – you guessed it – define the title of a page. This will be used both by the browser (to name the tab and window), and by the search engine (to name the Search Engine Results Page entry for the page). This is your user’s first contact point with your site and should be unique and descriptive to avoid being lost in the crowd.

A great example of a unique title tag could be:

title-tag-html

<meta> tags are a little more complex. They are designed to contain “information about the information” – character encodings, geographic locations, authors and many more fields can be defined with a meta tag. One of the most important pieces of meta information is a “meta description” which should be a short (150-160) character description of the page.

This description will appear as a snippet underneath the page’s title on the Result Page, and serves to bring more traffic to the page from users who will actually benefit from visiting your page.

A typical meta description for the About page defined above might take the following form:

meta-description-tag

Note that if a page lacks a meta description, the search engine will usually take the first content on the page for this field – this is almost never ideal, and can detract from the professional look, feel and usability of the site – usability starts at the Results Page, not at your actual site!

Jonathan

CSS Rotate

The CSS transform property has many different outcomes: skew, rotate, scale, translate etc. Today we are going to focus on the rotate effect, showing how it is used and an example of its use.

We are going to rotate an image 360 degree on hover to demonstrate its effect. A basic page has been set up with the image in the centre:

css-rotate

To rotate the image on hover we will need to add this code to our IMG styling in our CSS. For convenience my styling is in the head but note styling should go in an external CSS file. Below is my styling for the image above.

img{
display: block;
width:500px;
height: auto;
margin: 100px auto 0;
}

Rotating the image is actually pretty simple and requires two extra pieces of CSS styling. The first is to add the :hover pseudo class to our img tag. Once we have this in place we can add the transform style. See below:

img:hover{
-ms-transform: rotate(360deg);
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}

I have included all browser prefixes: Chrome, IE, Firefox, Opera, to ensure it functions on the up to date browsers. As you can see the transform property itself takes different styles and rotate is one of them. The rotate style uses degrees to move an element, 360deg as shown above rotates the element around once.

The final property that needs to be inserted is the transition property. This allows us to see the element rotate. Without it there would be no smooth transition from one state to the next. See below:

img{
display: block;
width:500px;
height: auto;
margin: 200px auto 0;
-ms-transition:all 500ms linear;
-webkit-transition:all 500ms linear;
-moz-transition:all 500ms linear;
-o-transition:all 500ms linear;
transition:all 500ms linear;
}

We have added to our previous code above and again included the vendor prefixes. Check it out in your browser and see how it works. Cool effects and styling can be accomplished with the transform property. No need to add hover effects and instead can have more than just vertical and horizontal lines on a page… Preview CSS Rotate

Blayne Phillips

WordPress Page Templates

wordpress-blog-theme

In a recent project which involved WordPress we needed to implement different page templates. The spec was to have a page with a sidebar and one which was full screen without a sidebar. Luckily for us WordPress incorporates a system to achieve this. The method behind this is also fairly simple to complete and allows for a great degree of flexibility.

So first things first your going to want to make a duplicate file of the standard page.php. This default page can be either of the two templates that we want. The WordPress twenty fifteen theme defaults to a sidebar included page. Lets continue with that in mind meaning our template will be the full screen version.

Now that you have a duplicate of the default sidebar page template you need to open it up in your editor. Above all of the content on the page insert a comment tag with the template name, like this:

<?php /* Template Name: Full Width */ ?>

Watch for capital letters as these are important and it wont work without them. The template name itself can be any selection of characters you like. To finish things off in the php file itself you will want to remove the default sidebar include.

Open up your style.css file so that we can add some specific styling for the new page template. This is needed because in the default theme the main content itself wont be 100% wide. Due to the fact that it had to surrender some of its width to the sidebar. Luckily when creating the page template WordPress creates a new class on the body tag. This class will take the form of .page-template-[file name], for example our file was called page-full-width.php meaning our class is .page-template-page-full-width. With this class we can specifically target the same element and overwrite the default code.

.page-template-page-full-width{
width:100%;
}

Now you have both the styles.css and your template file completed you need to save them. The style.css is easy enough but what do you call the template file? Always start with the word page and then add your prefix to it. Like as we used above page-full-width.php. It always helps to use a name linked to its purpose. Finally make a folder called page-templates and place it in the root directory of the theme. place any templates you create inside of this folder so our new template will go here.

To test if what you have done is working create a new page and look at the page attributes. In this section you should see a template title with a drop down underneath. Click this drop down and see if the template name you created is visible. Check out this image for reference:

wordpress-page-template-code

I hope you enjoyed this quick WordPress tutorial, thanks for visiting…

Blayne Phillips

Mapping out a website

There are many ways to start developing a new website; you could start writing the code, create a couple of mock-ups in Photoshop, map out page layouts on a whiteboard or in a notepad…

mapping-out-a-website

Information architecture (IA) is an important part of web design however it can often get overlooked. This could be the result of a small development budget or an “ASAP” deadline. How developers allocate their time will certainly impact the overall cost and ETA of a project.

A lot of thought/planning should go into a new website, be it a single page site or full-blown web application – Structural design and information is very important. If you require assistance mapping out a website then please visit our Web Design Process page. Good luck and thanks for visiting…

Google Clicks and Impressions

Viewing metric data on Google Console is pretty cool, it allows webmasters to identify areas of a website that can be improved, developed or cause problems. Today lets look at ‘Clicks and Impressions’ – So, what are they?

clicks-v-impressions-console

Clicks represent the number of clicks generated by a Google search results page, in a nutshell the number of people that landed on your site via a Google search. Impressions represent the number of people that viewed a Google results page with your site on it, even if the link was not scrolled into view. Looking at these particular metrics along with your average position in a Google search could prompt you to amend or fine tune site content. A new title or page description could encourage people to click; at the end of the day we all want more clicks…