Простой индикатор загрузки для React

от автора

В сети встретил индикатор загрузки на CSS.
Перенес в React. Крутится…

import React from 'react';  class Loading extends React.Component { 	constructor(props) { 		super(props); 		this.style = { 		    margin: '10% auto', 		    borderBottom: '1px solid #8af', 		    borderLeft: '1px solid #8af', 		    borderRight: '5px solid #0af', 		    borderTop: '5px solid #0af', 		    borderRadius: '100%', 		    background: 'linear-gradient(rgba(199, 216, 234, 0.6) 30%, rgba(166, 195, 224, 0.9) 90%)', 		    height: '80px', 		    width: '100px', 			animationName: 'spin', 			animationTimingFunction: 'linear', 			animationDuration: '2s', 			animationDelay: '0.0s', 			animationIterationCount: 'infinite', 			animationDirection: 'normal', 			animationFillMode: 'forwards' 		}; 		this.keyframes = ` @-webkit-keyframes "spin"{     from{     -webkit-transform:rotate(0deg);     transform:rotate(0deg);     }     to{     -webkit-transform:rotate(359deg);     transform:rotate(359deg);     } }`; 	}  	render() { 		let styleSheet = document.styleSheets[0]; 		styleSheet.insertRule(this.keyframes, styleSheet.cssRules.length); 		return <div style={this.style}/> 	} }  export default Loading  

Оригинал из сети:

<html> <head> <META http-equiv="Content-Type" content="text/html;charset=UTF-8"> <style> div {     margin:30px;     height:100px;     width:100px;     border-radius:100%;     background:fff;     animation:spin 1.9s infinite linear;  } .loading1{     border-bottom:12px solid #8af;     border-left:12px solid #8af;     border-right:0px solid #fff;     border-top:0px solid #fff;     } .loading2{     border-bottom:5px solid #8af;     border-left:5px solid #8af;     border-right:0px solid #fff;     border-top:0px solid #fff;     background: linear-gradient(rgba(199, 216, 234, 0.6) 30%, rgba(166, 195, 224, 0.9) 90%);     } .loading3{     border-bottom:5px solid #8af;     border-left:5px solid #8af;     border-right:1px solid #fff;     border-top:1px solid #fff;     background: linear-gradient(rgba(199, 216, 234, 0.6) 30%, rgba(166, 195, 224, 0.9) 90%);     height:50px;     }   .loading4{     border-bottom:6px solid #8af;     border-left:6px solid #8af;     border-right:6px solid #fff;     border-top:6px solid #fff;     }       @keyframes "spin"{     from{-webkit-transform:rotate(0deg);     -moz-transform:rotate(0deg);     -o-transform:rotate(0deg);     -ms-transform:rotate(0deg);     transform:rotate(0deg);     }     to{     -webkit-transform:rotate(359deg);     -moz-transform:rotate(359deg);     -o-transform:rotate(359deg);     -ms-transform:rotate(359deg);     transform:rotate(359deg);     } } @-moz-keyframes spin{     from{     -moz-transform:rotate(0deg);     transform:rotate(0deg);     }     to{     -moz-transform:rotate(359deg);     transform:rotate(359deg);     } } @-webkit-keyframes "spin"{     from{     -webkit-transform:rotate(0deg);     transform:rotate(0deg);     }     to{     -webkit-transform:rotate(359deg);     transform:rotate(359deg);     } } @-ms-keyframes "spin"{     from{     -ms-transform:rotate(0deg);     transform:rotate(0deg);}     to{-ms-transform:rotate(359deg);     transform:rotate(359deg);     } } @-o-keyframes "spin"{     from{     -o-transform:rotate(0deg);     transform:rotate(0deg);     }     to{     -o-transform:rotate(359deg);     transform:rotate(359deg);     } } </style> </head> <body> <div class="loading1"></div> <div class="loading2"></div> <div class="loading3"></div> <div class="loading4"></div> </body> </html> 

ссылка на оригинал статьи https://habrahabr.ru/post/327558/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *