Fixed issue with animation not working on progress bar
This commit is contained in:
@@ -3,6 +3,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.progress-bar-ani {
|
.progress-bar-ani {
|
||||||
-webkit-transition: width 1s ease-in-out;
|
/* ADD REST OF TRANSITIONS FOR BROWSER */
|
||||||
transition: width 1s ease-in-out;
|
-webkit-transition: width 1.3s ease-in-out;
|
||||||
|
-moz-transition: width 1.3s ease-in-out;
|
||||||
|
-o-transition: width 1.3s ease-in-out;
|
||||||
|
transition: width 1.3s ease-in-out;
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
import React, {Component} from 'react';
|
import React, {Component} from 'react';
|
||||||
import './skills.css';
|
import './skills.css';
|
||||||
import { ReactComponent } from '*.svg';
|
|
||||||
|
|
||||||
class Skills extends Component {
|
class Skills extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@@ -8,18 +7,32 @@ class Skills extends Component {
|
|||||||
this.state = {
|
this.state = {
|
||||||
isProgressBarOneInView: false
|
isProgressBarOneInView: false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.progressBarRefs = [
|
||||||
|
React.createRef(), // ONE
|
||||||
|
React.createRef(), // TWO
|
||||||
|
React.createRef(), // THREE
|
||||||
|
React.createRef() // FOUR
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
progressBarOneRef = React.createRef();
|
progressBarRefs = [];
|
||||||
|
|
||||||
isElementInView = (offset, elementRef) => {
|
isElementInView = (elementRef, offset = 0) => {
|
||||||
if (!elementRef) return false;
|
if (!elementRef) return false;
|
||||||
const top = elementRef.getBoundingClientRect().top;
|
const top = elementRef.getBoundingClientRect().top;
|
||||||
return (top + offset) >= 0 && (top - offset) <= window.innerHeight;
|
return (top + offset) >= 0 && (top - offset) <= window.innerHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
checkProgressBarsInView = () {
|
checkProgressBarsInView = () => {
|
||||||
|
for (var i = 0; i < this.progressBarRefs.length; i++) {
|
||||||
|
let progressBarRef = this.progressBarRefs[i];
|
||||||
|
if (this.isElementInView(progressBarRef)) {
|
||||||
|
this.setState({
|
||||||
|
isProgressBarOneInView: true /* In Progress */
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -32,8 +45,8 @@ class Skills extends Component {
|
|||||||
<h2><strong>Skills and Abilities</strong></h2>
|
<h2><strong>Skills and Abilities</strong></h2>
|
||||||
<div className="mt-5 mb-4">
|
<div className="mt-5 mb-4">
|
||||||
<h4 className="text-left">C#/.NET</h4>
|
<h4 className="text-left">C#/.NET</h4>
|
||||||
<div className="progress progress-bar-height" id="progress-bar-one">
|
<div className="progress progress-bar-height">
|
||||||
<div className="progress-bar progress-bar-ani" ref={(el) => this.progressBarOneRef = el}
|
<div className="progress-bar progress-bar-ani" ref={(el) => this.progressBarRefs[0] = el}
|
||||||
role="progressbar" style={{width: isProgressBarOneInView ? 88+'%' : 0}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
|
role="progressbar" style={{width: isProgressBarOneInView ? 88+'%' : 0}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,19 +54,22 @@ class Skills extends Component {
|
|||||||
<div className="mt-5 mb-4">
|
<div className="mt-5 mb-4">
|
||||||
<h4 className="text-left">Javascript</h4>
|
<h4 className="text-left">Javascript</h4>
|
||||||
<div className="progress progress-bar-height">
|
<div className="progress progress-bar-height">
|
||||||
<div className="progress-bar progress-bar-ani" role="progressbar" style={{width: 75+'%'}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
<div className="progress-bar progress-bar-ani" ref={(el) => this.progressBarRefs[1] = el}
|
||||||
|
role="progressbar" style={{width: 75+'%'}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-5 mb-4">
|
<div className="mt-5 mb-4">
|
||||||
<h4 className="text-left">Software Design</h4>
|
<h4 className="text-left">Software Design</h4>
|
||||||
<div className="progress progress-bar-height">
|
<div className="progress progress-bar-height">
|
||||||
<div className="progress-bar" role="progressbar" style={{width: 70+'%'}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
<div className="progress-bar progress-bar-ani" ref={(el) => this.progressBarRefs[2] = el}
|
||||||
|
role="progressbar" style={{width: 70+'%'}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-5 mb-4">
|
<div className="mt-5 mb-4">
|
||||||
<h4 className="text-left">MSSQL</h4>
|
<h4 className="text-left">MSSQL</h4>
|
||||||
<div className="progress progress-bar-height">
|
<div className="progress progress-bar-height">
|
||||||
<div className="progress-bar" role="progressbar" style={{width: 62+'%'}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
<div className="progress-bar progress-bar-ani" ref={(el) => this.progressBarRefs[3] = el}
|
||||||
|
role="progressbar" style={{width: 62+'%'}} aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user