li.has-sub > a:focus + ul{
display:block;
}
только с a href уберите ссылку, иначе вместо открытия будет переход на др страницу.
как вариант - глушить при помощи Js onClick="return false;"
апд
если вы хотите, чтободин клик открывал меню, а второй - переход, то это без сурового джи эса не обойтись.
апд2 la belle с точки зрения итальянского языка является ошибкой la - это неопределенный артикль для женского рода в единственном числе belle -означает красивые (множественное число женского рода -- оканчивается на е ) то-есть налицо несогласование артикля и прилагательного правильно было бы le belle извините, только с лекции по итальянскому приехал
мне вообще не понятна вот эта конструкция
setTimeout(function () { ul.height(ul.height()); ulWrap.height(ulWrap.height()); }, 1);
От таких конструкций вообще надо отказываться в пользу
$(window).bind('load',function(){
});
отличие window.load от document.ready состоит в том, что последняя срабатывает после построения дерева, а первая после построения дерева dom и рендера изображений.
2 ТС
AJAX решение
JS
<script type="text/javascript"> $(document).ready(function(){ /* ** Очистка формы */ function cleanCallForm() { $('form input[type="text"]').val(''); $('form input[type="email"]').val(''); $('form input[type="phone"]').val(''); $('form textarea').val(''); } /* ** Обработчик передачи и приема */ function sendCallForm() { var formData = $('form').serialize(); $.ajax({ url: '/json/callForm.php', /* <-- адрес к обработчику */ type: 'POST', data: formData, /* -transmit succes - */ success: function(data, textStatus, jqXHR) { /* -transmit succes data error - */ if (data.status == 'error') { alert(data.errors); } /* -transmit succes data succes - */ if (data.status == 'ok') { alert('Спасибо за ваше сообщение.'); cleanCallForm(); } }, /* - transmit error - */ error: function(jqXHR, textStatus, errorThrown) { alert('Ой, кажется что-то пошло не так! Произошла ошибка :' + '<b>' + jqXHR.status+':'+jqXHR.statusText +'</b><br/> Обратитесь к администраторам с информацие об ошибке. Они вам помогут'); } }); } <!-- // --> /* submit action */ $('form').bind('submit',function(e){ sendCallForm(); return false; }); }) </script>
Серверная часть
выдача ответа
<?php $content_error = array('status'=>'error','errors'=>'описание ошибки'); $content_ok = array('status'=>'ok'); header("Content-type: application/json"); print json_encode($content_ok); // или // print json_encode($content_error);
Подозреваю, что для ТС (который плавает в таких простых вещах как редирект и get/post) Аякс и прочий джейсон, будет языком планеты Нибиру.
...
хотя, имхо, аякс был бы просто идеальным решением этой проблемы
Это не совсем так, например алгоритм JPEG заведомо делает выходные данные отличные от входных.
Скажем так, если мы возьмем какой-нибудь EXE-шник и преобразуем его в картинку, то, сохранив получившиеся изображение в PNG/BMP мы сможем потом из изображения восстановить запускаемый файл, а если мы сохраним это в JPEG, то восстановить запускаемый файл у нас не получится. В этом и есть отличие JPEG алгоритма от всех остальных.
Он не сохраняет точные данные, он сохраняет похожие данные
Про АЦП-ЦАП это уже отдельный разговор, который в этом топике не обсуждается.
Скажем так. Даже при передаче аналогового сигнала по проводам уже происходят потери и уровень сигнала на входе != уровню сигнала на выходе, плюс наводки и т.д. Поэтому при квантовании, как и при передаче сигнала, всегда учитывается определенный уровень потерь и допусков
Так что мы тут говорим все-таки о определенном приближении.
Например 8битный преобразователь с частотой выборок 8кгц даст куда худшие показатели чем 24бита@96кгц. последний, при определенном допуске и для определенных условий можно назвать "неотличимым от оригинала"
Существует еще один вариант АЦП преобразования 1(2) бита на, допустим, 8 мегагерцах.
такой вид преобразования возвращает не сигму, а дельту, то-есть он просто показывает в какую сторону изменяется сигнал. А так как частота квантования у нас очень высокая, то и верность преобразования аналогового сигнала повышается.---------- Добавлено 07.02.2018 в 13:14 ----------На счет рисков невосстановить.
простой пример. как работает , допустим, старый добрый PCX алгоритм (LZW работает примерно по такому же принципу, но в двух направлениях)
у нас есть строка данных
FF FF FF FF FF FF FF FF FF FF FF FF
то для сжатия мы можем ее сохранить в виде
0B FF, что в переводе на русский означает "12 раз повторить FF цвет"
И вот если вместо 0B попадется допустим 1B, то изображение будет полностью разрушено. Без какой либо возможности восстановления.
для этого и начинают городить контрольные суммы, кадры и т.д.
А они таки одинаковые, по контенту. "вся разница в волшебных пузырьках"
если вы откроете мой архивчик, то там есть два файла, сохраненных в png из ирфана
первый - 120кб, второй 69кб,
с исходником разницы нет.
imageMagick говорит, что и там и там сжатие ZIP алгоритмом.
(он умеет детектить следующие алгоритмы сжатия: 'NO COMPRESSION','BZIP', 'DXT1', 'DXT3', 'DXT5', 'FAX', 'GROUP4', 'JPEG', 'JPEG2000', 'LOSSLESSJPEG', 'LZW', 'RLE', 'ZIP')
просто разница в степени сжатия (это как зипом упаковать без компрессии и с максимальной компрессией)
кстати, 120к на картинке в 40 000 пикселей говорит, что это сжато действительно почти без компрессии, ибо 40х3 и есть 120,
Опкэш штука хорошая.
а вообще, сам по себе пых интересно работает, начиная с 5.2
он прекомпилирует код и хранит его в виде бинарника в памяти (при условии, конечно, что он установлен как модуль для апача)
Поэтому и скорость выполнения кода резко увеличивается. но достаточно просто пересохранить один из файлов, входящих в проект, как все кэши сбрасываются.
то-есть это не ваш случай, а просто, когда-то эксперименты проводили
альфа версия готова:
http://equal.silicoid.ru
+ Исправил ошибки увеличил скорость,
+ добавил определение метода сжатия
+ добавил определение качества сжатия (для jpeg)
+ добавил чтение доп. информации из изображения
как пользоваться
https://screenshots.firefox.com/b1C5m3gUyeqXgmm1/equal.silicoid.ru
1. в форме добавляете исходное (эталонное) изображение и изображение которое вы сравниваете
давите "сравнить"
2. получаете что-то вроде этого
https://screenshots.firefox.com/bC1tJYroeuyADSno/equal.silicoid.ru
если будут какие-либо вопросы. спрашивайте
да. вот еще что.
установлены некоторые ограничения.
размер картинки для тестирование не более 256х256 и 512к
Архив с картинками для "поиграться" можно взять отсюда
equal.silicoid.ru/files/samples.zip
[DEL]
Написал скриптец, который сравнивает изображения, но пока писал подводку, придумал, как ускорить его раз в 20.
выложу завтра
>> Строго говоря, это не совсем без потерь, так как оригинальный файл из обрезанного восстановить нельзя.**
это был про тот случай разговор, когда в png заливается все что нужно и не нужно, например цветовые профили, служебная информация энкодера, а некоторые проги, например macromedia fireworks умудрялась там еще и векторные куски держать.
то-есть, на иконках, например, было композитное изображение и овер 100 различных кусочков, из которых это композитное изображение получалось.
Разумеется, при сжатии/перепаковке, можно выкинуть эти исходники и служебную информацию к едрене фене и жукам майским, при этом не потеряв картинки (так как композит никто никуда не девает).
будет ли это сжатием без потерь?
Нет, не будет, так как невозможно восстановить исходное векторное изображение, но при этом, сам композит останется без изменений. что было на входе. то будет и на выходе.