Kolyaj

Kolyaj
Рейтинг
69
Регистрация
28.03.2006
topol:
ПАТАМУЧТА ЭТА НЕ ФУНКЦИЯ! турист

Вы имеете в виду, что набор точек не функция? Хм. А что по-вашему функция? Вот это


-1, если x < 0
f(x) = 0, если x - четно
1, если x - нечетно

по-вашему функция?
a.fatman:
Такой вариант я предрочитаю решать промежуточной страницей со ссылками на подразделы.

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

a.fatman:
Я не пропагандирую, а просто привожу красивые примеры кода.

Просто только вы в этой теме ссылки эти даете, вот и сделал к вам обращение, обращался разумеется ко всем. Код, согласен, красивый получается. Просто сделал попытку разобрать данные меню с точки зрения юзабилити.

a.fatman, такие CSS-меню, работающие по принципу hover вообще зло.

Во-первых, среднестатический пользователь (и уж тем более опытный) не ожидает выпадения меню при наведении на ссылку. Он привык кликать как по ссылке, так и по элементу меню. И чаще даже не успевает заметить подпункты, т.к. уже кликнул. Эта проблема решается отменой клика (для чего опять же нужен JavaScript), но не полностью, дискомфорт все равно остается.

Во-вторых, наиболее существенная проблема - пропадание меню при отведении указателя мыши. Это не может оправдаться никакими доводами. Нельзя заставлять пользователя ходить мышкой по меню, как по лабиринту. Данное поведение допустимо для тултипов, но никак не для меню.

Вывод (ИМХО разумеется): CSS-меню - это красиво и элегантно (код имеется в виду), но не более того. Использование его (по крайней мере для сложных меню) - это как минимум неуважение к пользователю.

Я так понимаю, вам надо список получить, чтобы из страницы не выдирать. На http://seanalyzer.ru/ есть скриптик "Анализ выдачи яндекса",там есть функция экспорта выдачи в формате CSV.

Подробный код давать не буду, лень. Суть такая. Имеется двухуровневое меню, его в лучших традициях оформляем в список


<ul id="menu">
<li><a href="#">Пункт 1</a>
<ul>
<li><a href="#">Пункт 1.1</a></li>
<li><a href="#">Пункт 1.2</a></li>
<li><a href="#">Пункт 1.3</a></li>
</ul>
</li>
<li><a href="#">Пункт 2</a>
<ul>
<li><a href="#">Пункт 2.1</a></li>
<li><a href="#">Пункт 2.2</a></li>
<li><a href="#">Пункт 2.3</a></li>
</ul>
</li>
<li><a href="#">Пункт 3</a>
<ul>
<li><a href="#">Пункт 3.1</a></li>
<li><a href="#">Пункт 3.2</a></li>
<li><a href="#">Пункт 3.3</a></li>
</ul>
</li>
</ul>

Стилями делаем его красивым. После этого добавляем скрипт который скрывает элементы второго уровня, а при клике на пункты первого уровня скрывает/показывает подпункты.


(function(menu_id) {
var menu = document.getElementById(menu_id);
var items = menu.childNodes;
for (var i = 0; i < items.length; i++) {
if (items.tagName && items.tagName.toLowerCase() == 'li') {
var link = items.getElementsByTagName('A')[0];
var submenu = items.getElementsByTagName('UL')[0];
submenu.style.display = 'none';
link.onclick = (function(sm) { return function() { sm.style.display = sm.style.display == 'none' ? '' : 'none'; return false; } })(submenu);
}
}
})('menu');

P.S. Извиняюсь за замудреный код, более простой было опять же лень писать. Тут главное суть.

Dreammaker:
менюхи полностью на джаваскриптах (не такие как у Вас, а особо извращённые , где формируется всё с помощью яваскриптов и ссылки в том числе) дублировать в <noscript></noscript>.

А еще лучше выводить нормальный HTML-код меню, в идеале конечно список, который стилями приводится к нужному виду. А в конце странички JavaScript-код, который будет разделывать этот список и делать из него динамическое меню. В результате все довольны: и поисковики, и нормальные юзеры (с JavaScript), и юзеры с отключенным JavaScript, и даже юзеры с текстовыми браузерами.

С первым вопросом все ясно. Со вторым непонятно, какая сторона к чему относится, поясните поподробней, пожалуйста.

Я, вообще говоря, не сторонник включения в обычные страницы различных фрэймворков, из которых jquery и prototype самые безобидные в плане размера и скорости выполнения. Тем более для таких простейших задач, требующих одного цикла.

<!-- таблица без внешней рамки -->

<html>
<head>
<style type="text/css">
table.without_border td {
border-left: 1px solid #000;
border-top: 1px solid #000;
}
table.without_border tr.first td {
border-top: none;
}
table.without_border td.first {
border-left: none;
}
</style>
</head>
<body>
<table class="without_border" cellSpacing="0">
<tr><td>abc</td><td>abc</td><td>abc</td></tr>
<tr><td>abc</td><td>abc</td><td>abc</td></tr>
<tr><td>abc</td><td>abc</td><td>abc</td></tr>
<tr><td>abc</td><td>abc</td><td>abc</td></tr>
</table>

<script type="text/javascript">
var tables = document.getElementsByTagName('TABLE');
for (var i = 0; i < tables.length; i++)
if (tables.className == 'without_border' && tables.rows.length > 0) {
tables.rows[0].className = 'first';
for (var j = 0; j < tables.rows.length; j++)
if (tables.rows[j].cells.length > 0)
tables.rows[j].cells[0].className = 'first';
}
</script>

</body>
</html>

Конечно в этом скрипте 8 строк, а не 2 и он не такой красивый, зато за ним не прячется jquery весом 145 кб, и выполняется он намного быстрее.

Ну еще он не универсальный, т.к. написан только что, в противовес.

З.Ы. Против самих фрэймворков ничего не имею, сам пользовался прототайпом до тех пор, пока не стал смущать его размер, в то время как большая часть функциональности не используется. Пришлось писать свой, частично компилированный из прототайпа, но легкий и загружающий себя по мере необходимости.

_wind_:
Ускорить ввод слов, очевидно...

Ага, попробуйте-ка ввести (ща придумаю): "Привет тебе, преподобный прихожанин".

Т.е. как уже было сказано

semenov:
идея зачотная, реализация нет

Точнее реализация вообще никакая.

А смысл у всего этого какой?

Всего: 1025