• Как написать облако тегов для сайта?

    @UthvfyV
    <script>var radius = 120;
    var dtr = Math.PI/180;
    var d=300;
     
    var mcList = [];
    var active = false;
    var lasta = 1;
    var lastb = 1;
    var distr = true;
    var tspeed=10;
    var size=250;
     
    var mouseX=0;
    var mouseY=0;
     
    var howElliptical=1;
     
    var aA=null;
    var oDiv=null;
     
    window.onload=function ()
    {
    	var i=0;
    	var oTag=null;
    	
    	oDiv=document.getElementById('div1');
    	
    	aA=oDiv.getElementsByTagName('a');
    	
    	for(i=0;i<aA.length;i++)
    	{
    		oTag={};
    		
    		oTag.offsetWidth=aA[i].offsetWidth;
    		oTag.offsetHeight=aA[i].offsetHeight;
    		
    		mcList.push(oTag);
    	}
    	
    	sineCosine( 0,0,0 );
    	
    	positionAll();
    	
    	oDiv.onmouseover=function ()
    	{
    		active=true;
    	};
    	
    	oDiv.onmouseout=function ()
    	{
    		active=false;
    	};
    	
    	oDiv.onmousemove=function (ev)
    	{
    		var oEvent=window.event || ev;
    		
    		mouseX=oEvent.clientX-(oDiv.offsetLeft+oDiv.offsetWidth/2);
    		mouseY=oEvent.clientY-(oDiv.offsetTop+oDiv.offsetHeight/2);
    		
    		mouseX/=5;
    		mouseY/=5;
    	};
    	
    	setInterval(update, 30);
    };
     
    function update()
    {
    	var a;
    	var b;
    	
    	if(active)
    	{
    		a = (-Math.min( Math.max( -mouseY, -size ), size ) / radius ) * tspeed;
    		b = (Math.min( Math.max( -mouseX, -size ), size ) / radius ) * tspeed;
    	}
    	else
    	{
    		a = lasta * 0.98;
    		b = lastb * 0.98;
    	}
    	
    	lasta=a;
    	lastb=b;
    	
    	if(Math.abs(a)<=0.01 && Math.abs(b)<=0.01)
    	{
    		return;
    	}
    	
    	var c=0;
    	sineCosine(a,b,c);
    	for(var j=0;j<mcList.length;j++)
    	{
    		var rx1=mcList[j].cx;
    		var ry1=mcList[j].cy*ca+mcList[j].cz*(-sa);
    		var rz1=mcList[j].cy*sa+mcList[j].cz*ca;
    		
    		var rx2=rx1*cb+rz1*sb;
    		var ry2=ry1;
    		var rz2=rx1*(-sb)+rz1*cb;
    		
    		var rx3=rx2*cc+ry2*(-sc);
    		var ry3=rx2*sc+ry2*cc;
    		var rz3=rz2;
    		
    		mcList[j].cx=rx3;
    		mcList[j].cy=ry3;
    		mcList[j].cz=rz3;
    		
    		per=d/(d+rz3);
    		
    		mcList[j].x=(howElliptical*rx3*per)-(howElliptical*2);
    		mcList[j].y=ry3*per;
    		mcList[j].scale=per;
    		mcList[j].alpha=per;
    		
    		mcList[j].alpha=(mcList[j].alpha-0.6)*(10/6);
    	}
    	
    	doPosition();
    	depthSort();
    }
     
    function depthSort()
    {
    	var i=0;
    	var aTmp=[];
    	
    	for(i=0;i<aA.length;i++)
    	{
    		aTmp.push(aA[i]);
    	}
    	
    	aTmp.sort
    	(
    		function (vItem1, vItem2)
    		{
    			if(vItem1.cz>vItem2.cz)
    			{
    				return -1;
    			}
    			else if(vItem1.cz<vItem2.cz)
    			{
    				return 1;
    			}
    			else
    			{
    				return 0;
    			}
    		}
    	);
    	
    	for(i=0;i<aTmp.length;i++)
    	{
    		aTmp[i].style.zIndex=i;
    	}
    }
     
    function positionAll()
    {
    	var phi=0;
    	var theta=0;
    	var max=mcList.length;
    	var i=0;
    	
    	var aTmp=[];
    	var oFragment=document.createDocumentFragment();
    	
    	// Случайная сортировка
    	for(i=0;i<aA.length;i++)
    	{
    		aTmp.push(aA[i]);
    	}
    	
    	aTmp.sort
    	(
    		function ()
    		{
    			return Math.random()<0.5?1:-1;
    		}
    	);
    	
    	for(i=0;i<aTmp.length;i++)
    	{
    		oFragment.appendChild(aTmp[i]);
    	}
    	
    	oDiv.appendChild(oFragment);
    	
    	for( var i=1; i<max+1; i++){
    		if( distr )
    		{
    			phi = Math.acos(-1+(2*i-1)/max);
    			theta = Math.sqrt(max*Math.PI)*phi;
    		}
    		else
    		{
    			phi = Math.random()*(Math.PI);
    			theta = Math.random()*(2*Math.PI);
    		}
    		 // Преобразование координат
    		mcList[i-1].cx = radius * Math.cos(theta)*Math.sin(phi);
    		mcList[i-1].cy = radius * Math.sin(theta)*Math.sin(phi);
    		mcList[i-1].cz = radius * Math.cos(phi);
    		
    		aA[i-1].style.left=mcList[i-1].cx+oDiv.offsetWidth/2-mcList[i-1].offsetWidth/2+'px';
    		aA[i-1].style.top=mcList[i-1].cy+oDiv.offsetHeight/2-mcList[i-1].offsetHeight/2+'px';
    	}
    }
     
    function doPosition()
    {
    	var l=oDiv.offsetWidth/2;
    	var t=oDiv.offsetHeight/2;
    	for(var i=0;i<mcList.length;i++)
    	{
    		aA[i].style.left=mcList[i].cx+l-mcList[i].offsetWidth/2+'px';
    		aA[i].style.top=mcList[i].cy+t-mcList[i].offsetHeight/2+'px';
    		
    		aA[i].style.fontSize=Math.ceil(12*mcList[i].scale/2)+8+'px';
    		
    		aA[i].style.filter="alpha(opacity="+100*mcList[i].alpha+")";
    		aA[i].style.opacity=mcList[i].alpha;
    	}
    }
     
    function sineCosine( a, b, c)
    {
    	sa = Math.sin(a * dtr);
    	ca = Math.cos(a * dtr);
    	sb = Math.sin(b * dtr);
    	cb = Math.cos(b * dtr);
    	sc = Math.sin(c * dtr);
    	cc = Math.cos(c * dtr);
    }</script>
    <style>#div1 {
    	position:relative;
    	width:450px;
    	height:450px;
    	margin: 20px auto 0;
    }
    #div1 a {
    	position:absolute;
    	top:0px;
    	left:0px;
    	font-family: Microsoft YaHei;
    	color:#fff; 
    	font-weight:bold;
    	text-decoration:none;
    	padding: 3px 6px;
    }
    #div1 a:hover {
    	border: 1px solid #eee;
    	background: #000;
    }
    #div1 .blue {
    	color:blue;
    }
    #div1 .red {
    	color:red;
    }
    #div1 .yellow {
    	color:yellow;
    }
     
    p {
    	font: 16px Microsoft YaHei;
    	text-align: center;
    	color: #ba0c0c;
    }
    p a {
    	font-size: 14px;
    	color: #ba0c0c;
    }
    p a:hover {
    	color: red;
    }</style>
    <div id="div1">
    	 <a href=""> Пример 1 </a>
    	 <a href="" class="red"> Пример два </a>
    	 <a href=""> Пример три </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="red"> Пример </a>
    	 <a href="" class="yellow"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="red"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="red"> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="yellow"> Пример </a>
    	 <a href=""> Пример </a>
    </div>
    Ответ написан
    Комментировать
  • Какой плагин позволяет выводить текст в зависимости от выбранного варианта?

    @UthvfyV
    любой строитель форм. Лучше использовать contact form 7. Устанавливаеш этот плагин и в админке в боковом меню contact form 7 - Контактные формы - вверху - Добавить новую. Ну и добавляеш. Уже будет написан шаблон. Перед текстовым полем будут кнопки, выбираете допустим "в раскрывающемся меню". В нужном месте пишите условие, допустим "Выберите банк" и нажимаете на "в раскрывающемся меню". Одно значение в каждой строчке, вводите на каждую строку по одному
    СБЕР
    ВТБ
    Тинькофф
    Можно разрешить множественный выбор селекторе, т.е. можно указать и ВТБ и
    Тинькофф сразу, или вставить пустой пункт в качестве первого варианта. Указать обязательное поле для заполнения или нет. Можно вставить чекбокс (множественный выбор) или радио кнопки (выбирать или или). Все дела. Для своего текста нажимаете на кнопку "текст". А уже когда эта форма появиться на странице её на модифицировать. В смысле подогнать под стиль самой страницы. Убрать белое поле текстового поля. Чтоб выглядело что никакой формы нет, просто на стр. написан текст. То шо обычно форма представляет собой белое тестовое поле. Можно и без формы. Если надо просто вывести выбор пользователя. Допустим он выбирает Тинькофф чтоб посмотреть инфу о банке. Выбрал Тинькофф. А здесь можно такую штуку сделать чтоб отобразить чего он хочет.
    <script type="text/javascript" src="https://www.03www.ru/jquery.min-no.js"></script>
    
    Выберите банк <select id="select">
    <option value='0'></option>
    <option value='1'>СБЕР</option>
    <option value='2'>ВТБ</option>
    <option value='3'>Тинькофф</option></select><br><br>
    Банк: <span id="desc"></span>
    
    <script>$(document).ready(init);function init(){$('#select').bind('change', desc);}function desc(){var op=$('#select').val();switch (op){
    case '1': $('#desc').text('СБЕР<br>Инфа'); break;
    case '2': $('#desc').text('ВТБ<br>Инфа'); break;
    case '3': $('#desc').text('Тинькофф<br>Инфа'); break;}}</script>

    Так же может пригодиться
    <style>
    li {
    list-style-type: none;
    display: inline-block;
    margin: 0 10px 0 0;
    }
    ul {
    padding: 0;
    }
    .contact input {
    display: inline-block;
    margin: 10px 5px 0 0;
    }</style>
    <script type="text/javascript" src="https://www.03www.ru/jquery.min-no.js"></script>
    
    <ul id="jq"><li>Контакты</li></ul>
    <div class="contact">Введите контактные данные<br>
    <input type="text" id="user_text" size="20" maxlength="50">
    <input type="button" value="Добавить" onclick="addSpisok();"></div>
    
    <script>function addSpisok(){var jq=$('#user_text').val();$('#jq').append('<li>'+jq+'</li>');}</script>

    В принципе и всё. Пробуйте. Если возникнут варианты с публикацией, или вопросы, или ещё чего пишите сюда, как увижу постараюсь ответить. Чтоб последнее, в смысле отобразить чего он хочет, сделать на php тут уже надо знать как это сделать. Если сами то замечательно, а нет, пишите сюда. Так же кстати могу помочь с сайтом.
    Ответ написан
    Комментировать
  • Как получить ближайшие вложенные страницы?

    @UthvfyV
    $config = array(
    'post_parent' => $id ,
    'post_type' => 'page',
    'numberposts' => -1,
    'post_status' => 'publish'
    );
    Вместо 'numberposts' => -1 поствьте к-во записей сколько хотите получить. numberposts(число) - сколько дочерних записей надо получать. -1 — все. По умолчанию стоит -1, тобиш все, что у вас и есть. Вместо -1 поставьте 5 или 10, без минуса. Вот так 'numberposts' => 5, или 'numberposts' => 10,. Что значит получить 5 или 10 стр.
    Ответ написан
    Комментировать
  • Как стилизовать под себя GTranslate dropdown?

    @UthvfyV
    и не будет работать. Потому что основной div GTranslate , только почему ... element2, обычно id="google_translate_element", находится внутри . В стилях и скрипте gtranslate указан путь, к примеру .site или body #google_translate_element, то если стоит припятствие типа gtranslate_wrapper то такого в настройках gtranslate нет, посему ничего отображается не будет, он не напрочь отказывается работать, а просто его вообще фактически нет. Поэтому не испытывайте судьбу а напрямую поставьте gtranslate без всяких nice-select. Если в он должен быть в хидере, в header.php вставьте <?php echo do_shortcode('[gtranslate]'); ?>. Все дела.
    Ответ написан
    Комментировать
  • Как очистить информацию с настроек плагина?

    @UthvfyV
    удалите плагин с селектором выбора языка. А конкретней, если в WeGlot нет возможности поставить селектор то удалите и его если он такой нежный и отзывчивый к другим подобным плагинам. Я никогда не пользовался WeGlot, не в курсе. Если такая ситуация советую 1, удалить как вы выражаетесь дропдаун. Удалить его можно по ftp или на хостинге в файловом менеджере. Откройте папку с сайтом, потом wp-content - plugins, найдите там дропдаун и удалите. Чтобы пользоваться селектором выбора языка, если у вас машинный перевод то установите gtranslate, если мультисайт и вы переводите вручную каждую страницу, поставьте polylang, там есть возможность установить список языков. А для непосредственно перевода поставьте loco translate, он так болезненно не реагирует всякие дробдауны :). Переводить с loco translate легко и просто. Любой разберётся, с любым уровнем. Так же элементарно и с polylang, установил, в настройка всё доступно и понятно написано. Надо искать не в базе данных а в корневой папке сайта по ftp или файловом менеджере. А что, нельзя удалить в админке на стр. со списком плагинов? Такого не может быть.
    Ответ написан
    Комментировать
  • Страницы сайта не попадают в индекс Google несколько месяцев. В чём причина?

    @UthvfyV
    для wordpress есть хороший плагин Plugin by Squirrly SEO. Установите, для каждой страницы, записи укажите описание, title и т.д. Можно выбрать ключевые слова, плагин подберёт по вашему запросу подходящие ключевые слова, которые ранжируются в google, яндекс и пр. Настройте карту сайта, файл robots.txt. Плагин сео всё в одном, это подножка для разработчиков, там в основном все функции платные. Не советую. А при использовании Squirrly SEO можно выйти на первые места в выдаче результатов поиска. Там есть функция сразу все записи и стр. отправить поисковым системам для сканирования. Не ждать пока просканируют, а предложить напрямую гуглу свои страницы, сканирование начнётся в течение дня, 2. Грубо говоря навязать, напрямую. Есть возможность автоматом оптимизировать сео, плагин сам добавит и title и описание, и мета, и пр. Ничего делать не надо. Нажать на кнопу сео автоматически. Все дела. Если вы думаете что регистрации в яндекс вебмастере или google search console хватит чтоб быть а поиске, то вы глубоко ошибаетесь. Надо плагин сео ставить, сделать и загрузить поисковикам карту сайта и т.д. В принципе чтоб гугл просканировал сайт вполне хватит регистрации, но чтоб выйти хотя бы в 10-20, пусть даже сотню, это как минимум, то надо потрудиться. Причём в Squirrly всё подробно описано что и как делать. Всё разложено по полочкам, прожёвано и в рот положено. Разберётся и ребёнок. Советую не игнорировать мой ответ. А хотя бы посмотреть что это такое. При помощи Squirrly я вывожу сайты в топ 10. Попробуйте, не пожалеете.
    Ответ написан
    Комментировать
  • Как при наведении на один объект изменять стиль другого?

    @UthvfyV
    .block1:hover .block2 {
        display: inline;
      }
    Ответ написан
    Комментировать
  • Как сделать перемещение блока от движения мыши?

    @UthvfyV
    ищите в интернете свойства animation
    Ответ написан
    Комментировать
  • Почему не отображается блок 'title_reply_to' в файле сomments.php?

    @UthvfyV
    Если это страница то в свойствах попробуйте отметить галкой "Разрешить комментарии" Если это запись то в свойствах так же отметьте галкой "Разрешить комментарии"
    "Разрешить отклики". Так же проверьте, отмечены ли поля в "Настройки" - "Обсуждение", "Разрешить оставлять комментарии к новым записям" и " Разрешить древовидные (вложенные) комментарии глубиной". И вообще, проверьте правильность настроек на станице "Настройки обсуждения". А в коде искать причину надо только в том случае если его меняли. Если нет, то дело в настройках.
    Ответ написан
    Комментировать
  • Как сделать мультиязычность мультисайта WP?

    @UthvfyV
    для мультиязычного сайта есть такой плагин Polylang. Для каждого языка своя страница или запись. Если не хотите ставить автоматический перевод, тогда воспользуйтесь Polylang. В хидере, в верху, будет перечень языков. Для каждого языка будет свой url, допустим для английского https: //ваш домен/en/ ..., для русского https: //ваш домен/ru/ ... и т.д. В этом случае надо переводить все страницы и записи вручную. Это очень кропотливый труд. Тем более если страниц и записей много.
    Ответ написан
    Комментировать
  • Как лучше сделать обработку формы и пренаправление на разные страницы?

    @UthvfyV
    1)Обработка формы на этой странице Обосновую. Для чего была создана форма? Для каких-то целей. Зачем делать ненужное перенаправление если есть форма для выполнения этого действия. Зачем засорять сайт лишним кодом? Чтоб медленее грузился? Тогда если есть такое желание делайте перенаправление.
    Ответ написан
    Комментировать
  • Как закрыть модальное окно после успешной отправки cf7?

    @UthvfyV
    что эта функция делает? Ответ. Она ничего не делает, т.к. ничего не возвращает. Это пустая функция. Так функция не пишется. Напишите так.
    function custom_cf7_script() {
    $content = "<script>document.addEventListener('wpcf7mailsent', function(event) {// Проверяем, что форма отправлена успешно 
    if ('ac0b387' == event.detail.contactFormId) {// Ждем 5 секунд и закрываем модальное окно 
    setTimeout(function() {// Закрываем модальное окно 
    jQuery.modal.close();}, 5000);}}, false);</script>";
    return $content;
    }
    add_action('wp_footer', 'custom_cf7_script');

    Что указано в <a href="#" rel="modal:close">Close</a> чтобы закрыть мод. окно? rel="modal:close"? Вы смотрели что нужно для этого выполнения? Вероятно правильно написанная функция. Для верности попробуйте написать так.
    <a onclick="custom_cf7_script();" href="#" rel="modal:close">Close</a>
    , тогда по идее окно должно закрыться после нажатия на Close через 5 сек. И ещё. Эта функция должна быть прописана в файле function.php, если это не так, то пропишите её в этом файле, который находится в корневой папке ваше темы. Но я думаю что функция в function.php, если нет то исправьте это. Этот так, на всякий случай, для верности. И ещё для большей уверенности допишите в конце
    add_action('wp_footer', 'custom_cf7_script');
    add_shortcode('cf7close', 'custom_cf7_script');

    Тем самым вы создали шорткод для закрытия мод. окна. Откройте админку, потом в боковом меню "Contact Form 7 " - "Контактные формы", найдите вашу форму, нажмите на название, и в редакторе самой формы вставьте в самый низ [cf7close], после [submit "Отправить"] Т.е. это будет выглядеть так
    [submit "Отправить"] 
    [cf7close]
    Тогда по идее после нажатия на а мод. окно должно закрыться.
    Ответ написан
    Комментировать
  • Как настроить обновление карты сайта?

    @UthvfyV
    какой плагин или модуль формирует карту сайта? Ищите ответ в его настройках.
    Ответ написан
    Комментировать
  • Вопрос по JS-задаче(перемещение элемента)?

    @UthvfyV
    css
    #field {
    width: 200px;
    height: 150px;
    border: 10px solid black;
    background-color: #51DB42;
    position: relative;
    overflow: hidden;
    cursor: pointer;
    }
    #ball {
    position: absolute;
    left: 0;
    top: 0;
    width: 40px;
    height: 40px;
    transition: all 1s;
    }

    html
    <div id="field"><img src="https://freesvg.org/img/soccer_ball2.png" id="ball" style="left: 149px; top: 65px;"></div>

    script
    field.onclick = function(event) {
    // координаты поля
    let fieldCoords = this.getBoundingClientRect();
    // мяч имеет абсолютное значение, поле - относительное (relative) таким образом координаты мяча рассчитываются относительно внутреннего верхнего левого угла поля
    let ballCoords = {top: event.clientY - fieldCoords.top - field.clientTop - ball.clientHeight / 2, left: event.clientX - fieldCoords.left - field.clientLeft - ball.clientWidth / 2 };
    // запрещаем пересекать верхнюю границу поля
    if (ballCoords.top < 0) ballCoords.top = 0;
    // запрещаем пересекать левую границу поля
    if (ballCoords.left < 0) ballCoords.left = 0;
    // запрещаем пересекать правую границу поля
    if (ballCoords.left + ball.clientWidth > field.clientWidth) {ballCoords.left = field.clientWidth - ball.clientWidth;}
    // запрещаем пересекать нижнюю границу поля
    if (ballCoords.top + ball.clientHeight > field.clientHeight) {ballCoords.top = field.clientHeight - ball.clientHeight;}
    ball.style.left = ballCoords.left + 'px';
    ball.style.top = ballCoords.top + 'px';}
    Ответ написан
    Комментировать
  • Почему не подключаются шрифты?

    @UthvfyV
    укажите полный путь к файлу начиная от корневой папки. И не woff а ttf. И ещё я заметил одну странную вещь. Если допустим я скачал шрифт. Файл ttf был в папке с другими форматами, и там ещё может быть файл redme, ещё что-нибудь. То если я это всё убираю и копирую файл общую папку font то шрифт не работает. Если же я оставляю всё содержимое скаченной папки, и прописываю к файлу в папке полный путь то всё хорошо. Пробуйте.
    Ответ написан
    Комментировать
  • Не работают стили css, все подключено, в чем дело?

    @UthvfyV
    пропишите полный путь к файлу styles.css
    Ответ написан
    Комментировать
  • Как вообще адаптируют Dashboard в дизайне?

    @UthvfyV
    в адаптивной вёрстке меняют стили не для десктопа, планшета, и моб. версии а для всех размеров начиная от допустим 1450px и кончая 150-200px. Чтобы увидеть как выглядит ваш сайт при других размерах экрана (а это и есть десктоп, планшет, и моб. версии) кликните правой кнопкой по любому месту на странице. Если хром то внизу "Посмотреть код", если мазила то так же внизу "Исследовать". И нажмите куда указывает стрелка на скрине. И подвигайте серую полосу справа. И вы увидите как выглядит ваш сайт на др. устройствах.656d7c3580b94585210040.png
    Ответ написан
    Комментировать
  • Как сверстать такой заголовок?

    @UthvfyV
    .hero {
    background-color: #f7f7f8;
    margin-right: 10px;
    }
    h1 p {
    width: 100%;
    }

    <h1><p><span class="hero">Unlock</span> Your Creative Potential</span><p>
    <p>with Online Design and Development Courses.<p></h1>
    Ответ написан
    Комментировать
  • Как сверстать блок облако тегов?

    @UthvfyV
    <script>var radius = 120;
    var dtr = Math.PI/180;
    var d=300;
     
    var mcList = [];
    var active = false;
    var lasta = 1;
    var lastb = 1;
    var distr = true;
    var tspeed=10;
    var size=250;
     
    var mouseX=0;
    var mouseY=0;
     
    var howElliptical=1;
     
    var aA=null;
    var oDiv=null;
     
    window.onload=function ()
    {
    	var i=0;
    	var oTag=null;
    	
    	oDiv=document.getElementById('div1');
    	
    	aA=oDiv.getElementsByTagName('a');
    	
    	for(i=0;i<aA.length;i++)
    	{
    		oTag={};
    		
    		oTag.offsetWidth=aA[i].offsetWidth;
    		oTag.offsetHeight=aA[i].offsetHeight;
    		
    		mcList.push(oTag);
    	}
    	
    	sineCosine( 0,0,0 );
    	
    	positionAll();
    	
    	oDiv.onmouseover=function ()
    	{
    		active=true;
    	};
    	
    	oDiv.onmouseout=function ()
    	{
    		active=false;
    	};
    	
    	oDiv.onmousemove=function (ev)
    	{
    		var oEvent=window.event || ev;
    		
    		mouseX=oEvent.clientX-(oDiv.offsetLeft+oDiv.offsetWidth/2);
    		mouseY=oEvent.clientY-(oDiv.offsetTop+oDiv.offsetHeight/2);
    		
    		mouseX/=5;
    		mouseY/=5;
    	};
    	
    	setInterval(update, 30);
    };
     
    function update()
    {
    	var a;
    	var b;
    	
    	if(active)
    	{
    		a = (-Math.min( Math.max( -mouseY, -size ), size ) / radius ) * tspeed;
    		b = (Math.min( Math.max( -mouseX, -size ), size ) / radius ) * tspeed;
    	}
    	else
    	{
    		a = lasta * 0.98;
    		b = lastb * 0.98;
    	}
    	
    	lasta=a;
    	lastb=b;
    	
    	if(Math.abs(a)<=0.01 && Math.abs(b)<=0.01)
    	{
    		return;
    	}
    	
    	var c=0;
    	sineCosine(a,b,c);
    	for(var j=0;j<mcList.length;j++)
    	{
    		var rx1=mcList[j].cx;
    		var ry1=mcList[j].cy*ca+mcList[j].cz*(-sa);
    		var rz1=mcList[j].cy*sa+mcList[j].cz*ca;
    		
    		var rx2=rx1*cb+rz1*sb;
    		var ry2=ry1;
    		var rz2=rx1*(-sb)+rz1*cb;
    		
    		var rx3=rx2*cc+ry2*(-sc);
    		var ry3=rx2*sc+ry2*cc;
    		var rz3=rz2;
    		
    		mcList[j].cx=rx3;
    		mcList[j].cy=ry3;
    		mcList[j].cz=rz3;
    		
    		per=d/(d+rz3);
    		
    		mcList[j].x=(howElliptical*rx3*per)-(howElliptical*2);
    		mcList[j].y=ry3*per;
    		mcList[j].scale=per;
    		mcList[j].alpha=per;
    		
    		mcList[j].alpha=(mcList[j].alpha-0.6)*(10/6);
    	}
    	
    	doPosition();
    	depthSort();
    }
     
    function depthSort()
    {
    	var i=0;
    	var aTmp=[];
    	
    	for(i=0;i<aA.length;i++)
    	{
    		aTmp.push(aA[i]);
    	}
    	
    	aTmp.sort
    	(
    		function (vItem1, vItem2)
    		{
    			if(vItem1.cz>vItem2.cz)
    			{
    				return -1;
    			}
    			else if(vItem1.cz<vItem2.cz)
    			{
    				return 1;
    			}
    			else
    			{
    				return 0;
    			}
    		}
    	);
    	
    	for(i=0;i<aTmp.length;i++)
    	{
    		aTmp[i].style.zIndex=i;
    	}
    }
     
    function positionAll()
    {
    	var phi=0;
    	var theta=0;
    	var max=mcList.length;
    	var i=0;
    	
    	var aTmp=[];
    	var oFragment=document.createDocumentFragment();
    	
    	// Случайная сортировка
    	for(i=0;i<aA.length;i++)
    	{
    		aTmp.push(aA[i]);
    	}
    	
    	aTmp.sort
    	(
    		function ()
    		{
    			return Math.random()<0.5?1:-1;
    		}
    	);
    	
    	for(i=0;i<aTmp.length;i++)
    	{
    		oFragment.appendChild(aTmp[i]);
    	}
    	
    	oDiv.appendChild(oFragment);
    	
    	for( var i=1; i<max+1; i++){
    		if( distr )
    		{
    			phi = Math.acos(-1+(2*i-1)/max);
    			theta = Math.sqrt(max*Math.PI)*phi;
    		}
    		else
    		{
    			phi = Math.random()*(Math.PI);
    			theta = Math.random()*(2*Math.PI);
    		}
    		 // Преобразование координат
    		mcList[i-1].cx = radius * Math.cos(theta)*Math.sin(phi);
    		mcList[i-1].cy = radius * Math.sin(theta)*Math.sin(phi);
    		mcList[i-1].cz = radius * Math.cos(phi);
    		
    		aA[i-1].style.left=mcList[i-1].cx+oDiv.offsetWidth/2-mcList[i-1].offsetWidth/2+'px';
    		aA[i-1].style.top=mcList[i-1].cy+oDiv.offsetHeight/2-mcList[i-1].offsetHeight/2+'px';
    	}
    }
     
    function doPosition()
    {
    	var l=oDiv.offsetWidth/2;
    	var t=oDiv.offsetHeight/2;
    	for(var i=0;i<mcList.length;i++)
    	{
    		aA[i].style.left=mcList[i].cx+l-mcList[i].offsetWidth/2+'px';
    		aA[i].style.top=mcList[i].cy+t-mcList[i].offsetHeight/2+'px';
    		
    		aA[i].style.fontSize=Math.ceil(12*mcList[i].scale/2)+8+'px';
    		
    		aA[i].style.filter="alpha(opacity="+100*mcList[i].alpha+")";
    		aA[i].style.opacity=mcList[i].alpha;
    	}
    }
     
    function sineCosine( a, b, c)
    {
    	sa = Math.sin(a * dtr);
    	ca = Math.cos(a * dtr);
    	sb = Math.sin(b * dtr);
    	cb = Math.cos(b * dtr);
    	sc = Math.sin(c * dtr);
    	cc = Math.cos(c * dtr);
    }</script>

    <style>#div1 {
    	position:relative;
    	width:450px;
    	height:450px;
    	margin: 20px auto 0;
    }
    #div1 a {
    	position:absolute;
    	top:0px;
    	left:0px;
    	font-family: Microsoft YaHei;
    	color:#fff; 
    	font-weight:bold;
    	text-decoration:none;
    	padding: 3px 6px;
    }
    #div1 a:hover {
    	border: 1px solid #eee;
    	background: #000;
    }
    #div1 .blue {
    	color:blue;
    }
    #div1 .red {
    	color:red;
    }
    #div1 .yellow {
    	color:yellow;
    }
     
    p {
    	font: 16px Microsoft YaHei;
    	text-align: center;
    	color: #ba0c0c;
    }
    p a {
    	font-size: 14px;
    	color: #ba0c0c;
    }
    p a:hover {
    	color: red;
    }</style>

    <div id="div1">
    	 <a href=""> Пример 1 </a>
    	 <a href="" class="red"> Пример два </a>
    	 <a href=""> Пример три </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="red"> Пример </a>
    	 <a href="" class="yellow"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="red"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="red"> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="blue"> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href=""> Пример </a>
    	 <a href="" class="yellow"> Пример </a>
    	 <a href=""> Пример </a>
    </div>
    Ответ написан
    Комментировать
  • Как сделать чтобы модальное окно не сдвигало блок position:fixed?

    @UthvfyV
    body.modal-open header {
        overflow: hidden;
    position: relative;
        padding-right: 17px !important;
    }

    пока существует класс у body modal-open header будет с этими параметрами. Уберётся класс всё вернётся как было.
    Ответ написан
    Комментировать