《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(四)

简介: 《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(四)

16-不规则投影


1687780784197.png


<div class="speech">Speech bubble</div>
<div class="dotted">Dotted border</div>
<div class="cutout">Cutout corners</div>
/**
 * Irregular drop-shadows
 */
div {
    position: relative;
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    vertical-align: bottom;
    box-sizing: border-box;
    width: 5.9em;
    height: 5.2em;
    margin: .6em;
    background: #fb3;
    /*box-shadow: .1em .1em .3em rgba(0,0,0,.5);*/
    -webkit-filter: drop-shadow(.1em .1em .1em rgba(0,0,0,.5));
    filter: drop-shadow(.1em .1em .1em rgba(0,0,0,.5));
    font: 200%/1.6 Baskerville, Palatino, serif;
    text-align: center;
}
.speech {
    border-radius: .3em;
}
.speech::before {
    content: '';
    position: absolute;
    top: 1em;
    right: -.7em;
    width: 0;
    height: 0;
    border: 1em solid transparent;
    border-left-color: #fb3;
    border-right-width: 0;
}
.dotted {
    background: transparent;
    border: .3em dotted #fb3;
}
.cutout {
    border: .5em solid #58a;
    border-image: 1 url('data:image/svg+xml,\
                         <svg xmlns="http://www.w3.org/2000/svg"\
                             width="3" height="3" fill="%23fb3">\
                             <polygon points="0,1 1,0 2,0 3,1 3,2 2,3 1,3 0,2"/>\
                    </svg>');
    background-clip: padding-box;
}


17-染色效果


基于滤镜的方案


1687780797122.png


/**
 * Color tinting — with filters
 */
img {
    max-width: 640px;
    transition: 1s filter, 1s -webkit-filter;
    -webkit-filter: sepia() saturate(4) hue-rotate(295deg);
    filter: sepia() saturate(4) hue-rotate(295deg);
}
img:hover,
img:focus {
    -webkit-filter: none;
    filter: none;
}


基于混合模式的方案


1687780830578.png


/**
 * Color tinting — with blending modes
 */
.tinted-image {
    width: 300px; height: 440px;
    background-size: cover;
    background-color: hsl(335, 100%, 50%);
    background-blend-mode: luminosity;
    transition: .5s background-color;
}
.tinted-image:hover {
    background-color: transparent;
}


18-毛玻璃效果


背景知识:PGBA/HSLA 颜色 , filter: blur()


1687780808170.png


/**
 * Frosted glass effect
 */
body {
    min-height: 100vh;
    box-sizing: border-box;
    margin: 0;
    padding-top: calc(50vh - 6em);
    font: 150%/1.6 Baskerville, Palatino, serif;
}
body, main::before {
  background: url("http://placekitten.com/200/300") 0 / cover fixed;
}
main {
    position: relative;
    margin: 0 auto;
    padding: 1em;
    max-width: 23em;
    background: hsla(0,0%,100%,.25) border-box;
    overflow: hidden;
    border-radius: .3em;
    box-shadow: 0 0 0 1px hsla(0,0%,100%,.3) inset,
                0 .5em 1em rgba(0, 0, 0, 0.6);
    text-shadow: 0 1px 1px hsla(0,0%,100%,.3);
}
main::before {
    content: '';
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    margin: -30px;
    z-index: -1;
    -webkit-filter: blur(20px);
    filter: blur(20px);
}
blockquote { font-style: italic }
blockquote cite { font-style: normal; }


19-折角效果


背景知识: css 变形, css 渐变, “切角效果”


45度折角的解决方案


1687780857291.png


/**
 * Folded corner effect
 */
div {
    width: 12em;
    background: #58a; /* Fallback */
    background:
            linear-gradient(to left bottom, transparent 50%, rgba(0,0,0,.4) 0) 100% 0 no-repeat,
            linear-gradient(-135deg, transparent 1.5em, #58a 0);
    background-size: 2em 2em, auto;
    padding: 2em;
    color: white;
    font: 100%/1.6 Baskerville, Palatino, serif;
}


其他角度的解决方案


1687780867964.png


/**
 * Folded corner effect — at an angle
 */
div {
    position: relative;
    width: 12em;
    background: #58a; /* Fallback */
    background: linear-gradient(-150deg, transparent 1.5em, #58a 0);
    padding: 2em;
    color: white;
    font: 100%/1.6 Baskerville, Palatino, serif;
    border-radius: .5em;
}
div::before {
    content: '';
    position: absolute;
    top: 0; right: 0;
    width: 1.73em; height: 3em;
    background: linear-gradient(to left bottom, transparent 50%, rgba(0,0,0,.2) 0, rgba(0,0,0,.4)) 100% 0 no-repeat;
    transform: translateY(-1.3em) rotate(-30deg);
    transform-origin: bottom right;
    border-bottom-left-radius: .5em;
    box-shadow: -.2em .2em .3em -.1em rgba(0,0,0,.15)
}


总结


本文整理了《css揭秘中》19个有趣的css 技巧案例,下篇将继续整理剩下的 28 个。

目录
相关文章
|
7月前
|
前端开发 容器
《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)
《CSS 简易速速上手小册》第6章:高级 CSS 技巧(2024 最新版)
55 0
|
7月前
|
前端开发 JavaScript 容器
【css揭秘】- 47个不可不知的 css 技巧(上篇0-19)(一)
【css揭秘】- 47个不可不知的 css 技巧(上篇0-19)(一)
128 1
|
7月前
|
前端开发
【css揭秘】- 47个不可不知的 css 技巧(上篇0-19)(二)
【css揭秘】- 47个不可不知的 css 技巧(上篇0-19)(二)
|
前端开发
《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(三)
《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(三)
78 0
|
前端开发 JavaScript
《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(二)
《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(二)
96 0
|
前端开发 容器
《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(一)
《css揭秘》- 47个不可不知的 css 技巧(上篇0-19)(一)
65 0
|
4月前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
HTML+CSS 实现通用的企业官网页面(记得收藏)
HTML+CSS 实现通用的企业官网页面(记得收藏)
|
2月前
|
前端开发 JavaScript 搜索推荐
打造个人博客网站:从零开始的HTML和CSS之旅
【9月更文挑战第32天】在这个数字化的时代,拥有一个个人博客不仅是展示自我的平台,也是技术交流的桥梁。本文将引导初学者理解并实现一个简单的个人博客网站的搭建,涵盖HTML的基础结构、CSS样式的美化技巧以及如何将两者结合来制作一个完整的网页。通过这篇文章,你将学会如何从零开始构建自己的网络空间,并在互联网世界留下你的足迹。