特定エリアだけ背景がぼやけて表示されるCSSについてのご紹介です。
「backdrop-filter: blur(12px)」を使えば特定エリアの背景のみをぼかす(blur)させることができます。
でも2021年3月現在、ブラウザの対応状況があんまりよくない!
Can I Use | backdrop-filter
「ie11」は仕方ないにしても「FireFox」…対応して欲しいよ。
スマホのおかげで「Safari」と「Chrome」のシェアがすごいから、主にこの2つのブラウザに対応して、それ以外(「FireFox」「EDGE」「Opera」「ie11」)は見えれば良いかなぁくらいでOKとして、CSSを書いてみます!
下記のCSSでiOS風のすりガラスエフェクトを「Safari」と「Chrome」に表示して、対応していないブラウザと「ie11」は背景色を濃くして対応します!
CSS
.filter {
-webkit-backdrop-filter: blur(30px);
backdrop-filter: blur(30px);
background: rgba(255,255,255,.1);
}
// [ backdrop-filter ] が効かないブラウザへの対応
@supports not (backdrop-filter: blur(30px)) {
.filterArea {
background: rgba(255,255,255,.8);
}
}
// 上の [ @supports ] はie11には効かないので、ie11は個別に対応
@media all and (-ms-high-contrast: none) {
.filterArea {
background: rgba(255,255,255,.8);
}
}
このiOS風すりガラスの表現を使って、iPhoneの上からヒュッと出てくる。。。なんて言うんだろ。ウィジェット?ウィジット?分かんない。その「上からヒュッ!」をデモで作ってみたのでFirefoxやie11でも確認してみてね!
iPhoneの「上からヒュッ!」デモ
このデモを自分でも実装したい人がもしいてくれたら、下のリンクを押すとiPhoneのスクショ画像をダウンロードできます。
さらに画像と同じ階層にHTMLとCSSのファイルを作ってコピペしたら完成です!
「backdrop-fillter」の勉強にもなるので、よかったらお使いください。
デモの画像ダウンロード
デモのHTML
<div class="demo">
<img src="ppp.jpg" alt="" />
<div class="filterArea">
<ul>
<li>
<span></span>
<span></span>
<span></span>
<span></span>
</li>
<li></li>
<li></li>
<li></li>
<li><span></span></li>
<li><span></span></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<span></span>
</div>
</div>
デモのCSS
.demo {
position: relative;
width: 100%;
max-width: 378px;
margin: 30px auto;
display: block;
color: #505050;
overflow: hidden;
border: 14px solid #252525;
border-radius: 45px;
}
.demo::after {
content: "";
position: absolute;
z-index: 100;
top: 0;
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
width: 53%;
height: 22px;
display: block;
border-radius: 0 0 18px 18px;
background: #252525;
}
.demo > img {
display: block;
width: 100%;
}
.filterArea {
position: absolute;
z-index: 10;
top: -100%;
left: 0;
-webkit-backdrop-filter: blur(30px);
backdrop-filter: blur(30px);
width: 100%;
height: 100%;
background: rgba(255,255,255,.1);
text-align: center;
-webkit-animation: iphone 1s linear infinite;
animation: iphone 3s linear infinite;
}
@-webkit-keyframes iphone {
00% {}
30% {top: -100%;}
40% {top: 0%;}
90% {top: 0%;}
100% {top: -100%;}
}
@keyframes iphone {
00% {}
30% {top: -100%;}
40% {top: 0%;}
90% {top: 0%;}
100% {top: -100%;}
}
.filterArea ul {
display: block;
padding: 80px 34px 0;
letter-spacing: -.4em;
font-size: 0;
text-align: left;
}
.filterArea li {
position: relative;
letter-spacing: -.4em;
font-size: 0;
display: inline-block;
border-radius: 20px;
background: rgba(0,0,0,.6);
vertical-align: top;
box-shadow: 0 -6px 12px rgba(0,0,0,.05) inset;
margin-bottom: 12px;
overflow: hidden;
text-align: center;
}
.filterArea li:nth-of-type(1) {
width: 48%;
margin-right: 4%;
padding: 14px 0;
}
.filterArea li:nth-of-type(1) span {
letter-spacing: normal;
border-radius: 200px;
width: 54px;
height: 54px;
background: #1378fc;
display: inline-block;
margin-right: 13px;
}
.filterArea li:nth-of-type(1) span:nth-of-type(1),
.filterArea li:nth-of-type(1) span:nth-of-type(2) {
margin-bottom: 13px;
}
.filterArea li:nth-of-type(1) span:nth-of-type(2),
.filterArea li:nth-of-type(1) span:nth-of-type(4) {
margin-right: 0;
}
.filterArea li:nth-of-type(1) span:nth-of-type(1) {
background: rgba(255,255,255,.3);
}
.filterArea li:nth-of-type(1) span:nth-of-type(2) {
background: #4ed869;
}
.filterArea li:nth-of-type(2) {
width: 48%;
height: 149px;
}
.filterArea li:nth-of-type(3) {
width: 22%;
margin-right: 4%;
height: 66px;
}
.filterArea li:nth-of-type(4) {
width: 22%;
margin-right: 4%;
height: 66px;
}
.filterArea li:nth-of-type(5) {
width: 22%;
margin-right: 4%;
height: 140px;
}
.filterArea li:nth-of-type(6) {
width: 22%;
height: 140px;
}
.filterArea li:nth-of-type(5) span, .filterArea li:nth-of-type(6) span {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 60%;
background: rgba(255,255,255,1);
}
.filterArea li:nth-of-type(6) span {
height: 30%;
}
.filterArea li:nth-of-type(7) {
width: 48%;
margin-right: 4%;
height: 66px;
margin-top: -76px;
display: block;
}
.filterArea li:nth-of-type(8), .filterArea li:nth-of-type(9), .filterArea li:nth-of-type(10), .filterArea li:nth-of-type(11), .filterArea li:nth-of-type(12), .filterArea li:nth-of-type(13), .filterArea li:nth-of-type(14), .filterArea li:nth-of-type(15), .filterArea li:nth-of-type(16), .filterArea li:nth-of-type(17) {
width: 22%;
margin-right: 4%;
height: 66px;
}
.filterArea li:nth-of-type(11) {
margin-right: 0;
}
.filterArea > span {
position: absolute;
bottom: 11px;
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
display: block;
width: 140px;
height: 5px;
border-radius: 12px;
background: rgba(255,255,255,.5);
}
@supports not (backdrop-filter: blur(30px)) {
.filterArea {
background: rgba(255,255,255,.8);
}
.filterArea > span {
background: rgba(0,0,0,.4);
}
}
@media all and (-ms-high-contrast: none) {
.filterArea {
background: rgba(255,255,255,.8);
}
.filterArea > span {
background: rgba(0,0,0,.4);
}
}







コメント