Блок внутри ссылки

Статус
Закрыто для дальнейших ответов.

vla

Well-Known Member
Регистрация
16.09.2011
Сообщения
230
Можно в ссылку включить DIV в виде маркера в такой форме?

Код:
<a href="">
<div class="marker"></div> Ссылка_1
</a>
___________________
div.marker{background-color:#bc1d00;width:0.5em;height:0.5em;float:left;}
Вроде работает... Конфликтов быть не может?
 

AngelGabriel

И имя мне - легион
Регистрация
23.11.2008
Сообщения
778
line can not contain block
 
  • Like
Реакции: vla

vla

Well-Known Member
Регистрация
16.09.2011
Сообщения
230
Понял!

[member=ozzon91], а если DIV'у задать display:inline ?
Тоже неправильно будет?
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
html-5 позволяет вставлять блоки внутрь ссылок.

так что приведенный в 1 посте код корректен при соответствующем доктайпе. А браузерам это вообще пофигу.
 
  • Like
Реакции: vla

AngelGabriel

И имя мне - легион
Регистрация
23.11.2008
Сообщения
778
там не видно какой это хтмл, можно ссылку сделать блочным элементом display:block;
 
  • Like
Реакции: vla

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
переходите на html-5 и избавляйтесь от множественного геморроя типа закрытия тегов, регистра, кавычек и пр.
xhtml - фтопку. То, что мы пишем под доктайпом xhtml, в большинстве своем таковым не является.
 

vla

Well-Known Member
Регистрация
16.09.2011
Сообщения
230
там не видно какой это хтмл
HTML 4.01 Transitional

можно ссылку сделать блочным элементом display:block;
Тоже вариант! Значит и мой способ (display:inline) верен! Я правильно понял?

переходите на html-5
Все никак не решуть...
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
А чего тут решаться?!

Пишите
Код:
<!DOCTYPE html>
А дальше все так же, как писали и раньше.
Постепенно будете изучать и внедрять новые теги и другие хорошести.

Например, можно начать с
Код:
<header>
вместо
Код:
<div id="header">
аналогично и с футером.
 

motek

злой как @
Регистрация
13.04.2010
Сообщения
730
Можно в ссылку включить DIV в виде маркера в такой форме?

Код:
<a href="">
<div class="marker"></div> Ссылка_1
</a>
___________________
div.marker{background-color:#bc1d00;width:0.5em;height:0.5em;float:left;}
Вроде работает... Конфликтов быть не может?
Код:
<a href="" title="">
<span class="marker"></span> Ссылка_1
</a>
спен не блочный элемент, конфликта не будет
 

vla

Well-Known Member
Регистрация
16.09.2011
Сообщения
230
[member=motek], с помощью SPAN не нарисуешь "квадратик"!
Он не реагирует на WIDTH и HEIGHT! Его размеры зависят только от текста погруженного в него...
<span style="display:block;"></span> - вот так нарисуешь квадрат с нужными размерами WIDTH и HEIGHT. Но тогда получается, что и было изначально, я так понял...

На самом деле, для себя я решил этот вопрос! Но для логического завершения давайте разберем варианты:

Код:
<!--Вариант 1-->
<a href="" style="display:block;"><div></div>тестовая_ссылка</a>
<!--ЭТО ГРАМОТНО! Я сделал именно так!-->
<!--Вариант 2-->
<a href=""><div style="display:inline;"></div>тестовая_ссылка</a>
<!--Так тоже правильно, но маркер (квадратик) ты не нарисуешь, тк элементы "inline" не управляются с помощью width и height!-->
<!--Вариант 3-->
<a href=""><span style="display:block;"></span>тестовая_ссылка</a>
<!--ТАК НЕЛЬЗЯ! В этом случае span будет управляться с помощью width и height, НО!!!! блок не может находится в строковом элементе!-->
Если, я что-то понял неверно, исправьте меня!
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Вариант 1. Идеологически верный кошерный вариант. Валидно, кроссверсионно.
Вариант 2. Невалидно для (X)HTML до HTML-5 и выглядит глупо. Непонятно, для чего блоку дан стиль inline.
Вариант 3. Валидный, но бестолковый. span явно лишний.

Как я уже писал, браузеру пофигу, что вы вложите в ссылку - блок или строковый элемент (кроме FF3 - это больший католик, чем Папа Римский).
 
  • Like
Реакции: vla

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 145
Вот блин развели демагогию. А не проще ли использовать псевдоэлемент :before
Два примера в моем блоге, ссылка в подписи
- в сайдбаре у списков и под заголовком записи (иконка песенки)

Крути-верти свои квадратики как хочешь.
 
  • Like
Реакции: vla

motek

злой как @
Регистрация
13.04.2010
Сообщения
730
[member=motek], с помощью SPAN не нарисуешь "квадратик"!
Он не реагирует на WIDTH и HEIGHT! Его размеры зависят только от текста погруженного в него...
<span style="display:block;"></span> - вот так нарисуешь квадрат с нужными размерами WIDTH и HEIGHT. Но тогда получается, что и было изначально, я так понял...
мы говорим про конфликт? конфликт возникает, если блочный элемент поместить внутрь строкового...
спен строковой элемент и специально предназначен для таких вставок, а высоту,ширину и фон с "квадратиком",прописывается через стили




vla сказал(а):
На самом деле, для себя я решил этот вопрос! Но для логического завершения давайте разберем варианты:

Код:
<!--Вариант 1-->
<a href="" style="display:block;"><div></div>тестовая_ссылка</a>
<!--ЭТО ГРАМОТНО! Я сделал именно так!-->
<!--Вариант 2-->
<a href=""><div style="display:inline;"></div>тестовая_ссылка</a>
<!--Так тоже правильно, но маркер (квадратик) ты не нарисуешь, тк элементы "inline" не управляются с помощью width и height!-->
<!--Вариант 3-->
<a href=""><span style="display:block;"></span>тестовая_ссылка</a>
<!--ТАК НЕЛЬЗЯ! В этом случае span будет управляться с помощью width и height, НО!!!! блок не может находится в строковом элементе!-->
Если, я что-то понял неверно, исправьте меня!

Код:
<!--Вариант 1-->
<a href="" style="display:block;"><span></span>тестовая_ссылка</a>
<!--ЭТО ГРАМОТНО! Я сделал именно так!-->

<!--Вариант 2-->
<a href="" title="">тестовая_ссылка</a>
<!-- "квадратик"-маркер позиционируем с нужной стороны ссылки (background-position) + сдвигаем текст,чтобы он не перекрывал маркер -->
Вот блин развели демагогию. А не проще ли использовать псевдоэлемент :before
Два примера в моем блоге, ссылка в подписи
- в сайдбаре у списков и под заголовком записи (иконка песенки)

Крути-верти свои квадратики как хочешь.
проще, но не лучше :) ...кто сказал,что маркер перед текстом?,добавляется еще и :after?
а если надо ,чтобы маркер на hover и visited реагировал? я справлюсь одним спрайтом и корректировкой позиции, а ты?
а если hover - слева маркер, а visited - справа?... :laugh:
 
  • Like
Реакции: vla

vla

Well-Known Member
Регистрация
16.09.2011
Сообщения
230
[member=motek], согласен! [member=tigra60], пояснил про твой вариант! Теперь первый и третий варианты я считаю равноценными.

А про hover ты верно подметил!
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 145
кто сказал,что маркер перед текстом?,добавляется еще и :after?
Если надо после, то добавляется after. В чем проблема не пойму?
а если надо ,чтобы маркер на hover и visited реагировал?
а если hover - слева маркер, а visited - справа?
И тут не вижу проблемы. У меня в блоге показано, что реагирует. Ни что не мешает поставить и визитед и активаци, деактивация.
я справлюсь одним спрайтом и корректировкой позиции, а ты?
Ну позиционируй, я и без позиционирования справлюсь и так же можно одним спрайтом. Кто мешает то?

А главное СЕМАНТИКА, которую тигра так любит.

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

vla

Well-Known Member
Регистрация
16.09.2011
Сообщения
230
Ты покажи пример из того что ты приводишь на словах. Я переведу тебе это в стили. И что-то мне подсказывает, что кода даже в стилях будет меньше. И повторюсь - валидно и семантично.
Я думаю, что спорить нет смысла!
Эту несложную задачу можно решить разными способами! Вы мне их продемонстрировали в этой теме, я выбрал.
Спасибо.

Вот что получилось у меня (общий вид не ахти, но смысл понятен):
http://nng10.ru/ (правый блок - меню)
http://nng10.ru/css/style.css (стили к этому блоку смотри под комментарием "NEW МЕНЮ")
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 145
Ой, и для этого делать блоки?! Серьезно?!
А списки для чего? Помниться меня Тигра ругал, за то что я списки не сделал...но это другая тема

Со списками вообще можно творить всё что угодно
http://demo.g63.ru/list_block_etc.html
 
  • Like
Реакции: vla

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Мне ваши примеры напомнили незабвенные уроки попова. Вроде бы куча нужных функций задействовано и представлены они правильно, но сам пример в комплексе является сферическим говнокодом в вакууме, прямо экспонат из палаты мер и весов.

Объясняю:
1. Код навигационного меню обычно выглядит так:
Код:
<ul>

	<li><a href="#">Пункт1</a></li>
	<li><a href="#">Пункт2</a></li>
	<li><a href="#">Пункт3</a></li>
</ul>
Теперь сравните со своим и подумайте, как вы будете уговаривать, например, джумлу или вордпресс вывести вам меню в виде
Код:
<a href="#"><div></div>Пункт N</a>
Заметьте, что я не говорю сейчас о семантике, которую так люблю. Просто практика, ничего личного!

2. Как там древние говорили? Мотек мне друг, но истина - дороже! Все, что можно сделать без картинок, нужно делать без них!
В вашем случае правильным решением будет псевдоэдемент :before и псевдосимволы квадратика и кружочка.
Разумеется, если у вас в качестве булетиков применяются бабочки или танчики, то без картинок не обойтись. Тем не менее, и здесь :before рулит.

И еще парочка советов:
1. Зачем вы всюду используете знак ">" ? И без него почти все будет работать.
2.
a > img{border:0;} /*обводка logo, для факин IE*/
В таком случае, FF тоже факин. Он тоже рамку делает картинкам-ссылкам. Используйте reset.css от Эрика Мейера (гуглить самостоятельно).
3. Я бы не советовал обыгрывать list-style от списка, как это показал BaNru в своем примере. Беда в том, что все браузеры показывают эти булетики в разных позициях. И бороться с этим невозможно.

А вот и примерчик:
Код:
<!DOCTYPE html>
<meta charset="utf-8">
<title>Треугольнички</title>

<style type="text/css">
ul {list-style:none}
li {position:relative;}
li a {text-decoration:none;}
li a:hover {color:red}
li a:before {
position:absolute;
content:"\2663";
left:-20px;
top:-1px;
}
li a:hover:before {
content:"\2665";
}
</style>

<ul>
<li><a href="#">Первое</a>
<li><a href="#">Второе</a>
<li><a href="#">Третье</a>
<li><a href="#">Четвертое</a>
</ul>
Коды псевдосимволов (шестнадцатиричные!) берем из стандартной таблицы символов виндоус. Будьте осторожны! Не все псевдосимволы отображаются! Проверяйте!
 
  • Like
Реакции: vla

vla

Well-Known Member
Регистрация
16.09.2011
Сообщения
230
Спасибо [member=BaNru], за демонстрацию "Со списками вообще можно творить всё что угодно". Я проигнорировал этот элемент в свое время... Щас изменил своё мнение.
Спасибо [member=tigra60], за все советы, внимательно осмысливаю каждое предложение!

PS
a > img{border:0;} /*обводка logo, для факин IE*/ - это всего комментарий для меня... и знаю его смысл, а IE на самом деле факин...
 
Статус
Закрыто для дальнейших ответов.
Верх Низ