aboutsummaryrefslogtreecommitdiff
path: root/posts/better-box-shadows.md
diff options
context:
space:
mode:
Diffstat (limited to 'posts/better-box-shadows.md')
-rw-r--r--posts/better-box-shadows.md153
1 files changed, 76 insertions, 77 deletions
diff --git a/posts/better-box-shadows.md b/posts/better-box-shadows.md
index 76d62cd..c268a34 100644
--- a/posts/better-box-shadows.md
+++ b/posts/better-box-shadows.md
@@ -39,32 +39,33 @@ Box shadow on <abbr title="hypertext markup language">HTML</abbr> elements has b
Let's take a look at a default configuration of `box-shadow`:
-
- .box-container {
- box-shadow: 0 4px 8px rgba(0,0,0,0.3);
- }
-
+~~~css
+.box-container {
+ box-shadow: 0 4px 8px rgba(0,0,0,0.3);
+}
+~~~
In the example above the first property number is the origin of the *x-axis*, the second number is the origin of the *y-axis* and the third is the amount of *blur*.
We should also add some minimal styling to cleanup the `.box-container` a little bit for our example:
-
- <div class="box-container"></div>
-
-
- .box-container {
- box-shadow: 0 4px 8px rgba(0,0,0,0.3);
- /* Styles to make it less ugly */
- background: white;
- border-radius: 10px;
- border: 1px solid #eee;
- height: 200px;
- padding: 10px;
- position: relative;
- width: 250px;
- }
-
+~~~html
+<div class="box-container"></div>
+~~~
+
+~~~css
+.box-container {
+ box-shadow: 0 4px 8px rgba(0,0,0,0.3);
+ /* Styles to make it less ugly */
+ background: white;
+ border-radius: 10px;
+ border: 1px solid #eee;
+ height: 200px;
+ padding: 10px;
+ position: relative;
+ width: 250px;
+}
+~~~
Which would render as this:
@@ -78,89 +79,87 @@ Not bad - but we can do a lot better than this.
We just need to add a simple child `div` (or use a `pseudo` element if you prefer) inside our main element we want to apply the shadow to:
-
- <div class="box-container">
- <div class="box-container-inner"></div>
- </div>
-
+~~~html
+<div class="box-container">
+ <div class="box-container-inner"></div>
+</div>
+~~~
Now we make our inner child element `absolute` and set it's `height` and `width` dynamically to be slightly smaller than it's parent (percentages work best for this).
Remember to set this child element behind it's parent by adding `z-index: -1`.
-
- .box-container {
- /* No box-shadow needed on this element anymore */
- /* Styles to make it less ugly */
- background: white;
- border-radius: 10px;
- border: 1px solid #eee;
- height: 200px;
- padding: 10px;
- position: relative;
- width: 250px;
- }
-
+~~~css
+.box-container {
+ /* No box-shadow needed on this element anymore */
+ /* Styles to make it less ugly */
+ background: white;
+ border-radius: 10px;
+ border: 1px solid #eee;
+ height: 200px;
+ padding: 10px;
+ position: relative;
+ width: 250px;
+}
+~~~
## Inner Containers
We also need to target the `box-container-inner` element set inside the current parent to reflect our custom shadow styling:
-
- .box-container-inner {
- bottom: 0;
- /* The box-shadow is added here now */
- box-shadow: 0 4px 12px rgba(0,0,0,0.3);
- height: 94%;
- left: 3%;
- position: absolute;
- width: 94%;
- z-index: -1;
- }
-
+~~~sh
+.box-container-inner {
+ bottom: 0;
+ /* The box-shadow is added here now */
+ box-shadow: 0 4px 12px rgba(0,0,0,0.3);
+ height: 94%;
+ left: 3%;
+ position: absolute;
+ width: 94%;
+ z-index: -1;
+}
+~~~
Which will make the drop-shadow render with a little more realistic depth:
<div class="box-container-depth"><span class="box-container-depth-inner"></span></div>
-
-
## But wait - there's more!
We could stop now and have a decent drop-shadow that is certainly easier on the eyes - but we can make this even better with one extra property - `filter:blur();`.
So your final code would look like this:
-
- .box-container {
- /* Styles to make it less ugly */
- background: white;
- border-radius: 10px;
- border: 1px solid #eee;
- height: 200px;
- padding: 10px;
- position: relative;
- width: 250px;
- }
-
- .box-container-inner {
- bottom: 0;
- box-shadow: 0 4px 12px rgba(0,0,0,0.3);
- filter: blur(6px);
- height: 94%;
- left: 3%;
- position: absolute;
- width: 94%;
- z-index: -1;
- }
-
+~~~css
+.box-container {
+ /* Styles to make it less ugly */
+ background: white;
+ border-radius: 10px;
+ border: 1px solid #eee;
+ height: 200px;
+ padding: 10px;
+ position: relative;
+ width: 250px;
+}
+
+.box-container-inner {
+ bottom: 0;
+ box-shadow: 0 4px 12px rgba(0,0,0,0.3);
+ filter: blur(6px);
+ height: 94%;
+ left: 3%;
+ position: absolute;
+ width: 94%;
+ z-index: -1;
+}
+~~~
Which renders out into a much smoother blend of a drop-shadow, creating a more realistic illusion of depth:
<div class="box-container-depth">
- <span class="box-container-depth-inner blur"></span>
+ <span class="box-container-depth-inner blur"></span>
</div>