CSS mask を使ってシャッター効果を作る
hover デモ
.shutter-box--hover
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
.shutter-box--hover.mod--reverse
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
.shutter-box--hover.mod--vertical
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
.shutter-box--hover.mod--vertical.mod--reverse
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
emergence.js デモ
.shutter-box
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
.shutter-box.mod--reverse
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
.shutter-box.mod--vertical
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
.shutter-box.mod--vertical.mod--reverse
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
コード
.shutter-box--hover,
.shutter-box {
--shutter-mask: url('data:image/gif;base64,R0lGODdhCgAKAJEAAAAAAP///wAAAAAAACH5BAkAAAIALAAAAAAKAAoAAAIIhI+py+0PYysAOw==');
-webkit-mask-image: var(--shutter-mask);
mask-image: var(--shutter-mask);
-webkit-mask-size: 100% 100%;
mask-size: 100% 100%;
-webkit-mask-repeat: no-repeat;
mask-repeat: no-repeat;
transition: -webkit-mask-size .6s, mask-size .6s;
}
.shutter-box--hover {
-webkit-mask-size: 0 100%;
mask-size: 0 100%;
}
.shutter-box--hover.mod--reverse,
.shutter-box.mod--reverse {
-webkit-mask-position: right top;
mask-position: right top;
}
.shutter-box--hover.mod--vertical {
-webkit-mask-size: 100% 0;
mask-size: 100% 0;
}
.shutter-box--hover.mod--vertical.mod--reverse,
.shutter-box.mod--vertical.mod--reverse {
-webkit-mask-position: left bottom;
mask-position: left bottom;
}
.shutter-box--hover:hover {
-webkit-mask-size: 100% 100%;
mask-size: 100% 100%;
}
.shutter-box[data-emergence='hidden'] {
-webkit-mask-size: 0 100%;
mask-size: 0 100%;
}
.shutter-box.mod--vertical[data-emergence='hidden'] {
-webkit-mask-size: 100% 0;
mask-size: 100% 0;
}