Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 30.01.2024, 11:27
Интересующийся
Отправить личное сообщение для NastyaVs Посмотреть профиль Найти все сообщения от NastyaVs
 
Регистрация: 28.01.2024
Сообщений: 17

Сообщение от voraa Посмотреть сообщение
Хотите, что бы опять все кто то переделывал?
Я прошу предметно помочь чтобы я могла разобраться в дальнейшем

Последний раз редактировалось NastyaVs, 30.01.2024 в 11:33.
Ответить с цитированием
  #22 (permalink)  
Старый 30.01.2024, 11:32
Интересующийся
Отправить личное сообщение для NastyaVs Посмотреть профиль Найти все сообщения от NastyaVs
 
Регистрация: 28.01.2024
Сообщений: 17

Сообщение от voraa Посмотреть сообщение
Хотите, что бы опять все кто то переделывал?
Если Вам тяжело помочь, или считаете что я очень надоедлива то прошу прощения, что я Вас побеспокоила
Ответить с цитированием
  #23 (permalink)  
Старый 30.01.2024, 11:58
Интересующийся
Отправить личное сообщение для NastyaVs Посмотреть профиль Найти все сообщения от NastyaVs
 
Регистрация: 28.01.2024
Сообщений: 17

Сообщение от voraa Посмотреть сообщение
Хотите, что бы опять все кто то переделывал?
Я попыталась переделать сама у меня получилось так: https://codepen.io/NastyaVs/pen/qBvpgLb

Но добиться чтобы в Варианте #2 когда доходишь скроллом до него видно как счетчик цифр срабатывает, а срабатывает анимация для зеленых Bar-ров.

И при повторном возврате к блокам в Варианте 1 и Варианте 2 при скролле страницы вверх или вниз чтобы зеленые Bar-ы и цифры заново прокручивались и анимироваались Я НЕ СМОГЛА РЕАЛИЗОВАТЬ

Последний раз редактировалось NastyaVs, 30.01.2024 в 12:10.
Ответить с цитированием
  #24 (permalink)  
Старый 30.01.2024, 12:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

NastyaVs,
на всякий случай, пример из далёкого прошлого )))
https://javascript.ru/forum/showthre...397#post485397
Ответить с цитированием
  #25 (permalink)  
Старый 30.01.2024, 12:51
Интересующийся
Отправить личное сообщение для NastyaVs Посмотреть профиль Найти все сообщения от NastyaVs
 
Регистрация: 28.01.2024
Сообщений: 17

рони,
Спасибо Вам огромное за пример, но здесь подключения плагинов мне пока будет трудно в этом разбираться. Я еле свое пока могу реализовать
Ответить с цитированием
  #26 (permalink)  
Старый 30.01.2024, 13:38
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>test</title>
	<style>
.wrapper {
	overflow: clip;
	min-height: 100%;
	display: flex;
	flex-direction: column;
}

.wrapper > main {
	flex-grow: 1;
}

.main {
	font-family: "Poppins", sans-serif;
	color: #fff;
	background-color: #37393f;
}

/* !Убрать после тестов*/
.main__section {
	padding-top: 1200px;
	margin-bottom: 1250px;
}

h3{
	text-align: center;
}

h3:not(:last-child){
	margin-bottom: 20px;
}
/* !Убрать после тестов */

.main__section > *:not(:last-child) {
	margin-bottom: 150px;
}

/* ?Вариант #1 (Progress Bar) */
.progress-bar__block-bar {
	max-width: 640px;
	margin: 0 auto;
	padding: 0 15px;
	display: flex;
	flex-wrap: wrap;
	gap: 15px;
}

.block-bar__clients,
.block-bar__project {
	background-color: #2e2f34;
	padding: 27px 30px;
	flex: 1 1 auto;
}

.clients-bar__wrap,
.project-bar__wrap {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
}
.clients-bar__circular,
.project-bar__circular {
	position: relative;
	width: 80px;
	height: 80px;
	border-radius: 50%;
	background: conic-gradient(#40ddb6 3.7deg, #37393f 0deg);
	display: flex;
	align-items: center;
	justify-content: center;
}

.clients-bar__circular::before,
.project-bar__circular::before {
	content: "";
	position: absolute;
	top: 5px;
	left: 5px;
	width: 70px;
	height: 70px;
	border-radius: 50%;
	background: #37393f;
}
.clients-bar__value,
.project-bar__value {
	font-size: 20px;
	font-weight: 600;
	line-height: 0.8;
	z-index: 2;
}

.text-block__paragraph {
	text-transform: capitalize;
	font-family: "Inter", sans-serif;
	line-height: 1.4;
}

.text-block__paragraph:not(:last-child) {
	margin-bottom: 1px;
}
.text-block__subtitle {
	text-transform: capitalize;
	font-size: 18px;
	font-weight: 600;
	line-height: 0.9;
}

[class*="-bar__value"] {
	font-family: "Poppins", sans-serif;
	font-size: 20px;
	font-weight: 600;
	line-height: 0.8;
}
/* !Вариант #1 (Progress Bar) */

/* ?Вариант #2 (Progress Bar) */
.circular-bar__block {
	max-width: 640px;
	margin: 0 auto;
	padding: 0 15px;
	display: flex;
	flex-wrap: wrap;
	gap: 15px;
}

.decs__paragraph {
	text-transform: capitalize;
	font-family: "Inter", sans-serif;
	line-height: 1.4;
}

.decs__subcaption {
	text-transform: capitalize;
	font-size: 18px;
	font-weight: 600;
	line-height: 0.9;
}

.block-circular__products-inner,
.block-circular__clients-inner {
	background-color: #2e2f34;
	padding: 27px 28px;
	display: flex;
	gap: 15px;
	flex-wrap: wrap;
	align-items: center;
}

.bar-products__outer-item,
.bar-clients__outer-item {
	height: 80px;
	width: 80px;
	border-radius: 50%;
	background-color: #37393f;
	display: flex;
	justify-content: center;
	align-items: center;
	position: relative;
}

.bar-products__inner-item,
.bar-clients__inner-item {
	position: absolute;
	top: 4px;
	left: 4px;
	height: 70px;
	width: 70px;
	border-radius: 50%;
	display: flex;
	justify-content: center;
	align-items: center;
}

#bar-products__value,
#bar-clients__value {
	font-size: 20px;
	font-weight: 600;
	line-height: 0.8;
	z-index: 2;
}

.circular-bar__anim.circular-bar__products.circular-bar__active {
	fill: #37393F;
	stroke: #40ddb6;
	stroke-width: 5px;
	stroke-dasharray: 226; /* параметр для создания полноценной окружности */
	stroke-dashoffset: 226; /* параметр для начальной точки отсчета */
	animation: sircle-products 1s linear forwards;
}

.circular-bar__anim.circular-bar__clients.circular-bar__active {
	fill: #37393F;
	stroke: #40ddb6;
	stroke-width: 5px;
	stroke-dasharray: 226; /* параметр для создания полноценной окружности */
	stroke-dashoffset: 226; /* параметр для начальной точки отсчета */
	animation: sircle-clients 1s linear forwards;
}

.circular-bar__products, .circular-bar__clients {
	transform: rotate(-84deg);
}

@keyframes sircle-products {
	100% {
		stroke-dashoffset: 11;
	}
}

@keyframes sircle-clients {
	100% {
		stroke-dashoffset: 20;
	}
}
	
	</style>
</head>

<body>
	<div class="wrapper">


		<header class="header">
			<div class="header__section section">
			</div>
		</header>


		<main class="main">
			<div class="main__section section">
				<!-- ?Вариант #1 -->
				<div class="progress-bar">
					<h3>Вариант #1</h3>
					<div class="progress-bar__block-bar block-bar">

						<div class="block-bar__clients clients-bar">
							<div class="clients-bar__wrap">
								<div class="clients-bar__circular">
									<span class="clients-bar__value">95%</span>
								</div>

								<div class="clients-bar__text-block text-block">
									<div class="text-block__paragraph">clients</div>
									<h4 class="text-block__subtitle">quick response</h4>
								</div>
							</div>
						</div>
						<div class="block-bar__project project-bar">
							<div class="project-bar__wrap">
								<div class="project-bar__circular">
									<span class="project-bar__value">85%</span>
								</div>

								<div class="products-bar__text-block text-block">
									<div class="text-block__paragraph">project</div>
									<h4 class="text-block__subtitle">finished jobs</h4>
								</div>
							</div>
						</div>
					</div>
				</div>

			</div>
		</main>


		<footer class="footer">
			<div class="footer__section section"></div>
		</footer>
	</div>
	<script>
let barProducts = document.querySelector(".clients-bar__circular"),
		productsCount = document.querySelector(".clients-bar__value"),
		barClients = document.querySelector(".project-bar__circular"),
		clientsCount = document.querySelector(".project-bar__value");
 
let productsStart = 0,
		productsEndValue = 95,
		clientsStartValue = 0,
		clientsEndValue = 85;


let productsInterval = false;
let clientsInterval = false;

const COUNT_TIME = 5000;
 
const startProgress = (timeCount) => {

    const endValues = [95, 85];
    const elementsBar = [barProducts, barClients];
    const elementsCount = [productsCount, clientsCount];
    
    const timeStart = performance.now();
               
     function show (currentTime) {
        let part = (currentTime - timeStart) / timeCount;
        if (part > 1) part = 1;
        for (let i = 0; i < endValues.length; i++) {
            const percent = Math.round( part * endValues[i]);
            const degree = part * endValues[i] * 3.6;
            elementsBar[i].style.background = `conic-gradient(#40DDB6 ${degree}deg, #37393F 0deg)`;
            elementsCount[i].innerHTML = `${percent}%`;
        }
        if (part < 1) requestAnimationFrame(show);
    }
        
    requestAnimationFrame(show);
}
    
	
 
//TODO Вариант #1 (Progress Bar) - скролл страницы
 
const observer = new IntersectionObserver(
    (entries) => {
        entries.forEach((entry) => {
            if (entry.isIntersecting) {
                startProgress(COUNT_TIME);
            }
        });
    },
    {
        root: null,
        rootMargin: "0px",
        threshold: 0.9,
    }
);
 
observer.observe(document.querySelector(".progress-bar__block-bar"));
	</script>
</body>

</html>
Ответить с цитированием
  #27 (permalink)  
Старый 30.01.2024, 16:48
Интересующийся
Отправить личное сообщение для NastyaVs Посмотреть профиль Найти все сообщения от NastyaVs
 
Регистрация: 28.01.2024
Сообщений: 17

voraa,
Спасибо Вам огромное за объяснение
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет суммы чисел при отметке чекбоксов Garik Элементы интерфейса 11 27.07.2013 21:47
Создания счетчика при событие arhonik jQuery 4 17.03.2013 12:52
Изменение чисел при передаче в БД FoxTrix Серверные языки и технологии 9 05.03.2013 22:44
Ошибка при сложении двух чисел SER Events/DOM/Window 2 20.12.2012 08:35
Загрузка счетчика при редиректе Johny Общие вопросы Javascript 6 31.08.2010 20:19