CSS Tips & Tricks
Nirajan Basnet
Front-end Engineer, YIPL
-
The content can't shrink to fit the container
-
The container can't expand to fit the content
-
The container doesn't handle overflow gracefully
CSS is the fundamental of any webdesign without it no one make a great website.
Patience
Responsbilties
Creative
Basic Tips
Use CSS Shorthand notation
Background
.main-content {
background-color: #aeaeae;
background-image: url(images/bg.png);
background-repeat: no-repeat;
background-attachment: scroll;
background-position: top left;
}
.main-content {
background: #aeaeae url(images/bg.png) no-repeat 0 0;
}
Font
.main-content {
font-family: Verdana, Arial, Helvetica;
font-size: 16px;
font-weight: bold;
font-style: italic;
font-variant: normal;
line-height: 1.2;
}
.main-content {
font:italic bold 16px/1.2 Verdana, Arial, Helvetica;
}
Margin & Padding
.main-content {
margin-top: 0;
margin-right: 5px;
margin-bottom: 10px;
margin-left: 15px;
}
.main-content {
margin: 0 5px 10px 15px;
}
.main-content {
margin: 0 auto; (top/bottom right/left)
}
.main-content {
margin: 10px 20px 15px; (top right/left bottom)
}
Border
.main-content {
border-width: 2px;
border-style: dotted;
border-color: red;
}
.main-content {
border: 2px dotted red;
}
.main-content {
border-right: 2px solid #666;
}
.main-content {
border-width: 3px 2px; (top/bottom right/left)
}
With font-display Property
New CSS property
It control how fonts display in much the same way that we can with JavaScript-based solutions, only now through a convenient CSS one-liner!
Used inside of a @font-face declaration for your custom fonts
Four number of values: auto, swap, fallback, optional
- "Flash of Invisible Text," or FOIT Effect.
Font loading in the browser
Basic syntax - swap
@font-face {
font-family: "Open Sans Regular";
font-weight: 400;
font-style: normal;
src: url("fonts/OpenSans-Regular-BasicLatin.woff2") format("woff2");
font-display: swap;
}
p {
font-family: "Open Sans Regular", "Helvetica", "Arial", sans-serif;
}
Font smoothing
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
Pseudo Selectors Hacks
-
:empty
-
:target (Modal)
-
:hover (Tooltip)
-
:lang
-
:valid, :invalid (Form input)
-
:in-range
-
:fullscreen
-
:placeholder-shown
To center the element
-
table
-
absolute,transform
-
flex
Be Layout Ninja
Mobile First Responsive Design
Photo source: Responsive design
An approach to web design which makes web pages render well on a variety of devices and window or screen sizes.
Content, Design and Performance
are necessary to all devices to ensure usability and satisfaction.
/*========== Mobile First Method ==========*/
/* Custom, iPhone Retina */
@media only screen and (min-width : 320px) {
}
/* Extra Small Devices, Phones */
@media only screen and (min-width : 480px) {
}
/* Small Devices, Tablets */
@media only screen and (min-width : 768px) {
}
/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {
}
/* Large Devices, Wide Screens */
@media only screen and (min-width : 1200px) {
}
/*========== Non-Mobile First Method ==========*/
/* Large Devices, Wide Screens */
@media only screen and (max-width : 1200px) {
}
/* Medium Devices, Desktops */
@media only screen and (max-width : 992px) {
}
/* Small Devices, Tablets */
@media only screen and (max-width : 768px) {
}
/* Extra Small Devices, Phones */
@media only screen and (max-width : 480px) {
}
/* Custom, iPhone Retina */
@media only screen and (max-width : 320px) {
}
CSS Flexbox Grid
-
New Flexible box layout module in CSS3
-
To improve the items align, directions and order even when they are with dynamic or even unknown size
-
To modify the width or height of its children to fill the available space in the best possible way on different screen sizes
Photo source: Flexbox grid
#display
.container {
display: flex | inline-flex;
}
#flex-wrap
.container {
flex-wrap: wrap | no-wrap | wrap-reverse;
}
#justify-content
.container {
justify-content: flex-end | flex-start | center | space-around | space-between;
}
#align-items
.container {
align-items: stretch | flex-start | flex-end | center | baseline;
}
Use cases for CSS Calc()
Basic syntax
.main-container {
width: 90%; /* fallback if needed */
width: calc(100% - 3em);
}
.sidebar {
float: left;
width: 200px;
}
.main-content {
float: left;
width: calc(100% - 200px);
}
#element1, #element2 {
float: left;
width: calc(50% - 30px);
}
#element2 {
margin-left: 60px;
}
#element1, #element2 {
width: calc(50% - 2em);
}
#element1, #element2 {
width: calc(50% - 2em - 4px);
border: 2px solid #000;
}
#myelement {
width: max(300px, 30%, 30em);
font-size: min(10px, 0.6em);
}
Viewport Possibilities
-
Fullscreen Background
-
Responsive font
Transition & Animation
Simple transition
#element {
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
#element {
transition: [transition-property] [transition-duration]
[transition-timing-function] [transition-delay];
}
Fade In Example
#element {
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
#element {
transition: [transition-property] [transition-duration]
[transition-timing-function] [transition-delay];
}
CSS Icons
Examples
Codepen Examples with animation
Share your work in
- Uplabs
- Codepen
- Write blog in medium
Resources
CSS Tips & Tricks
By Nirazan Basnet
CSS Tips & Tricks
- 608