JSFiddle - React, Tailwind, and code Playground

HTML

<div title="2121212121" class="h1-css">http://apo-ucoz.com</div>

CSS

.h1-css {
	color: #000066;
	font-size: 24px;
	margin-bottom: 30px;
	position: relative; /* элемент к которому применяем эффект должен быть блочным и position: relative */
}

.h1-css:after { /* получаем копию оригинального текста в перевернутом виде */
	content: attr(title); /* оказывается в CSS и так можно - извлечь значение атрибута */
	position: absolute; /* отражение позиционируется относительно родителя */
	left: 0;
	top: 100%; /* можно управлять удаленностью отражения. 100% - отражение вплотную */
	width: 100%;
	height: 100%;
	-moz-transform: scaleY(-1); /* много правил для CSS переворота */
	-o-transform: scaleY(-1);
	-webkit-transform: scaleY(-1);
	-ms-transform: scaleY(-1);
	transform: scaleY(-1);
	z-index: 1; /* чтобы отражение можно было перекрыть */
}
.h1-css:before { /* создаем эффект затухания */
	content: "";
	display: block;
	width: 100%;
	height: 80%; /* подбирается в зависимости о того какой процент отражения должен быть виден */
	background:-moz-linear-gradient(top, rgba(255,255,255,0.7), rgba(255,255,255,1)); /* много правил для линейного градиента */
	background: -o-linear-gradient(top, rgba(255,255,255,0.7), rgba(255,255,255,1));
	background: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0.7)), to(rgba(255,255,255,1)));
	position: absolute;
	left: 0;
	top: 110%; /* подбирается в зависимости от необходимого эффекта затухания */
	z-index: 2; / чтобы перекрыть перевернутый текст */
}