После transform элемент размытый

76
12 февраля 2022, 20:30

Почему буква C размытая? Я пытаюсь это адаптировать под разные размеры текста, при --spanNum: 2rem можно заметить, что буква C становится размытым

let openSpan = document.querySelectorAll('.openSpan'); 
 
for (let i = 0; i < openSpan.length; i++) { 
    openSpan[i].addEventListener('click', () => { 
        openSpan[i].classList.toggle('active'); 
    }); 
}
.service-block__card { 
	background-color: white; 
	display: -moz-flex; 
	display: -ms-flex; 
	display: -o-flex; 
	display: -webkit-box; 
	display: -ms-flexbox; 
	display: -webkit-flex; 
	display: -moz-box; 
	display: flex; 
	-webkit-box-orient: vertical; 
	-webkit-box-direction: normal; 
	    -ms-flex-direction: column; 
	        -webkit-flex-direction: column; 
	           -moz-box-orient: vertical; 
	           -moz-box-direction: normal; 
	        flex-direction: column; 
	max-width: 500px; 
	margin: 10px auto 0; 
	padding: 10px; 
	-webkit-box-align: center; 
	    -ms-flex-align: center; 
	        -webkit-align-items: center; 
	           -moz-box-align: center; 
	        align-items: center; 
	-webkit-transition: all .2s linear; 
	-o-transition: all .2s linear; 
	-moz-transition: all .2s linear; 
	transition: all .2s linear; 
} 
 
.service-block__card-text { 
	display: -moz-flex; 
	display: -ms-flex; 
	display: -o-flex; 
	display: -webkit-box; 
	display: -ms-flexbox; 
	display: -webkit-flex; 
	display: -moz-box; 
	display: flex; 
	-webkit-box-orient: vertical; 
	-webkit-box-direction: normal; 
	    -ms-flex-direction: column; 
	        -webkit-flex-direction: column; 
	           -moz-box-orient: vertical; 
	           -moz-box-direction: normal; 
	        flex-direction: column; 
	overflow: hidden; 
} 
 
.hide__text { 
	overflow: hidden; 
	-webkit-transition: all .4s linear; 
	-o-transition: all .4s linear; 
	-moz-transition: all .4s linear; 
	transition: all .4s linear; 
} 
 
.service-block__card-open { 
	color: black; 
	font-weight: bold; 
	margin: 10px auto; 
	font-size: 20px; 
	cursor: pointer; 
	-moz-user-select: none; 
	-webkit-user-select: none; 
	    -ms-user-select: none; 
	        user-select: none;   
	display: block; 
} 
 
:root { 
	--atf: cubic-bezier(.58,-0.71,.41,1.55); 
	--spanNum: 2rem; 
	--spanNumTopB: -webkit-calc(-1 * ( var(--spanNum)*1.2 ) ); 
	--spanNumTopB: -moz-calc(-1 * ( var(--spanNum)*1.2 ) ); 
	--spanNumTopB: calc(-1 * ( var(--spanNum)*1.2 ) ); 
	--spanNumLeftB: -webkit-calc( -1 * ( (var(--spanNum)*11)/160 ) ); 
	--spanNumLeftB: -moz-calc( -1 * ( (var(--spanNum)*11)/160 ) ); 
	--spanNumLeftB: calc( -1 * ( (var(--spanNum)*11)/160 ) ); 
	--spanNumSec: 1s; 
} 
 
.openSpan { 
	display: -webkit-box; 
	display: -ms-flexbox; 
	display: -webkit-flex; 
	display: -moz-box; 
	display: flex; 
	font-size: var(--spanNum); 
	font-family: sans-serif; 
	font-weight: bold; 
	text-transform: uppercase; 
	-webkit-perspective: 1000px; 
	        -moz-perspective: 1000px; 
	     perspective: 1000px; 
	-moz-user-select: none; 
	-webkit-user-select: none; 
	    -ms-user-select: none; 
	        user-select: none; 
	cursor: pointer; 
	max-height: var(--spanNum); 
} 
 
.openSpan .ab { 
	position: relative; 
	-webkit-transform-style: preserve-3d; 
	        -moz-transform-style: preserve-3d; 
	     transform-style: preserve-3d; 
	-webkit-transition: var(--spanNumSec) var(--atf) transform; 
	-o-transition: var(--spanNumSec) var(--atf) transform; 
	-moz-transition: var(--spanNumSec) var(--atf) transform; 
	transition: var(--spanNumSec) var(--atf) transform; 
} 
 
.openSpan .ab > div { 
	width: 100%; 
	-webkit-backface-visibility: hidden; 
	        -moz-backface-visibility: hidden; 
	     backface-visibility: hidden; 
	text-align: end; 
} 
 
.openSpan .b { 
	margin-top: var(--spanNumTopB); 
	margin-left: var(--spanNumLeftB); 
	-webkit-transform: rotateX(180deg) rotateZ(90deg); 
	        -moz-transform: rotateX(180deg) rotateZ(90deg); 
	     transform: rotateX(180deg) rotateZ(90deg); 
} 
 
.openSpan .c { 
	-webkit-transition: var(--spanNumSec) var(--atf) transform; 
	-o-transition: var(--spanNumSec) var(--atf) transform; 
	-moz-transition: var(--spanNumSec) var(--atf) transform; 
	transition: var(--spanNumSec) var(--atf) transform; 
} 
 
.openSpan.active .ab{ 
	-webkit-transform: rotateX(180deg) rotateZ(90deg); 
	        -moz-transform: rotateX(180deg) rotateZ(90deg); 
	     transform: rotateX(180deg) rotateZ(90deg); 
} 
 
.openSpan.active .c { 
	-webkit-transform: rotateX(-360deg); 
	        -moz-transform: rotateX(-360deg); 
	     transform: rotateX(-360deg); 
}
<span class="openSpan"> 
	<div class="ab"> 
		<div class="a">Раз</div> 
		<div class="b">С</div> 
	</div> 
	<div class="c">вернуть</div> 
</span>

Answer 1

Как вариант, можно использовать zoom

PS При зуме видно, что размер шрифта буквы становится чуть меньше. Поэтому можно добавить font-size, немного увеличив размер шрифта. Таким образом подогнать его под нужный нам размер и устранить эту неприятность. :)

let openSpan = document.querySelectorAll('.openSpan'); 
 
for (let i = 0; i < openSpan.length; i++) { 
    openSpan[i].addEventListener('click', () => { 
        openSpan[i].classList.toggle('active'); 
    }); 
}
:root { 
	--atf: cubic-bezier(.58,-0.71,.41,1.55); 
	--spanNum: 2rem; 
	--spanNumTopB: calc(-1 * ( var(--spanNum)*1.2 ) ); 
	--spanNumLeftB: calc( -1 * ( (var(--spanNum)*11)/160 ) ); 
	--spanNumSec: 1s; 
} 
 
.openSpan { 
	display: flex; 
	font-size: var(--spanNum); 
	font-family: sans-serif; 
	font-weight: bold; 
	text-transform: uppercase; 
	perspective: 1000px; 
	-moz-user-select: none; 
	user-select: none; 
	cursor: pointer; 
	max-height: var(--spanNum); 
} 
 
.openSpan .ab { 
	position: relative; 
	transform-style: preserve-3d; 
	transition: var(--spanNumSec) var(--atf) transform; 
} 
 
.openSpan .ab > div { 
	width: 100%; 
	backface-visibility: hidden; 
	text-align: end; 
} 
 
.openSpan .b { 
	margin-top: var(--spanNumTopB); 
	margin-left: var(--spanNumLeftB); 
	transform: rotateX(180deg) rotateZ(90deg); 
   
  zoom: 98%; 
  font-size: 2.08rem; 
} 
 
.openSpan .c { 
	transition: var(--spanNumSec) var(--atf) transform; 
} 
 
.openSpan.active .ab{ 
	transform: rotateX(180deg) rotateZ(90deg); 
} 
 
.openSpan.active .c { 
	transform: rotateX(-360deg); 
}
<span class="openSpan"> 
	<div class="ab"> 
		<div class="a">Раз</div> 
		<div class="b">С</div> 
	</div> 
	<div class="c">вернуть</div> 
</span>

READ ALSO
Php Mysql Составить запрос

Php Mysql Составить запрос

всем привет! У меня стоит opencart 23 Когда я захожу в аккаунт в таблице oc_customer есть столбец number с числом например 5 если отдельно вписать

105
Как получить $_GET параметр?

Как получить $_GET параметр?

Есть 2 запроса, один вставляет добавляет комментарий к записям, другой выводит их, каждой записи свои комменты

159
Как перебрать массив из JSON Объектов? php, laravel

Как перебрать массив из JSON Объектов? php, laravel

Опишу подробнее - делаю галерею с загрузкой нескольких изображений на Laravel - у меня в таблице с товарами есть поле - file, в котором я записываю...

132
Не могу настроить php окружение

Не могу настроить php окружение

Ребят, я сразу признаюсь я чайник, я верстальщик, хочу разобраться как мне сделать загрузку php файлов локально, я делаю корпоративный сайт,...

152