HTML, списки, onClick

kruzer25

Как отловить нажатие по иконке элемента списка (не по его содержимому)? Обычный список, типа <ul><li>item1</li><li>item2</li></ul>

yolki

аа..
на иконке не получится.
разве что самому иконку пририсовывать

kruzer25

Хреново...

kruzer25

Чёрт, столько времени набивал, кучу примеров привёл, и случайно нажал escape...
Как можно получить из
<p>1</p><p>2</p>

что-то выглядящее, как элемент списка, т.е.:
* 1
2

, НЕ
*
1
2

и НЕ
* 1
2

?
Игрался со стилями, слоями, display:inline и display:block - ничего не выходит...

ANATOL54

табличка из 2-х колонок как вариант..

kruzer25

Табличка - это изврат.
Неужели никак по-нормальному нельзя сымитировать список?

Vadim69

чем табличка не устраивает?..

kruzer25

Тем, что CSS как раз должен избавить всех от необходимости использовать табицы для дизайна (и оставить таблицы только когда они действительно нужны, для представления табличной информации)

artimon

Делать буллет фоном.
Задавать паддинг.
По клику проверять координаты.

dedwowan

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

kruzer25

А теперь попробуй прочитать тред с начала.

skvoria

Чёрт, столько времени набивал, кучу примеров привёл, и случайно нажал escape...
Как можно получить из
Ну если сходу, то к примеру вот так можно:
<html>
<head>
<style>
p { margin-left: 20px }
</style>
</head>
<body>
fsdfsdfsfdsdfsfdsfsfdsfdsdfsdf
<p><img src="" width="20" height="20" style="margin-left:-20px">wqeqweqwe</p>
<p>wqeqweqwe</p>
<p>wqeqweqwe</p>
<p>wqeqweqwe</p>
<p>wqeqweqwe</p>
fsdfsdfsfdsdfsfdsfsfdsfdsdfsdf
</body>
</html>
Изврат, правда...
Если тошнит от отрицательных марджинов (как меня, к примеру) - пихай в <p> картинки внутрь: в выбранный пункт - с изображением, в остальные - прозрачный гиф 1x1, дальше скрипт...

kruzer25

Это не решение - в том "большом тексте" может лежать всё что угодно, решение должно быть в форме "помещаем тот большой текст в какой-то контейнер/блок, ставим блоку такие-то атрибуты, общему блоку, содержащему * и блок с большим текстом - такие-то".
Типа <div style="чего-то">*<div style="чего-то2">большое содержимое</div></div> - это и будет нормальной реализацией обычного ul.
ul ведь не обращает внимания на то, что у тебя находится в конкретном li, он сдвигает всё сразу.
ЗЫ: Хотя, сейчас подумал, можно попробовать внутренний div сделать display:block и сделать ему margin-left шириной с звёздочку, и margin-top - отрицательный, высотой со звёздочку.

kruzer25

АЕ,
<style>
p { margin:0px }
div.item1 { display:inline;font-size:16px }
div.item2 { display:block;margin-left:15px;margin-top:-22px; }
</style>
<div class=item1>* <div class=item2><p>123</p><p>456</p></div></div>

действительно так и работает!
ЗЫ: margin:0px для p - просто для удобства, на самом деле можно обойтись и без этого, а во второй div напихать вообще всё, что угодно.
ЗЗЫ: Плохо получается, что приходится рассчитывать на конкретные размеры звёздочки и на то, что текст во втором div-е начинается с margin-top:0px

stat7819605

<div class=item1>* <div class=item2><p>123</p><p>456</p></div></div>


<tr><td>*</td><td>fsdfsdf</td></tr>

Зачем делать стоко мозгоебства, если можно все сделать с помощью таблиц. Один хер div'ов столько же скока и ячеек )

Обьясни.

kruzer25

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

skvoria

А сможешь объяснить, почему?

kruzer25

Потому что CSS ввели, в частности, как раз для того, чтобы не использовать так таблицы.

stat7819605

А можно узнть кто очень не рекомендует?
И если можно пример красивой, грамотной верстки без таблиц.

kruzer25

MSDN?

dedwowan

Хороший пример грамотного использования обеих технологий.

dedwowan

kruzer25

О, отличный пример - дизайн меняется полностью всего лишь заменой css-файла.
Таблицами такого, конечно, не достичь.

kruzer25

ОК, автор конкретного дизайна облажался, и что? Попробуй другой.

dedwowan

Во-первых, это дефолтная страница.
Во-вторых, он не то чтобы облажался. Он плохо обработал нестандартные входы на страницу. Вернее даже данная технология не смогла с ними справиться.
И это при том, что данный сайт, в плане верстки, сложным не является.

artimon

Что за браузер? И как ты добился такого результата?

dedwowan

ИЕ, нажал кнопочку бэк

artimon

У меня не воспроизвелось.

dedwowan

У меня на домашнем тоже
А на работе спокойно несколько раз подряд сделал.

dedwowan

Кстати
Попробуй выделить какой-нибудь текст на странице.
У меня при этом упорно выделяется менюха с дизайнами.

kruzer25

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

dedwowan

О этом преимуществе верстки стилями я в курсе.

ghytr00013

Не понимаю. А смысл-то в чем? Существуют проекты, требующие возможность менять дизайн каждый день? И что мешает держать весь дизайн в одном файле, в который на сервере делаются необходимые вставки? А без таблиц сколько-нибудь сложный дизайн сделать не удастся в принципе.

kruzer25

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

slonishka

Кстати
Попробуй выделить какой-нибудь текст на странице.
У меня при этом упорно выделяется менюха с дизайнами.
да, тоже хотел об этом написать.
кстати, не первый раз такую "фичу" встречаю.

dedwowan

Существуют классы проектов, в которых это будет полезно. Например сложные веб-проекты уровня документооборота, в которых всяких страниц-шаблонов дофигища.
Сайтостроению это нафиг не нужно.
Сложный дизайн в таких системах не нужен.

dedwowan

В правильном стиле.

Это не аргумент.
Т.н. "правильный стиль" это твоя точка зрения на вещи. Абсолютом она не является, грамотной аргументации её правильности ты не озвучивал.

kruzer25

Аргумент - что таблицы никогда не предназначались для вёрстки, они предназначались лишь для представления табличных данных.
И то, что их использовали и для вёрстки - лишь следствие того, что нормальных инструментов, предназначенных для вёрстки - не было.

dedwowan

Аргумент из разряда - когда бог создавал мир он сказал, что субота создана для отдыха, поэтому в суботу работать нельзя.
Ты более прагматичные аргументы привести можешь?

kruzer25

Аргумент из разряда - когда бог создавал мир он сказал, что субота создана для отдыха, поэтому в суботу работать нельзя.
А теперь ответь, почему такое заключение неверно.
Увидишь, что неверно оно по причинам, отличающим наши аргументы.

artimon

У меня в FF не выделяется.

dedwowan

Зато у тебя в FF картинка в правом нижнем углу не показывается

dedwowan

Оно не верно, потому что богу паралельно до того, работаем мы в суботу или нет. А подобное утверждение делают догматики, которые слепо верят не в бога, а в свои домыслы.

kruzer25

Блять, но если суббота реально предназначена для отдыха?
Ещё есть вариант - вообще всё сделать одной картинкой с картой, и промасштабировать её до ширины окна - чемэто тебе не дизайн?

dedwowan

1. Много весит
2. Тяжело для обновления
3. Отсутствует интерактивность
4. Нет возможности сделать копи-паст интересующей информации
5. Очень дорогой способ разработки многостраничных сайтов/систем
6. Невозможность сделать тянущийся дизайн из-за резкой потери качества у текстовой информации.
Будем дальше стебаться или ты все же нормальные аргументы приводить начнешь?

kruzer25

1. Много весит
Не проблема.
2. Тяжело для обновления
3. Отсутствует интерактивность
php_gd решит все твои проблемы.
А позиционировать так - гораздо легче.
4. Нет возможности сделать копи-паст интересующей информации
Это не всегда плохо.
5. Очень дорогой способ разработки многостраничных сайтов/систем
Не дороже, чем традиционным способомю
6. Невозможность сделать тянущийся дизайн из-за резкой потери качества у текстовой информации.
Какой-какой дизайн?

dedwowan

1. Большой вес это недостаток.
2,3. Ну-ка, ну-ка. Расскажи мне как php_gd сделает кнопку нажимаемой, текстовые поля в которые можно вводить текст, чекбоксы всяки, выпадающие списки и всякие перетаскиваемые хрени
4. Это, как правило, плохо и, очень редко, хорошо
5. Гораздо дороже. Серверную логику все равно писать придется, а верстка усложнится в разы.
6. Учи матчасть.

kruzer25

1. Большой вес это недостаток.
Для узкого канала и/или платного трафика.
2,3. Ну-ка, ну-ка. Расскажи мне как php_gd сделает кнопку нажимаемой, текстовые поля в которые можно вводить текст, чекбоксы всяки, выпадающие списки и всякие перетаскиваемые хрени
Картой.
Если чекбоксов и полей нету.
4. Это, как правило, плохо и, очень редко, хорошо
Нет.
5. Гораздо дороже. Серверную логику все равно писать придется, а верстка усложнится в разы.
Не усложнится.
6. Учи матчасть.
То есть, ты и сам не понимаешь свой вопрос.

dedwowan

Для узкого канала и/или платного трафика.

У всех систем общающихся с внешним миром платный трафик. Да и прорисовка картинки браузером занимает время.
Картой.
Если чекбоксов и полей нету.

Покажи пример нажимаемой кнопки, сделаной картой.
Больше контраргументов не увидел.

kruzer25

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

ghytr00013

Не смешите мои подковы. Делать сайт из одной картинки, в которую пихать все на свете - это дико криво. Причины - очевидны. И описаны выше к тому же.
То, что таблицы стилей крайне полезны, я не спорю. Но лично я не умею создавать сложный и грамотный (в том смысле, что не плывет в разных браузерах и ОС) дизайн ТОЛЬКО с их помощью. И никогда не встречал подобного в интернете. Поэтому даже если предположить, что css были созданы чтоб убрать таблицы из дизайна, то я не считаю, что они с этой задачей справились. Пример - это вопрос, поднятый в начале данного обсуждения. Очевидно, что решение с таблицами проще и безглючнее.

kruzer25

Как мы тут уже увидели, проще и безглючнее моё решение.

dedwowan

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

kruzer25

на каждый мой аргумент ты выдаешь свой обоснованый комментарий
Вроде бы, достаточно большому количеству пользователей форума именно это во мне и не нравится.

dedwowan

В данном случае я обоснованных комментариев не наблюдаю

kruzer25

В данном случае я обоснованных комментариев не наблюдаю

dedwowan

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

kruzer25

Подумай.
Я, конечно, понимаю, что в первый раз это немного сложно, но всё-таки попробуй.

dedwowan

В наших лесах на такое отвечают просто
Сам дурак.

kruzer25

Да, это, конечно, очень конструктивный аргумент.
Никогда не думал, что тебе место - в тех самых лесах, а не в разделе Programming?

ghytr00013

Не надо друг друга оскорблять. Если человек считает, что круто делать сайт на картинках и не хочет прислушиваться к мнению других, то пусть делает. Совет, который он спрашивал, ему был дан. А как и что уж он хочет делать - это его дело.

maggi14

ты персонажей не путаешь, случаем?

stat7819605

Решил попробывать и переделал весь дизайн одного сайта на стилях. Какие трудности я встретил:
  Очень не удобно когда работаешь с динамической информацией. Часто натыкался на то что с одним контентом все нормально, а с, например на 5-6 строк больше, все плыло куда-то (. Как-то не логически работает float. Проблемы с width, в купе с margin. Если сделать в слое с width:600px; слой с width:100%;margin-left:40 px; то длина второго слоя равна не 600px; а 640; При этом у меня весь контент уплывал куда-то вниз, где впринципе быть не может. Можно все решать с помощью жеского задания длины и высоты, но это не удобно с динамической информацией.
  Все браузеры отображают по поразному. Пока найдешь тот стиль который зотябы в IE,FF,Opere норм показывается, все локти перекусаешь.
  По количеству тэгов и неразберихи, которая наводится всем множеством div'ов и span'ов идет в сравнение с таблицами. Тока вот таблицы в редакторах отображаются нормально, а дивы нет.
 А так мне даже понравилось, но от таблиц отказываться не собираюсь, уж больно они удобны, во многих случаях.

kruzer25

Если сделать в слое с width:600px; слой с width:100%;margin-left:40 px; то длина второго слоя равна не 600px; а 640;
А ты чего хотел?
100% - это ширина(/высота) того блока, где мы сейчас находимся - то есть, для этого второго слоя это было равносильно width:600px;margin-left:40px.
Если уж у тебя для внешнего слоя ихзвестна ширина - ну и написал бы width:560px; margin-left:40px.
Вроде бы, еть ещё способ задания width и height так, чтобы они просто брали всё свободное место, точно не помню.

durka82

Так сайты на картинках обычно таблицами и делают
И уж тут флэш даст 100 очков вперед картинкам

stat7819605




А ты чего хотел?
С другой стороны, если задать margin-right: 40px; то длина становится на 40 меньше. Просто мне кажется что тут еще наддо работать и работать разрабам всех браузеров.
(Кстати этот косяк не во всех браузерах).

Просто не логично с одной стороны уменьшать размер, а с другой просто перемещать весь блок( начинает выезжать за приделы страницы )

artimon

Сначала изучи стандарт CSS, и особенно раздел про блочную модель, а потом суди, что есть косяк, а что — нет.
З.Ы. Я не утверждаю, что этот стандарт идеален, но не люблю людей рассуждающих в стиле „Пастернака я не читал…“

stat7819605

Чет я не понял в чем ты меня обвиняешь!
Вот код:
 
  <div name="vneshnii" style="background-color:red;width:100px;height:100px;"><div name="vnutrennii" style="background-color:green; width:100%; margin-left:10px;">test1</div></div>
  <div style="background-color:red;width:100px;height:100px;"><div style="background-color:green; width:100%; margin-right:10px;">test2</div></div>
  <div style="background-color:red;width:100px;height:100px;"><div style="background-color:green; width:100%; margin-bottom:120px;">test3</div></div>
  <div style="background-color:red;width:100px;height:100px;"><div style="background-color:green; width:100%; margin-top:120px;">test4</div></div>
 
Вот результат его работы:

[b][/b]
1. На test1 понятно. Все правильно, по спецификации. Т.е. Длина внутреннего блока = 100(100%)+margin=110px;
2. На test2 длина моего блока не равна 110 как написано в спецификации!
3. На следующих тестах внутреннии блоки ведут себя не так как на первом тесте. Т.е. сместо того чтобы бы видеть зеленый блок в красном, мы видим что красный блок в ширину больше стал, а зеленый как был так и остался.
Забыл написать что это для Opery и FF. Для ИЕ, тесты работают правильно, но тож не совсем.
 

artimon

Ботай спецификацию дальше.
1. ОК.
2. Тоже ОК, т.к. margin справа есть, но поскольку он не заливается цветом фона, ты его просто не видишь.
3. Ничего не понял. Судя по картинке вроде правильно всё.
И ещё, почитай про DOCTYPE и про Quirks Mode

stat7819605



1. ОК.
2. Тоже ОК, т.к. margin справа есть, но поскольку он не заливается цветом фона, ты его просто не видишь.
Ну а почему в первом случае margin идет от внешнего блока а во втором случае от... даж не знаю от чего.
А в третьем случае ваще бардак.
Вот тот же код в ИЕ:

[b][/b]
Вот тут видно что все тесты имеют ту ширину, которая должна быть согласно спецификациям!.
[b][/b]
Еще пара интересностей. Если тоставить тест3 между тестом 1 и тестом 2 то мы не увидим ни какого зазора, а это говорит о том что ширина этого блока не >100px; хотя по спецификации она должна быть 120px+ ширина самого блока!
[b][/b]
Ты сам бы попробывал поэксперементировать, а потом говорил бы. А то сразу за Постернака...
[b][/b]

artimon

А вот как раз IE и не прав. Ты написал, что размер красных блоков должен быть 100*100, а он их растягивает. Где логика?
По стандарту, если у блока заданы размеры, то он должен быть именно такого размера. Если какие-то внутрение элементы хотят вылежни за эти размеры, то это их трудности и что делать с торчащими кусками, определяется правилом overflow.
ЗЫ. IE самы глючный из всех браузеров в плане поддержки CSS, так что если что-то работает в IE, это вовсе не значит, что оно так должно быть.

artimon

Это ты к чему?
Правило overflow указывает показывать ли внутренние элементы, которые вышли за пределы бокса, но никак не влияет на размеры самого бокса. Если я ниаписал width: 100px значит должно быть 100px и никаких гвоздей.

dedwowan

Ну тогда получается, что во всех случаях кроме 1го неправильно работает margin
Кстати, если ты в 4м случае задашь у внешнего дива бордер, то он конкретно этот случай в лисе начнет обрабатывать правильно.

stat7819605




А вот как раз IE и не прав.
Я и не говорил что он прав, но с моей точки зрения он работает с маргином коректнее.
Там хоть видно что для второго теста, маргин-правый есть, он отсчитывается он правой стенки контейнера, а для оперы правильно работает только маргин-лефт.

stat7819605




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

artimon

На которой картинке?
Ботать margin collapsing всё там же, в стандарте.

artimon

А кто сказал, что правых margin должен отсчитываться от правого края родителя? Ещё раз внимательно читай стандарт. http://w3.org/TR/CSS21/visudet.html#Computing_widths_and_mar...

dedwowan

In CSS 2.1, horizontal margins never collapse.

dedwowan

Не понял как из него можно вычленить хоть что-то про margin-right
Похоже моих познаний в английском недостаточно.

artimon

Я имел в виду вертикальные „дыры“ в первом скриншоте.

artimon

Смотрим на код:
<div style="background-color:red;width:100px;height:100px;">
<div style="background-color:green; width:100%; margin-right:10px;">test2</div>
</div>

Читаем раздел 10.3.3. Block-level, non-replaced elements in normal flow
Поскольку паддингов и границ у нас нет должно выполнятся равенство:
margin-left + width + margin-right = width-of-containing-block,
где
margin-left = auto
width = 100% (от ширины родителя) = 100px
margin-right = 10px
width-of-containing-block = 100px
следующий абзац:
If 'width' is not 'auto' and 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' (plus any of 'margin-left' or 'margin-right' that are not 'auto') is larger than the width of the containing block, then any 'auto' values for 'margin-left' or 'margin-right' are, for the following rules, treated as zero.
Значит margin-left = 0
Имеем
0 + 100px + 10px != 100px. подстава, однако.
Читаем дальше:
If all of the above have a computed value other than 'auto', the values are said to be "over-constrained" and one of the used values will have to be different from its computed value. If the 'direction' property of the containing block has the value 'ltr', the specified value of 'margin-right' is ignored and the value is calculated so as to make the equality true. If the value of 'direction' is 'rtl', this happens to 'margin-left' instead.
Значит теперь margin-rght = auto.
0 + 100px + auto = 100px.
Значит margin-rght = 0.
Вуаля:
0 + 100px + 0 = 100px. Вот оно, счастье.
Итого, то что мы видим на первом скриншоте (FF, Opera) — правильно, а IE опять страдает фигнёй.

dedwowan

Мда -)
Теперь осталось только понять, из какой логики эти стандарты следуют -
Оставить комментарий
Имя или ник:
Комментарий: