Note: Every html element should be treated as a box on screen.
setting elements height and width makes it obvious.
We can also manually contain element in box
using Div(Content Division Element)
#sample {border: 10px solid black}
This is order of importance in which css is being apply to html.
[blue will override red because of the position.]
If all these selectors are all apply to an element tag(li)
The "id selector"(#first-id) will be apply because it
will override the other selectors Because it is the most
specific selector. follow by "attribute selector",
"class selector", and "element selector".
Note: Though some believe "attribute selector and
class selector" are on the same level. But in most cases
it do override class selector.
External link is the last to be consider as it pave way for
other type. internal is next to External css. The inline
is the first and will override the rest type of css.
In this instance, green will be apply because
of the important notation. it will override
any
other styling available be it inline, id and so on.
This is the combining multiple css selectors in order to target specific element in html
This is done using comma to separate element
Using ">" to select child. This is one level deep.
This comprises ancestors and the descendant
with a space separating them. This means our
ancestors will apply the style to the descendant
as long as it has ancestors that matches the selector.
We can have many level deep.
This apply style to where all the selectors are true.
This does not have space between them.
eg
This is the combination of different combine selectors
This involves ancestors space then chaining method
or group method to combine different combination.
This is a way we can place element or object using css
This is the default position of element.
Properties like Top, right e.t.c
are not applicable to this position
This unlike static position is relative
to its position. Properties like top,
right e.t.c are applicable to this
Position in flow is intact. The element still occupy its default alloted position in the document. The browser apply the code by taking the item 20px down and 15px right from where it would have been. Other elements remain in their position. Even after shifting the element, its default spot remain intact, so siblings and parents act as if it's still in the default position. Adjust me without affecting others.
This affect the flow of html element.
This position is relative to its Parent
element. Properties like top, left e.t.c
are applicable to it. It can as well be
control by z-index because it can appear
on top of other element.
The element we assign absolute position will look up the DOM tree for the first ancestor that has position: relative, absolute, fixed, or sticky. That ancestor's padding box becomes its positioning reference. If no ancestor is positioned, the containing block defaults to the initial containing block which is most time the browser viewport.
Here, the badge sits 10 px above the container’s bottom edge and 15 px from its right edge.
This like absolute position also affect flow
of an html. It is fixed unlike other position.
Properties like top, right e.t.c are applicable
to it as well. This make element to remain fix
when scrolling.
Similar to fixed position
This is away we can align our element on web page
There are many types of display but we will be touching
only 4 types here. Note: Span element can be use to put
content within element because it's natural display property
is "Inline".Visualize all types of display here => Github
This is the default display of all element. It
means, element take full width of the entire
line contain. It force other element to appear
next line. It height and width can be change
Contents is the determinant of this type. It uses
the height and width of content to determine its
sizes. Is height and width cannot be change. Other
element can be place beside it as it doesn't take
entire width as block display. Its height and width
can't be change. It's fix by the demand of its contents.
This comprises both the "Inline" and The "Block"
display abilities. It takes full width and can
extend to other line if needed. Both width and
height can be change. It accept element to be
place side by side.
As the name implies, it makes element disappear
useful for element we don't want to display.
Useful to make element of TO-DO list to disappear
This is best use on image to just wrap text around
it. It can get more complicated to layout element on
screen and there are more advance tools like Grid and
Flexbox to use instead. Its properties involves: 'left
and right'. Also 'Clear' can be use to separate other
element from interfering. 'Clear' involve 'Both' or can be
use on each direction(Right or Left)
This is a way we make our website responsive
to different screen sizes.
This is basics of responsiveness in vanilla css before
introduction of flex and grid.
this involves using:
Grid allow a 2 or 3 dimensional layout of website. This involves setting main div display to grid. e.g
Flex allow 1 dimensional layout of website.
This process includes adding CDN links to our html using bootstraps as example: This goes to our codes as inlines.
Previously, we discuss about max-width.
In media query, we also have min-width.
for example:
We can combine breakpoint to target specific size eg:
We can also see device usage. eg
There are other various positioning in the past before the introduction of Flex, Grid and Media Query.
Using html table element[tr and td]
Setting up 3 div's and targeting their classes. Then tuning the width till it contain the content well enough.
Similar to how will set-up Inline-block:
Same set-up as float and inline-blocks:
All these old method mention above tends to be hard to get best result using them as it involves lot of tweaks and tuning.
This is easy and neat modern tools. Which is simply implemented by creating a div that encapsulate the rest div's. Simple illustration is:
Previously, we learned that div occupy full width while span is an inline element. p tag is also block element. img tag is an inline but with flexbox, all of the default behavior are overlook. And the width of each of these element inside flexbox will be based on the content size. So it'll try and let us have all our content on one line. We can then use Gap property to separate them. Default setting of a container(div) is like a block element(100% full width). We can also set it as: 'inline-flex'. Which is similar to the inline we already treated. It'll make flexbox occupy the space needed. Which means other things can also go and occupy in that same line. So we can either set the main container(div) as either 'flex' or 'inline-flex'.
The default settings of flex is row. We can also set flex direction property to 'column.' When at default that is 'row'. the main axis tends to be on an horizontal line while the cross-axis will be on vertical line. Which when 'flex-basis' property is apply, it increases the width. If the flex-direction is set to 'column' the main axis will now be vertical and the cross-axis will now be the horizontal line. Which means when 'flex-basis' property is apply, it will increase the height.
In the above example, since the 'flex-direction' is column, flex-basis will increase the height of each items. If it is at default of row. The width will increase instead. We used 'inline-flex' to make the full-width not at default of block instead it should take the width of the content.
Align, justify and wrap. Note: you have to differentiate
whether properties is from parent(container) or the child
(flex-items). For example, 'order' can only be set on the
flex-items. Default order of html element is '0'.
Also, we have 'flex-wrap' which is applicable to the parent
(container). The default is 'nowrap' which makes our container
not responsive as it'll cut-off some items. Which we can set to
'wrap' which make our items continue to other line when the first
line can't contain them. For Demonstration click =>
Demo
This is useful when we run out of space on the horizontal. The default settings is set to 'nowrap'. Which we can set to 'wrap', which move all element that the first line can't contain onto the next line. We also have 'wrap-reverse' which make things wrap from bottom right to the top left corner. Instead of the normal version which is from top left to bottom right.
This sets the distribution of our items along main-axis. Properties are: 'flex-start', 'flex-end', 'space-evenly', 'space-around', 'space-between' and 'center'.
This is similar to 'align-items but only works with 'wrap'. When we set our items to wrap and we want to specify how the content should align, then 'align-content' comes to play. For example, if we applied 'align-content' to center and we made our flexbox wrap, then when the width of our window reduces everything will be muzzle up together. If second line is needed they'll go to the second line and then it'll look the 'align-content' value to see how it should be space on the screen. When items is 'nowrap' and we set the 'align-content', it doesn't really do anything. But when we set items to 'wrap', and then there is not enough width to have everything on one line, that's when our 'align-content' comes into action. Properties are: 'baseline', 'flex-start', 'flex-end', 'stretch' and 'center'.
Unlike the 'justify-content' which is applicable along horizontal axis. 'align-items' distribute across 'cross axis'. For this properties to work, we have to set its height. eg: height: 50vh; That is the 'viewport height'. Properties involves: 'baseline', 'flex-start', 'flex-end', 'stretch' and 'center'. If wrap was enable, the behavior will be cringe which we've expatiate when we discussed 'align content'. Best to keep it as 'nowrap'. We can reach individual property using align-self
This controls the space between flex items. It applies that spacing only between items not on the outer edges.
This is the shorthand for both 'flex-direction and 'flex-wrap'
Default value of every items is 'zero'
Flexbox has default behavior to adjust to content size but here we'll dive into full way to customize the behavior to our taste. In flexbox, we have a priority list which is range from 'content-width < width < flex-basis < max-width/min-width' It first look at whether max-width/min-width is set, then flex-basis, width, and finally the content-width. 'content-width' allows content to lie up next to each other. If shrink, it'll reduce to 'minimum-width' which is where the text wraps and they are stacked on top each other. The default behavior of flexbox is to shrink until it reach the minimum content size. The longest word determine the final size. On getting to the minimum width, all of the content start disappearing as shrinking continues.
This is the default behavior of container which makes content fit the entire line.
If we set width, each item will conform with the set width. Assume we set width to 100px. on 4 items. When the container shrunk, it'll respect the set width until there is not enough overall width of the container. Which is 400px considering our example here. So if the container width get lesser than 400px, it'll adjust to the minimum-size of the content(longest words). It'll respect our set width when there is enough space for the container otherwise it'll adjust dynamically until minimum width of each item is attain.
Note: At default, if we had nothing set on the container it'll look at the entire line when it's all on one line. Which will be the 'content-width' but if width is set it'll adjust to the width instead of the content-width. So, 'width' will be obey till we shrunk the container. Where it no longer fit everything as set width, then it starts shrinking the box.
This increase 'width' when container is at default(rows) But increase 'height' when 'flex-direction' is at column. 'flex-basis' overshadow' 'width' when both are set on an items. It'll adjust to set value of 'flex-basis' as long as there is enough room in the container, But as soon as we shrink the container down, just as before, it'll adjust to the 'minimum-width'
This looks at longest words to determine the minimum-width. Which determine how small each items can shrink to. For example, if 'flex-basis' is 200px and 'min-width' is 300px, the items will respect the 'min-width' instead of the 'flex-basis'. 'min-width' overshadow 'flex-basis' when it's larger than 'flex-basis'. Items does not shrink beyond 'min-width' size.
This looks at longest possible line of the text. So it's all of content lined up in one line. We can customize this, for example, if we set 'max-width' to 100px and our flex-basis is 200px. 'max-width' will overpower the flex-basis property because it's lower than the 'flex-basis'. 'max-width' is the maximum requirement for the items to grow. But if 'flex-basis' is smaller, it'll ignore the 'max-width'.
CASES
They can be understood better by turning both off by setting them to '0'. So setting 'flex-basis' to 100px and the both grow & shrink to '0' make flexbox not a flexbox any longer as the container stops reacting to ability to increase and decrease.
Each items will start out as 100px, it'll then grow because we've switch the flex-grow on. And it'll respect that as long as there is enough space, it'll increase the width of each of the items until the entire width of the container is filled up by each items. So when the container width is reduce, it gets reduce to the flex shrink amount which is the 'flex-basis' value. Any further than that will makes the items to disappear.
By default, it'll set each items to the 'flex-basis' value but it'll not grow to fit the entire space of the container. But it'll shrink beyond the 'flex-basis' value. Until 'minimum width' is reach and because we did not set it, then it'll adjust to the 'content-width'
Switching on both means it'll take much width as possible and when shrink, it'll be as small as possible. Which 'flex-basis' is completely ignored. So here: 'flex-grow' represent 'max-width while' 'flex-shrink' represent 'min-width'. If these two are not set, it'll adjust to the content of those items.
The default of 'flex-basis' is 'auto'. Which look at amount of content in each items, it'll gives more 'flex-basis' to the items with more content. And it'll give less width to the one with smaller content. If we want that to be equal width, we simply set it 'flex-basis' to '0'
This means both flex-grow and flex-shrink is 1. flex-basis is '0'
This means both flex-grow and flex-shrink is 1 and flex-basis is 0. Which is same as the first instance. The value/ratio can be more than '1'.
Grid is more suitable to create complex web layout. 'Flexbox' is best to align content along one dimensional line. So either 'x or y' axis. While 'Grid' is good to align content alone a two dimensional layout. So both 'x and y' axis. Both flexbox and grid can be mix together. We can as well create one dimensional Grid. But it behave differently. Grid behavior tends to line up on each Other on a column and row basis and the gap between items match. Whereas, flexbox act differently because it's flexible and tries to adapt and squish content so that everything is place on screen. So depending on the behavior we seek, whether to prioritize spacing out content and aligning them or we want everything to be boxy like a grid. Check Flexbox@Grid for details comparison
There are severals types: Check Grid-sizing
We'll see preview of different kind of grid-sizing. We'll see live preview e.g 'fixed-size': which is not responsive to screen size.
In this instance, we define rows and columns by giving them fixed sizes(px). So we have 2 by 2. Two rows of 100px high for the first row, 200px high for the second row. Two columns of 400px wide for the first one and 800px wide for the second column. Fixed-size grid are not responsive. That means that if we go ahead and change the width or height, it's not going to change at all. It's going to stay fixed to the specified size we set above. In addition to 'px', we can also use 'Rem' Which is still fixed because 'rem' is relative to the root of our html. If our body/html has a size specified and we change that size then the 'rem' size will go up and down with it. But this does not make it responsive to the screen size. Instead of specifying grid-template rows and grid-template columns we can shorten it to "grid-template: 100px 200px / 400px 800px". Rows comes first, then column follows.
Unlike before 'Auto' now add a bit of responsiveness. Each row will try to fit to 100% of the horizontal available space. In our case now we'll have a first 'column' as '200px' then the other one which is auto will cover the rest space available width. 'Rows' behave differently, it doesn't try to take 100% height. Instead, it tries to fit the content. In our case, first row is 100px, the second row which is auto will try to fit the content.
The above illustration depict that the first row is 1fr and the second row is twice the size of the first row. Same logic for column. This will grow and as well shrink depending on the width available for the horizontal and also the content size available for the vertical. This is responsive type as it always maintain the figure size provided. Even if we add additional contents, it'll expand and still keep the size uniform to the provided figure ratio.
We denotes two rows with first being 200px and the second as 400px. The first column is 200px but the second column has two instances with first condition applicable to when the screen has little space we infer 400px as minimum display and 800px wide when the screen has enough space. This set a limit. Because sometimes, we have some kind of contents that we don't want to be too narrow or too wide. So our grid now range from 400px to 800px. So a stop at 400px and stop at 800px for responsiveness strain.
This simply denote that we want two 200px rows. And two 100px column. Which is same as defining rows as '200px, 200px'. And column as '100px, 100px'.
What if we define grid than amount of div's we have? for example, we have 4 items or div's and we define 2 by 3 grid. So two rows and three columns. If we only have 4 items, they're fitted into our grid from the top left to the bottom right. So that means once we've laid out the first row, it'll double back and continue along the second row. But if we don't have any items for number five and six, then it won't add them.
What if we don't define enough rows and columns? for example:
In this case, we have 2 by 2 grid system with each item being 200px tall and wide. If we have items/div's of five number which won't fit our template, the fifth items when added we automatically be assign with size based on its height and also any existing column sizes. So it'll try to meet existing column width and we try to fit to the height of the content.
We can tweak the extra div to our likening. eg:
So we basically said any more div that's not accounted for in our template should have 300px in height. We also have 'grid-auto-columns'. So with this logic, we are able to control our styling no matter the amount of div's added to the grid.
When display is at grid, there is a chip that shows 'grid' which when click, it display some information. Which we can change the layout.
We first need to look at some grid placement terminologies :
This separate our tracks. We have horizontal lines and vertical lines, these is known as the grid lines. We can only control the grid lines by using the gap property to specify its width or height. But we can't change its color, we cant put anything in the lines. They are lines for layout.
When we create and size our grid, we create rows and columns. These is known as tracks. We have rows tracks and columns tracks and we usually create and size these tracks using grid-template-rows and grid-template-columns[grid-template] for shortcut.
Cells is being created within the intersection of tracks. Which is a small unit also known as grid cells. They are the smallest unit in a grid and can be of different sizes. So one can be wider than the other that is to occupy more columns, while other can have height than the other, which means to occupy more rows. We can use multiple cells to create a grid items. So we can either position our grid cell horizontally or vertically across grid cells
This is the parent container div that contain div's items
This are the parent container children.
Note: By default, a div is going to span the entire width of the window, but it'll only occupy as much vertical space as there is content. Hence, the reason why we set height viewport height to 100, then it's also going to take that container and make it stretch all the way down to the bottom of the window. So the above code, we already known we create tracks using both grid-template-rows and grid-template-columns. So we created 3 columns with two of them being equal in width while the third one is a bit wider and we created two rows of equal height. So now, we've got tracks, lines and also container. Now the items will be place in by default. It'll start from the first and it'll go into each of the cells that are available. We can use Flexbox to target grid items to position them.
This increase the width of the cowboy by spreading in width length from column one to two. We can use the chrome dev tools to inspect. We'll be able to see the lines and the tracks in our grid. So span of two makes our cowboy div go from track one to track 3 range[1-3] which makes span two to be the bridge between column 1 and column 3. grid-column is the short form of 'grid-column-start' and grid-column-end. For example: grid-column-start: 2; grid-column-end: 4; This simply means that position start from column 2 and end at column 4. We can also use negative value to specify the last column on a grid. So the last one is -1. We have -1, -2, -3 and so on... Also, we can start and end at whichever direction we want. eg: grid-column-start: 4; grid-column-end: 2; This will be flip and still still start at column 2 and ends at column 4. Also, we can even for example: grid-column-start: span 2; grid-column-end: auto; So the auto is the automatically the initial position of our div before we did any positioning which is the first line in our case.
There is also a corresponding property known as 'grid-row' which is also short form of 'grid-row-start' and 'grid-row-end'. Which is use to cover vertical cells our grid want to span.
Natural position of the astronaut div is beside cowboy. To change that position to be the last and under cowboy instead, we use order property to set it to 1. Default order is 0. So we increase the order of the astronaut.
Another way to go by this without using order property is:
With this being explicit, we simply navigate to pinpoint the row we want the div to start, then follow by the column to start, then row for it to end and to which column to end. The four properties shorthand is grid-area: 2 / 1 / 3 / 3. grid-row-start / grid-column-start / grid-row-end / grid-column-end. Notes: If 'grid-area' is use on a div, you have to make sure to use it on other div's as well to make them behave properly.
This now takes up two rows. Which means the vertical is being increased.
Another way to achieve the same result is doing it explicitly
With this being explicit, we simply navigate to pinpoint the row we want the div to start, then follow by the column to start, then row for it to end and to which column to end. The four properties shorthand is grid-area: 1 / 3 / 3 / 4. grid-row-start / grid-column-start / grid-row-end / grid-column-end. Notes: If 'grid-area' is use on a div, you have to make sure to use it on other div's as well to make them behave properly. Also it can be of coordinate 1 / 3 / -1 / -1. Which is using negative number to denote the last row and the last column.
This is the biggest difference between grid and flexbox. Grid let us overlay items onto other items. So we can position items on top of each other in a grid.
The '80' number in book color represent transparency rate. In Hex code, the first six character correspond to the color so the amount of red, green, and blue. Then we can add a value known as 'alpha' which denote how much transparency there is. 80 is about 50% of transparency that allows us to see through the orange and the blue and the green. So the book coordinate is also set to overlap, starting from row one, column two then end at row three and column four.
Bootstrap is a css framework created in 2010 by twitter devs. It contain pre-made css files. We simply apply bootstrap to our html simply by adding its CDN(Content Delivery Network). to the head section. There are two cdn links available on the site. Css(for styling) and javascript(for reactive) js should be place before body tag close. With bootstrap, we have a good browser compatibility. Let's take for example by styling a button with bootstrap.
With just five class from bootstrap class. So we include prebuilt bootstrap css into our project. And we add the styling and the components by adding the class into html. There are lot of other css framework. Such as: tailwind material ui, foundation and so on.
Downside of css frameworks is 'class boat' which occur because we add every classes inside the html. Also, customization.
We can easily check bootstrap docs for any components of our choice. Get started Bootstrap For customization like using vanilla css with Bootstrap, always be sure you place the external link after the bootstrap cdn links.
Understanding the 12 column bootstrap layout. It is made
of 3 components: div container, div of class row, and
inside the row is where we have our items and they will
be laid out using the column system. Code example;
When we have multiple columns laid out inside rows, bootstrap automatically auto fit them. So if we had a container with row up to six, it'll result to 6/12. If 3 rows, it'll take 3/12 of the space. Here is link to bootstrap responsiveness pixel; layout pixel This is only applicable to the 100% width viewport. In most cases, container and container-fluid is most use because the container gives a margin around the left and right. And container-fluid is when we want edge to edge behavior.
This is point of break between different column we signify. eg col-sm of dimension >576 and col-md of dimension 768px simply mean, the small dimension will be applicable within the range of 576px and 768px and anything above 768px dynamically adapt to next dimension which is large. So we have; sm, m, lg, xl, xxl. With bootstrap, we don't have to manually write media query again. Examples; col-sm-2, col-sm-4, col-sm-6. So, this mean that when on a small screen, we want the dimension to be 2, 4, and 6. This means that, desktop, laptop, tv, and mobile will all have same size. But below the size of mobile, it'll default to 100% for each div's. We could also not add number, e.g; col-sm, col-sm, col-sm(which takes 4 each. col-sm-4 12/3). If we don't define a number, it automatically distribute.
Also, in a single div, we could have multiple breakpoint. e.g; col-sm-12, col-md-8, col-lg-4. Which denotes that, on a large screen and above, it should take up 4 out of 12 of the width. On the medium size and above, it should take up 8 out of 12 width. And on small sizes 12 out of 12 width(full width).
We could also mix and match the types of definitions. E.g; col-2, col-4 and col. Take 2/12, 4/12 and col automatically occupy to rest available space.
Components like prebuilt, pre-styled like buttons, cards, carousel and loads of things we get hold of simply by adding bootstrap class into our html.
We simply create a button, then we gave it a bootstrap class name 'btn'. We then give it one of the default bootstrap Color, which is 'success' which is a 'green color'.
We simply go to the component page and simply copy the code.
We can narrow down to the component section or examples which is the header section
To add a functional component like navbar, we have to add javascript link in addition to css link. Unlike the css link that is inside the head tag, the javascript will be just before the body tag ended.
We also have examples section and also snippets that we can copy the div element we want from. Also there is an array of icons to utilize. We can also come in contact with some 'custom css' files to use.
One important aspect of this is spacing.
We have 'x for horizontal axis while y is for vertical axis. Also size range from 0-5.
To change our site to dark mode.
<html lang="en" data-bs-theme="dark">
In this chapter, we'll be exploring various ways to make our website elegant.
There are four pillars involve in web design:
Color theory is the art and science of taking the right pallette for our website. Strictly need to be aware of the mood of our color pallette. For example:
This symbolize dominance, love, energetic, intensity e.t.c which is mostly use in car advert.
This is about joy, intellect, attention and yellow is an attention grabbing color. So yellow is great for logo and also an headline. But when creating something that'll be look for a long period of time then yellow can be too concentrated as it's an attention grabber color which might be pain on users viewing experience. Imagine reading a text with background all in yellow.
This is shows freshness, safety, growth and so on which most groceries utilizes a lot.
Blue is about stability, serenity, trust which most companies adopt to preach how trustworthy they're. for example Paypal and it's viral color in cryptocurrency company.
This signify royalty, femininity, wealth
Usually, we'll be combining colors. This is the most scientific part of the color theory.
This is act of taking two colors that are right next to each other on color wheel. This help create analogous color pallette. This kind of system is good for nav-bar, body of our website, logo or its background. This approach is not good in standing out
If we want our design to pop up, we're better by taking colors from opposite end of the color wheel to create a Complimentary or clashing color pallette. They mostly make use of this approach in supermarket by putting plastic grass in between meat and Because the green and the red are Complimentary colors, it makes the red meat pop out more which gives freshness feelings.
What we should'nt do with Complimentary color is not to style text and text background with it. E.g using green on text and the text background as red. We should stick to using it in logos or icons or things we really want to standout from each other.
There are others ways that we can combine colors. Like drawing equilateral triangle to create a triadic color pallette or drawing a perfect square. adobe color is a generator of color website. With it, we can tweak between different color combination. We could also make use of a website color hunt Which have lot of already generated colors
Out of every font, two standout.
They have little feat at the end of their central beams. The reason for the old feat is as a result of being inspired by marble carving of days of yore. Under serif family, we have
Sub family is Didot
Adobe jenson as sub family
Baskerville and time new roman as sub family
American Typewriter as sub family
Just as color have different moods, fonts also have different moods and they also convey a message to a user. Serif family is known as traditional, stable, respectable, authoritative
Instead of they having little feat at the end of central beam, they have perfect right angles which makes it more friendly, novel approachable and contemporary. So it's sensible, straightforward and simple. families include:
San serif are highly readable which makes it grossly use more in body text
Things not do with font is to use many fonts like more than 3 in a single design. Two fonts in one design is enough. When mixing fonts, we should stick with the one with similar moods and also similar time era. The things to contrast are the serifness e.g we want the headings to be of serif and body to be sanserif or the opposite. We can also change the weight between the headings and the body.
There are lot other typeface but they are difficult to read
Typically, our brain is drawn to bigger and bolder things. We can use this to define:
This is by making sure that the most important information is convey first. Hierarchy is emphasize in many ways. E.g:
Color that pops well and stand out and have contrast with background tend to be use for high hierarchy.
Bigger items draw our attention more
We can either have big block of text where everything is layout in the same way or we can be creative by creating a text and then introducing pics, different sizes and shapes and different hierarchy.
Always aim for 40-60 characters per line for easy read of information as display in your website.
This is how we position each element on the screen relative to each other. E.g:
This is done in such a way by looking at every details of the page. Details, like headings, body text and buttons. And then draw a line to make them be place in exact same vertical line drawn. This will make our design to look more compact.
This is an really important concept. This is the empty space around text or elements. Adding space to text or elements makes it more elegant.
Consider what will interest your audience as this will go in a long way to instigate creativity to be dynamic as to when designing for different instances.
Unlike design, user experience is meant to be invisible. A good experience makes user do thing on the site effortlessly. To achieve this, we have a five things to follow.
Making thing as simple as possible is better than making it complex. Make it crystal clear not clutter. Make text distinct and crystal clear, use images and videos if needed. Use appealing color combination to make the website look easy on users.
We should stick to make our design consistent, also the functionality. Don't let people relearn how to operate your website. Make consistence operation across pages of your website.
Study shows that proof that the common reading pattern is that of F-pattern. There are also various pattern. E.g;
Where the eyes started at the top left of the corner which then tracks the right and then flips back again browsing down the left gutter. Thing like 'bullets point, images, button, icons' are all on the left sides.
In this case, eyes move from left to right and then zig-zagging down to the website. Ideal for website that's more sparse like if we have video contents to display and it's also good for browsing website faster. Facebook utilize the z-pattern.
In this modern age, it's necessary to think of making our website to adapt to all kind of platforms. Ranging from desktop to mobile screen. We should scale our website efficiently across different platform. Make the text and other content moderate and ability to re-arrange to adapt to the available screen space of the different platforms.
This is known as dark-patterns. It's a way of creating a design to make user do what they don't intend to do.