Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2016, 11:02
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Перекрывание слоев overflow: hidden;
Добрый день уважаемые. Делал прелодер на CSS на выходе получил очень много артефактов, подскажите пожалуйста где я косячу?
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Preloader</title>
	<!-- <link rel="stylesheet" type="text/css" href="normalize.css"> -->
<style>
.preloader{
	margin: 0 auto;
	width: 75px;
	height: 75px;
	border: 1px solid black;
}

.circle {
	border-radius: 50%;
	cursor: pointer;
}

.c_main {
	position: relative;
	width: 75px;
	height: 75px;	
	border-bottom: 1px solid #d7d7d5;
	background-color: #E1E1E1;
	opacity: .99;
	z-index: 1;
}

.c_orange{
	position: absolute;
	margin-left: 1px;
	height: 73px;
	width: 73px;
	background: -webkit-linear-gradient(bottom, #FF7D00 0%,  #FB7E01 50%, #FC5200 51%, #FC5101);
	background: linear-gradient(to top, #FF7D00 0%,  #FB7E01 50%, #FC5200 51%, #FC5101);
	overflow: hidden;
}

.c_orange:before{
	content:'';
	position: absolute;
	top: -4px;
	margin-left: -74px;
    width: 148px;
    height: 148px;
    border-radius: 50%;
 	border: 1px solid #BB4001;
box-shadow:  4px 7px 4px 8px rgba(187,64,1, 0.9), inset 8px 6px 3px rgba(187,64,1, 0.9);


}

.rect1{
	position: absolute;
	top: -36px;
	left: 36px;
	height: 73px;
	width: 73px;
	background-color: #E1E1E1;
	-webkit-transform-origin: left bottom;
	        transform-origin: left bottom; 
	-webkit-transform: rotate(45deg); 
	        transform: rotate(45deg);


}

.cover1 {
	position: absolute;
	margin-left: 11px;
	margin-top: 11px;
	height: 50px;
	width: 50px;
	background-color: #E1E1E1;

}

.c_blue{
	position: absolute;
	margin-left: 1px;
	margin-top: 1px;
	height: 48px;
	width: 48px;
	background-color: #50A2CA;
	overflow: hidden;
}

.c_blue:before{
	content:'';
	position: absolute;
	top: -3px;
	margin-left: -4px;
    width: 88px;
    height: 88px;
    border-radius: 50%;
 	border: 1px solid #083A4D; 
box-shadow:  4px 6px 3px 9px rgba(8,58,77, 0.9), inset -8px 6px 1px 1px rgba(8,58,77, 0.9); 
	overflow: hidden;
}

.rect2{
		position: absolute;
	left: 24px;
	height: 48px;
	width: 48px;
	background-color: #E1E1E1;
	-webkit-transform-origin: left center;
	        transform-origin: left center; 
	-webkit-transform: rotate(-20deg); 
	        transform: rotate(-20deg);
	        overflow: hidden;
}

.cover2{
	position: absolute;

	margin-left: 6px;
	margin-top: 6px;
	height: 36px;
	width: 36px;
	background-color: #E1E1E1;
}

.c_purple{
	position: relative;
	margin-left: 1px;
	margin-top: 1px;

	height: 34px;
	width: 34px;
	background-color: #5B4A69;
	z-index: 1;
	opacity: 0.99;
	overflow: hidden;

}


.c_purple:before{
	content:'';
	position: absolute;
	top: -8px;
	margin-left: -2px;
    width: 88px;
    height: 88px;
    border-radius: 50%;
 	border: 1px solid #3B2E43;  
box-shadow:  4px 6px 3px 9px rgba(59,46,67, 0.9), inset -8px 6px 1px 1px rgba(59,46,67, 0.9); 
	

}

.cover3{
	position: absolute;
	margin-left: 5px;
	margin-top: 5px;
	height: 24px;
	width: 24px;
	background-color: #E1E1E1;

	
}

.rect3{
	position: absolute;
	top: -4px;
	left: 16px;

	height: 38px;
	width: 38px;
	background-color: #E1E1E1;
	/*border: 1px solid black;*/
	z-index: 2;
	-webkit-transform-origin: left center;
	        transform-origin: left center; 

	-webkit-transform: rotate(-45deg); 

	        transform: rotate(-45deg);
}


.circle:hover .rotating {
	-webkit-animation: swinger 3s linear infinite normal;
	        animation: swinger 3s linear infinite normal;
	
}

.circle:hover .rotatingBackward{
	-webkit-animation: swinger 3s linear infinite reverse;
	        animation: swinger 3s linear infinite reverse;

}


@-webkit-keyframes swinger {
	0%{
		-webkit-transform: rotate(0deg);
		        transform: rotate(0deg);
	}

	100% {
		-webkit-transform: rotate(360deg);
		        transform: rotate(360deg);
	}
}


@keyframes swinger {
	0%{
		-webkit-transform: rotate(0deg);
		        transform: rotate(0deg);
	}

	100% {
		-webkit-transform: rotate(360deg);
		        transform: rotate(360deg);
	}
}
</style>
</head>
<body>
	<div class="preloader">
			<div class="circle c_main">
				<div class="circle c_orange"><div class="rect1 rotating"></div>
					<div class="circle cover1">
						<div class="circle c_blue"> <div class="rect2 rotatingBackward"></div>
							<div class="circle cover2">
								<div class="circle c_purple"><div class="rect3 rotating"></div>
									<div class="circle cover3"></div>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
	</div>	
<script type="text/javascript" src="script.js"></script>
</body>
</html>

Не могу понять как избавится от этого квадрата перекрытия. + 1px радиуса по ободу кругов
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2016, 17:02
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

От квадрата перекрытия помогает
Код:
clip: rect(0px, 100%, 50%, 50%);
(по крайней мере в данном случае)

Обводка в 1 пкс при закр. уголках -- изчеснет, если вырезать по кругу, уменьшить его на 1%
Код:
clip-path: circle(49% at center);
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Preloader</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
    </head>
    <body>
        <style scoped>

html, body {
    height: 100%;
}

body {
    margin: 0;
    display: flex;
}

.preloader {
    --size: 150px;
    margin: auto;
    width: var(--size);
    height: var(--size);
    cursor: pointer;
}

.circle {
    border-radius: 50%;
    position: relative;
    overflow: hidden;
    width: 100%;
    height: 100%;
    background: #eee;
    transform: scale(.999);
    clip-path: circle(49% at center);
}

.circle > .circle {
    transform: scale(.666) scaleX(-1);
}

.circle::before {
    content: "";
    position: absolute;
    width: 100%;
    height: 100%;
    background: #eee;
    border-radius: 50%;
    animation: swinger 3s linear infinite normal;
    clip: rect(0px, var(--size), calc(var(--size) / 2), calc(var(--size) / 2));
}

.circle.orange {
    background: radial-gradient(circle at 0% 100%, transparent 72%, rgba(187, 64, 1, 0.8) 74%, transparent 83%),
                radial-gradient(circle at 10% 120%, transparent 72%, rgba(187, 64, 1, 0.8) 78%, transparent 86%),
                linear-gradient(to top, #FF7D00, #FB7E01 50%, #FC5200 calc(50% + 1px), #FC5101);
}

.circle.blue {
    background: radial-gradient(circle at 0% 100%, transparent 72%, rgba(8,58,77, 0.8) 74%, transparent 83%),
                radial-gradient(circle at 10% 120%, transparent 72%, rgba(8,58,77, 0.8) 78%, transparent 86%),
                #50A2CA;
}

.circle.purple {
    background: radial-gradient(circle at 0% 100%, transparent 72%, rgba(59,46,67, 0.8) 74%, transparent 83%),
                radial-gradient(circle at 10% 120%, transparent 72%, rgba(59,46,67, 0.8) 78%, transparent 86%),
                #5B4A69;
}

@keyframes swinger {
    from {
        transform: rotate(0);
    }

    to {
        transform: rotate(1turn);
    }
}

        </style>
        <div role="presentation" class="preloader">
            <div class="circle orange">
                <div class="circle blue">
                    <div class="circle purple">
                        <div class="circle"></div>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2016, 19:54
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ScrollTop при overflow: hidden Valdemor Internet Explorer 0 15.08.2013 14:11
Вопрос...все таки про overflow: hidden bayah (X)HTML/CSS 2 14.07.2012 09:31
Overflow hidden + Mouse over tarya jQuery 5 15.12.2011 15:25
Opera - глюки с overflow: hidden zukalo (X)HTML/CSS 7 26.10.2011 21:36
Flash и overflow: hidden x-yuri Flash 4 27.05.2011 09:59