рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рдПрдХ рдмрд╛рд░ рдореИрдВ рдПрдХ рдкреНрд░реАрд▓реЛрдбрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдХрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<div class="preloader"></div>
рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░реАрд▓реЛрдбрд░ рдореЗрдВ рджреЛ рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВ: 60x60px рдХреЗ рдЖрдХрд╛рд░ рд╡рд╛рд▓рд╛ рдПрдХ рдмрдбрд╝рд╛ рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ - 15x15pxред
рдЪреВрдВрдХрд┐ рдПрдХ рдмрдбрд╝рд╛ рд╡рд░реНрдЧ рдПрдХ рдЫреЛрдЯреА рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП div .prealoder рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкрд╣рд▓реЗ рдПрдХ рдЫрджреНрдо рддрддреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
.preloader { width: 60px; height: 60px; border: 2px solid #fff; position: relative; } .preloader::before { content: ""; width: 15px; height: 15px; background-color: #fff; position: absolute; top: calc(50% - 7.5px); left: calc(50% - 7.5px); }
рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рд╣реИ:
.preloader::before { animation: preloader 2.25s ease-out both infinite; } @keyframes preloader { 0%, 10%, 90%, 100% { transform: translate3d(0, 0, 0) scale(0); } 20%, 70% { transform: translate3d(0, 0, 0) scale(1); } 30% { transform: translate3d(-15px, -15px, 0) scale(1); } 40% { transform: translate3d(15px, -15px, 0) scale(1); } 50% { transform: translate3d(15px, 15px, 0) scale(1); } 60% { transform: translate3d(-15px, 15px, 0) scale(1); } }
рдореБрдЦреНрдп рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╕рдореЛрдЪреНрдЪ 120x120px рдФрд░ рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЧ 30x30px рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реАрд▓реЛрдбрд░ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
.preloader_l { width: 120px; height: 120px; } .preloader_l::before { width: 30px; height: 30px; top: calc(50% - 15px); left: calc(50% - 15px); animation-name: preloader-l; } @keyframes preloader-l { 0%, 10%, 90%, 100% { transform: translate3d(0, 0, 0) scale(0); } 20%, 70% { transform: translate3d(0, 0, 0) scale(1); } 30% { transform: translate3d(-30px, -30px, 0) scale(1); } 40% { transform: translate3d(30px, -30px, 0) scale(1); } 50% { transform: translate3d(30px, 30px, 0) scale(1); } 60% { transform: translate3d(-30px, 30px, 0) scale(1); } }
рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рдХрд▓рд╛ред рдореИрдВ рдЪрд╛рдп рдкреАрдиреЗ рдЧрдпрд╛, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ рдЕрдЧрд░ рдореБрдЭреЗ рджреВрд╕рд░рд╛ рдЖрдХрд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдлрд┐рд░ рд╕реЗ рдореБрдЭреЗ рдЖрдпрд╛рдо (рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ), рд╕реНрдерд┐рддрд┐ (рд╢реАрд░реНрд╖ рдФрд░ рдмрд╛рдПрдВ) рдФрд░ рдПрдиреАрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдорд╛рдк рдХреА рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рд╕рд╛рде, рдореИрдВ рд╕рднреА рдкреНрд░реЙрдкрд░реНрдЯреА рд╡реИрд▓реНрдпреВ рдХреЛ рдПрдХ рд╣реА рдлреЙрдиреНрдЯ-рд╕рд╛рдЗрдЬрд╝ рд╡реИрд▓реНрдпреВ рдкрд░ рдмрд╛рдБрдзрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдКрдБрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдкреНрд░реА-рд▓реЛрдбрд░ рдХреЗ рдЖрдпрд╛рдореЛрдВ рдХреЛ рдмрджрд▓реВрдБрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛:
.preloader { width: Xem; height: Xem; font-size: Xpx; } .preloader::before { width: Xem; height: Xem; animation: preloader 2.25s ease-out both infinite; } @keyframes preloader { 0%, 10%, 90%, 100% { transform: translate3d(0, 0, 0) scale(0); } 20%, 70% { transform: translate3d(0, 0, 0) scale(1); } 30% { transform: translate3d(-Xem, -Xem, 0) scale(1); } 40% { transform: translate3d(Xem, -Xem, 0) scale(1); } 50% { transform: translate3d(Xem, Xem, 0) scale(1); } 60% { transform: translate3d(-Xem, Xem, 0) scale(1); } } .preloader_l { font-size: Xpx; }
рдирд┐рд░реНрдгрдп
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдИ рдЧрдгрдирд╛ рдЧрдгрдирд╛ рд╕реВрддреНрд░ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ:
Vem = Vpx / Fs
Vpx рдЙрд╕ px рдореЗрдВ рдорд╛рди рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Fs рдорд╛рди рдПрдХ рдорд┐рд▓рд╛рди рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ Vpx рдорд╛рди рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдЕрдм рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдгреЛрдВ рдХреА рдЧрдгрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
.preloader { width: 60px; height: 60px; } .preloader::before { width: 15px; height: 15px; top: calc(50% - 7.5px); left: calc(50% - 7.5px); }
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝реЙрдиреНрдЯ-рдЖрдХрд╛рд░ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдЖрдпрд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрд╕реА рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдЬреЛ рдЕрдм рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИред
Width(em) = 60px / 60px = 1em Height(em) = 60px / 60px = 1em
.preloader { width: 1em; height: 1em; font-size: 60px; }
рдЕрдЧрд▓рд╛, рдореИрдВ рддрддреНрд╡ рд╕реЗ рдкрд╣рд▓реЗредред рд▓реЛрдбрд░ рдХреА рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ, рд╢реАрд░реНрд╖ рдФрд░ рдмрд╛рдПрдБ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реВрдБрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝реЙрдиреНрдЯ-рдЖрдХрд╛рд░ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ .preloader рддрддреНрд╡ рдХреЗ рдлрд╝реЙрдиреНрдЯ-рдЖрдХрд╛рд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред
Width(em) = 15px / 60px = 0.25em Height(em) = 15px / 60px = 0.25em Top(em) = 7.5px / 60px = 0.125em; Left(em) = 7.5px / 60px = 0.125em;
.preloader::before { width: 0.25em; height: 0.25em; top: calc(50% - 0.125em); left: calc(50% - 0.125em); }
рдпрд╣ рдПрдиреАрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
@keyframes preloader { 0%, 10%, 90%, 100% { transform: translate3d(0, 0, 0) scale(0); } 20%, 70% { transform: translate3d(0, 0, 0) scale(1); } 30% { transform: translate3d(-15px, -15px, 0) scale(1); } 40% { transform: translate3d(15px, -15px, 0) scale(1); } 50% { transform: translate3d(15px, 15px, 0) scale(1); } 60% { transform: translate3d(-15px, 15px, 0) scale(1); } }
рдпрджрд┐ рдЖрдк рд╕рд╛рдЗрди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ 15px рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╡реЗ 0.25em рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред
@keyframes preloader { 0%, 10%, 90%, 100% { transform: translate3d(0, 0, 0) scale(0); } 20%, 70% { transform: translate3d(0, 0, 0) scale(1); } 30% { transform: translate3d(-0.25em, -0.25em, 0) scale(1); } 40% { transform: translate3d(0.25em, -0.25em, 0) scale(1); } 50% { transform: translate3d(0.25em, 0.25em, 0) scale(1); } 60% { transform: translate3d(-0.25em, 0.25em, 0) scale(1); } }
рдЕрдм рдЖрдк .preloader_l рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдХреЛ 120px рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
.preloader_l { font-size: 120px; }
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореИрдВрдиреЗ CSS рдирд┐рдпрдо .preloader_l :: рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдПрдиреАрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реАрд▓реЛрдбрд░- l рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╣реЛрдо рдХрд╛рд░реНрдп
рдЗрд╕ рдЪрд╛рд▓ рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдХрд╛рд░реНрдп рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред рдЗрд╕рдореЗрдВ px рд╕реЗ рд▓реЗрдХрд░ em рддрдХ рдХреЗ рдорд╛рдиреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдиреАрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рднреА рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВред
@keyframes preloader { 0%, 70%, 100% { transform: translate3d(0, 0, 0) scale(0); } 10%, 60% { transform: translate3d(0, 0, 0) scale(1); } 20% { transform: translate3d(9px, -21px, 0) scale(1); } 30% { transform: translate3d(3px, 21px, 0) scale(1); } 40% { transform: translate3d(-9px, -21px, 0) scale(1); } 50% { transform: translate3d(-9px, 21px, 0) scale(1); } }