UNPKG

round-carousel-component

Version:

An infinitely scrollable 3D carousel component for the web

121 lines (108 loc) 5.2 kB
.carousel { width: 13.125rem; height: 13.125rem; position: relative; margin: 0 auto; perspective: 62.5rem; } .carousel__container { width: 100%; height: 100%; position: absolute; transform-style: preserve-3d; transition: transform 1s; } .carousel__slide { position: absolute; width: 11.875rem; height: 11.875rem; left: 0.625rem; top: 0.625rem; border: 0.125rem solid; transition: transform 1s, opacity 1s; } .carousel__slide img { width: 100%; height: auto; display: block; } .carousel__slide-overlay { color: #fff; text-align: center; display: flex; flex-flow: row wrap; align-items: center; justify-content: center; align-content: center; position: absolute; top: 0; right: 0; bottom: 0; left: 0; opacity: 0; transition: opacity 0.35s ease-in-out; background-color: rgba(0, 0, 0, 0.7); user-select: none; } .carousel__slide-overlay span, .carousel__slide-overlay strong { display: block; flex: 0 0 100%; } .carousel__slide:hover .carousel__slide-overlay { opacity: 1; } .carousel__controls { display: flex; flex-flow: row wrap; align-items: center; justify-content: center; } .carousel__control { font-size: 0; line-height: 0; text-indent: -100%; width: 2.5rem; height: 2.5rem; display: block; position: relative; border: 1px solid; margin: 0 2rem; background: rgba(0, 0, 0, 0.7); border-radius: 50%; box-shadow: none; } .carousel__control::before, .carousel__control::after { content: ''; display: block; position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; } .carousel__control::before { width: 50%; height: 1px; background-color: #fff; } .carousel__control::after { content: ''; width: 0.9375rem; height: 0.9375rem; display: inline-block; vertical-align: middle; border-color: #fff; border-style: solid; border-width: 0 0 1px 1px; margin: auto; transform: rotate(-135deg); transform-origin: 50% 50%; transition: all 0.35s ease-in-out; } .carousel__control--prev::after { transform: rotate(45deg); } /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yb3VuZC1jYXJvdXNlbC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoicm91bmQtY2Fyb3VzZWwuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNhcm91c2VsIHtcblx0d2lkdGg6IDEzLjEyNXJlbTtcblx0aGVpZ2h0OiAxMy4xMjVyZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luOiAwIGF1dG87XG5cdHBlcnNwZWN0aXZlOiA2Mi41cmVtO1xufVxuXG4uY2Fyb3VzZWxfX2NvbnRhaW5lciB7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcblx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDFzO1xufVxuXG4uY2Fyb3VzZWxfX3NsaWRlIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogMTEuODc1cmVtO1xuXHRoZWlnaHQ6IDExLjg3NXJlbTtcblx0bGVmdDogMC42MjVyZW07XG5cdHRvcDogMC42MjVyZW07XG5cdGJvcmRlcjogMC4xMjVyZW0gc29saWQ7XG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAxcywgb3BhY2l0eSAxcztcbn1cblxuLmNhcm91c2VsX19zbGlkZSBpbWcge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiBhdXRvO1xuXHRkaXNwbGF5OiBibG9jaztcbn1cblxuLmNhcm91c2VsX19zbGlkZS1vdmVybGF5IHtcblx0Y29sb3I6ICNmZmY7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1mbG93OiByb3cgd3JhcDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdHJpZ2h0OiAwO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdG9wYWNpdHk6IDA7XG5cdHRyYW5zaXRpb246IG9wYWNpdHkgMC4zNXMgZWFzZS1pbi1vdXQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5jYXJvdXNlbF9fc2xpZGUtb3ZlcmxheSBzcGFuLFxuLmNhcm91c2VsX19zbGlkZS1vdmVybGF5IHN0cm9uZyB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRmbGV4OiAwIDAgMTAwJTtcbn1cblxuLmNhcm91c2VsX19zbGlkZTpob3ZlciAuY2Fyb3VzZWxfX3NsaWRlLW92ZXJsYXkge1xuXHRvcGFjaXR5OiAxO1xufVxuXG4uY2Fyb3VzZWxfX2NvbnRyb2xzIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1mbG93OiByb3cgd3JhcDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5jYXJvdXNlbF9fY29udHJvbCB7XG5cdGZvbnQtc2l6ZTogMDtcblx0bGluZS1oZWlnaHQ6IDA7XG5cdHRleHQtaW5kZW50OiAtMTAwJTtcblx0d2lkdGg6IDIuNXJlbTtcblx0aGVpZ2h0OiAyLjVyZW07XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRtYXJnaW46IDAgMnJlbTtcblx0YmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjcpO1xuXHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5jYXJvdXNlbF9fY29udHJvbDo6YmVmb3JlLFxuLmNhcm91c2VsX19jb250cm9sOjphZnRlciB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRkaXNwbGF5OiBibG9jaztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdHJpZ2h0OiAwO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdG1hcmdpbjogYXV0bztcbn1cblxuLmNhcm91c2VsX19jb250cm9sOjpiZWZvcmUge1xuXHR3aWR0aDogNTAlO1xuXHRoZWlnaHQ6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLmNhcm91c2VsX19jb250cm9sOjphZnRlciB7XG5cdGNvbnRlbnQ6ICcnO1xuXHR3aWR0aDogMC45Mzc1cmVtO1xuXHRoZWlnaHQ6IDAuOTM3NXJlbTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRib3JkZXItY29sb3I6ICNmZmY7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMCAwIDFweCAxcHg7XG5cdG1hcmdpbjogYXV0bztcblx0dHJhbnNmb3JtOiByb3RhdGUoLTEzNWRlZyk7XG5cdHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG5cdHRyYW5zaXRpb246IGFsbCAwLjM1cyBlYXNlLWluLW91dDtcbn1cblxuLmNhcm91c2VsX19jb250cm9sLS1wcmV2OjphZnRlciB7XG5cdHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbn1cbiJdfQ== */