Консультации и оценка качества html-вёрстки (бесплатно)

у меня тоже вопрос появился :)

Сделал таб контрол, в нем таблички (разворачиваются при клике на [+]), проблема в том что в браузере Chrome див tabControlContent отображающий содержимое таба не подстраивает свои размеры под размеры лежащей на нем таблицы. В итоге таблица уезжает далеко вправо прямо через бордюр :)
В IE размеры дива подстраиваются.

Вобщем хотелось бы чтобы и в хроме подстраивался :)
В идеале конечно было бы сделать скроллеры внутри дива, чтобы скролировалось содержимое таба, а не весь таб контрол :)

Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title>Report</title>
		<style type="text/css" media="all">

		body {
			font: 0.8em arial, helvetica, sans-serif;
		}
		div.Collapsed {
			display: none;
		}
		div.Expanded {
		}
		#tabControlHeader {
			margin: 0;
			padding: 0 0 1em 0;
		}
		#tabControlHeader ul {
			list-style: none;
			padding: 0;
			margin: 0;
		}
		#tabControlHeader li {
			float: left;
			border: 1px solid #bbb;
			border-bottom-width: 0;
			margin: 0;
		}
		#tabControlHeader a {
			text-decoration: none;
			display: block;
			background: #eee;
			padding: 0.24em 1em;
			color: #00c;
			width: 8em;
			text-align: center;
		}
		#tabControlHeader a:hover{
			background: #ddf;
		}
		#tabControlHeader li.Selected {
			border-color: black;
		}
		#tabControlHeader li.Selected a{
			position: relative;
			top: 1px;
			background: #f5f5ea;
			color: black;
			font-weight: bold;			
		}
		#tabControlContent {
			border: 1px solid black;
			clear: both;
			padding: 0 1em;
		}
		table.TableDiff {
			border-width: 1px;
			border-spacing: 0px;
			border-style: solid;
			border-color: black;
			border-collapse:collapse;
		}
		table.TableDiff tr {
			border-width: 0px;
			padding: 0px;
		}
		table.TableDiff tr.Even {
            background-color: #f5f5ea;
		}
		table.TableDiff tr.Odd {
            background-color: #c5c5ba;
		}
		table.TableDiff tr.Split {
			border-width: 0px;
			padding: 0px;
			height: 4px;
		}

		table.TableDiff th {
			border-width: 1px;
			border-style: solid;
			border-color: black;
			padding: 0px 8px 0px 8px;	/* left/right padding */
		    background-color: Silver;
		    color: black;
		    white-space:nowrap;
		}

		table.TableDiff th.State {
			padding: 0px 20px 0px 4px;	/* 4 left/20 right padding */
			text-align:left;
		}

		table.TableDiff td {
			border-width: 1px;
			border-style: solid;
			border-color: black;
			padding: 0px 4px 0px 4px;	/* left/right padding */
			white-space:nowrap;
		}
		
		table.TableDiff tr.Even td.Warning {
			background: Salmon;
		}
		table.TableDiff tr.Odd td.Warning {
			background: #FF3300;/** #883030;*/
		}
		table.TableDiff tr.Split td.Split {
			border-width: 0px;
		}
		a.Collapser {
            text-decoration: none;
		}
		
		</style>
		<script type="text/javascript">
function showCollapsedElement(aId, divId)
{
    var a = document.getElementById(aId);
    var div = document.getElementById(divId);
    if (a.lastChild.data == '[+]')
    {
        a.lastChild.data = "[-]"
        div.className = "Expanded";
    }
    else
    {
        a.lastChild.data = "[+]"
        div.className = "Collapsed";
    }
}

function showTab(tabName)
{
    var divHeaderName=tabName+"_hdr";
    var divContentName=tabName+"_cnt";
    
    var divContent = document.getElementById("tabControlContent");
    for (var i = 0; i < divContent.childNodes.length; i++) 
    {
		var div = divContent.childNodes[i];
		if(div.id==divContentName)
			div.className = "Expanded";
		else
			div.className = "Collapsed";
    }
    var tabList = document.getElementById("tabList");
    for (var i = 0; i < tabList.childNodes.length; i++) 
    {
		var e = tabList.childNodes[i];
		if(e.id==divHeaderName)
			e.className = "Selected";
		else
			e.className = ""; // note: it is applied to <a> tag also
    }
}
		</script>
	</head>
	<body onload="showTab('tabModified')">
		<h1>Report</h1>
		<div id="tabControlHeader">
			<ul id="tabList">
				<li id="tabModified_hdr"><a href="#" onclick="showTab('tabModified')">Modified</a></li>
				<li id="tabAdded_hdr"><a href="#" onclick="showTab('tabAdded')">Added</a></li>
				<li id="tabDeleted_hdr"><a href="#" onclick="showTab('tabDeleted')">Deleted</a></li>
			</ul>
		</div>
		<div id="tabControlContent">
			<div id="tabModified_cnt">
				<div><h4><a class="Collapser" id="a_37af814b-3bc7-4832-97d1-def10f95b2ea" href="#a_37af814b-3bc7-4832-97d1-def10f95b2ea" onclick="showCollapsedElement('a_37af814b-3bc7-4832-97d1-def10f95b2ea', 'div_37af814b-3bc7-4832-97d1-def10f95b2ea')">[+]</a> A_BBBB_CCCCCCCCCCCCCCCCC</h4></div>
				<div id="div_37af814b-3bc7-4832-97d1-def10f95b2ea" class="Collapsed">
				    <table class="TableDiff">
				        <tbody>
				            <tr><th/><th>aaaaaaaaaaaaaaa_aaaaaaaa_id</th><th>aaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th><th>aaaaaaaaaaaaaaaaaaaaaaaa</th></tr>
				            <tr class="Even"><th class="State">Xxxxxx</th><td>281</td><td>xxx xx</td><td>False</td><td>True</td><td>False</td><td></td><td class="Warning">-1</td><td>11</td><td>96</td><td>1</td><td>-65536</td><td>False</td><td>True</td><td>0</td><td class="Warning">80</td><td>0</td><td>True</td><td></td><td class="Warning"></td><td>xxx</td><td>xxx xx</td><td class="Warning"></td><td class="Warning"></td></tr>
				        </tbody>
				    </table>
			    </div>
			</div>
			<div id="tabAdded_cnt">
				{%TABLE_ADDED%}
			</div>
			<div id="tabDeleted_cnt">
				{%TABLE_DELETED%}
			</div>
		</div>
	</body>
</html>
 
кстате, вот такой вопрос.
меня заломало выставлять в каждой ячейке столбца таблицы одну и ту же ширину и выравнивание.
вычитал про тэг col и вставил их перед thead, для каждого столбца прописал ширину и выравнивание.
ширина работает (причем как из аттрибута style так и из аттрибута width), а вот выравнивание - ни в какую. есть ли способ задавать его все-таки единожды для столбца?

ээ а в CSS это нельзя сделать?
 
есть блок внутри которого картинка. блок имеет фиксированный размер. картинка может быть нескольких размеров. На выходе надо получить следующее, когда высота картинки меньше высоты блока надо центрировать эту картинку по вертикали внутри блока.
вот решение:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

обратите внимание: там где в статье идёт речь о IE - описывается поведение IE6 и IE7 (в 2007 году, ещё не было IE8). В IE9 и IE8 уже всё ок.


Сделал таб контрол, в нем таблички (разворачиваются при клике на [+]), проблема в том что в браузере Chrome див tabControlContent отображающий содержимое таба не подстраивает свои размеры под размеры лежащей на нем таблицы. В итоге таблица уезжает далеко вправо прямо через бордюр :)
В IE размеры дива подстраиваются.

Вобщем хотелось бы чтобы и в хроме подстраивался :)
В идеале конечно было бы сделать скроллеры внутри дива, чтобы скролировалось содержимое таба, а не весь таб контрол :)
вначале небольшое уточнение - в вашем коде указан
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
, это необходимость работы в quirsk mode или просто опечатка? Если опечатка - замените на HTML5 doctype: <!DOCTYPE html>

Проблема с табом не только в Chrome, а вообще везде кроме IE. Кстати в Standards Mode таблица будет уезжать и в IE. И это правильное поведение, т.к. таблица больше чем блок в котором она находится.

Проблема решится если задать overflow: auto; для div#div_37af814b-3bc7-4832-97d1-def10f95b2ea (или overflow-x: auto; если, даже в случае большой по высоте таблицы, вертикальный скролл не должен появляться).

Обратите внимание, что в случае если это интранет-сайт, IE8 будет отображать его в
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
, поэтому стоит задавать X-UA-Compatible HTTP header - отсылать сервером (лучше) или через meta-тэг (ломает валидацию). В случае meta-тэга учитывайте почему-то упускаемую многими вещь: "The X-UA-compatible header is not case sensitive; however, it must appear in the Web page's header (the HEAD section) before all other elements, except for the title element and other meta elements." В первую очередь - речь о
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
.


ээ а в CSS это нельзя сделать?
для col можно задавать атрибуты (в том числе вертикальное выравнивание) в html:
Код:
<col valign="middle"></col>
Но т.к. поддержка этих атрибутов в браузерах была весьма слабой, то
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
.

В css же, для col увы ничего задать нельзя, взамен предлагаеться
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
.
 
Уважаемый, Del. Есть вопрос.
Сделал сайт, но в IE 6 он отображается ОЧЕНЬ некорректно, в 7 чуть лучше. Как сделать, чтобы при пользовании 6 и 7 на сайте не было видно никакой верстки, а только информация, что сайт поддерживает только современные браузеры?
Кажется, что-то надо делать с кодом типа <!--[if IE 6]> ... Только не знаю что.

Заранее спасибо за помощь.
 
Уважаемый Del, помогите пожалуйста в следующем вопросе.. Имею свою вэб страницу на narod.ru. В одну папку с index.htm загружено более 100 фотографий.jpg Какую программу дописать, что бы фотографии на вэб странице отображались в виде уменьшенных изображений на ленте, и лента имела полосу прокрутки. Щелчок мышки по понравившейся фотографии загружал эту фотку. Ну а если при наведении курсора мышки на фотку она будет автоматически увеличиваться в размере раза в два или три - то это вообще класс.. Спасибо за ответ..
 
Уважаемый Del)

В HTMLе я чайнечег) ну база начинающего, вот хочу зделать галлерею с каринками)

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

какими тегами все это делать, или может подскажете сайт с такой инфой)
вот яркий пример:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
 
Как сделать, чтобы при пользовании 6 и 7 на сайте не было видно никакой верстки, а только информация, что сайт поддерживает только современные браузеры?
Кажется, что-то надо делать с кодом типа <!--[if IE 6]> ... Только не знаю что.
да, можно через Conditional Comments (код приведённый вами - это оно) добавить свой css, который будет перебивать стили сайта: прятать содержимое, показывать предупреждение.
Но юзер должен иметь возможность нажать на кнопку типа "Всё равно хочу открыть сайт". А чтоб алерт после этого не отображался (в течении суток например) - стоит использовать кукисы.

В общем вот вам
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
(смотреть в IE6 конечно, а то не увидите предупреждения), мы его уже больше года используем, за всё время только 1 (один!) клиент попросил добавить поддержку IE6 :)


Какую программу дописать, что бы фотографии на вэб странице отображались в виде уменьшенных изображений на ленте, и лента имела полосу прокрутки. Щелчок мышки по понравившейся фотографии загружал эту фотку. Ну а если при наведении курсора мышки на фотку она будет автоматически увеличиваться в размере раза в два или три - то это вообще класс..
мы используем эту галерею:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Демо:
Тільки зареєстровані користувачі бачать весь контент у цьому розділі


Различные lightgallery-плагины к jQuery нравятся меньше. К сожалению иногда в этой галерейке бывает глюк с отображением большого фото (оно искажается), мы сделали фикс, он в аттаче.

Чтоб лента имела полосу прокрутки, задайте ленте width и overflow-x: auto;.

Для увеличения фото при наведении мышки, показывайте превью фоток в уменьшенном размере, а по :hover - увеличивайте их. Ну т.е. допустим большое фото имеет размеры 640х480. Маленькое - 100х100. Сделайте маленькие фото размером 150х150, но отображайте их как 100х100 (.gallery a img {width: 100px;}), а при наведении мышки - увеличивайте (.gallery a:hover img {width: 150px;}).


...вот хочу зделать галлерею с каринками)

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

Вкладення

  • ie6-alert.png
    ie6-alert.png
    216.2 КБ · Перегляди: 89
Может быть полезно заказчикам, чтоб знать куда смотреть, принимая работу:
ico_habrahabr_16.png
"
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
"
 
Я доволен развитим рабочим процессом Тс, но как противник антидемократического функционала инет -ресурса ,выраженного в цеплянии за каждым посетителем и дальнейшим его преследовании , и далее формировании на статистике фиксированных баз данных, с учетом социально -ориентированных сетей , целого комплекса взаимовыгодных договоров между владельцами инет-ресурсов.

Наша лаборатория пошла на дерзкий эксперимент ,подобрав Спиридона Ивановича ,кормящего по утрам голубей на ЮЖД ,и предложила ему написать инет- ресурс по сложности,похожего на ХФ.
Задание было выполнено в 123 часа.Хотите верте,хотите нет, с помощью несложных операций вставки-копирования, начального ознакомления с книжкой для начинающих и 2-3 способами сетевых технологий ,мы получили рабочую копию ресурса,готовую для регистрации в сети.
 
Останнє редагування:
Del, подскажите пожалуйста. сайт styv.t15.org косяк с левым меню в ИЕ. иконкам слева задаю float: left, а ссылку оборачиваю в див (с заданным паддинг-лефт), чтобы двух- и более строчные ссылки красиво по левому краю равнялись. так вот в ИЕ 6-8 все расползается :баран: помогите плиз :пиво:
 
forand, вместо img - задавай background-image для li, padding-left тоже задавай для li. div убери.
 
да. я понимаю. но мне надо чтобы при клике на плюс/минус выезжало/пряталось подменю. как такое сделать без дива и имиджа я не придумал (( а если прописать background-image для li то как реализовать выезжание подменю?
 
forandвсё так же как и сейчас, только onclick повесь на <li> а не на <a>. Вместо смены src у img меняй background-image у li (а лучше - сделай спрайт из двух картинок + и - и меняй их местами с помощью background-position). Ну и т.к. div мы уберём то показывать/скрывать нужно вложенный ul.
 
В ПМ меня часто спрашивают "как стать хорошим верстальщиком? что почитать?"

Ответ:
Купить пару хороших книг, читать актуальные статьи, делать реальные задания.

Литература:
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі
    (читать снизу вверх)
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Сайты/форумы:
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі
  • Тільки зареєстровані користувачі бачать весь контент у цьому розділі

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

Приобритённые навыки нужно использовать на фрилансе. Вначале просто прочитать там любое задание и попробовать его сделать. Именно 1:1 к ТЗ, как требует клиент, а не "я сделаю по другому, т.к. как надо не получается". Когда получится - берите сами задание на фрилансе и - айда! Тут только практика.

Нужно заниматься реальной работой, тогда преодолевая проблемы между тем что нужно сделать (что хочет клиент) и тем что получается (не получается). Когда ты учишся, ты волен сам менять дизайн/функционал под то что получается. А когда задачу ставит клиент - нужно сделать так как надо ему надо, приходится преодолевать трудности, учится новому, разбираться, и при этом вложится в сроки.

Нужно брать заказы, пусть и задёшево, набирать реальный опыт.

Ещё хороший вариант - устроиться "за еду" в фирму с хорошо налаженным процессом вёрстки, приобрести опыт. Правда есть опасность что могут научить устаревшим/неправильным вещам.
 
Del, а есть какие-то гайдлайны по разметке элементов формы?
например, ZF пытается пихать их в DT DD, но ИМХО оно тут ни к селу, да и одиночные элементы типа кнопок туда не лезут.
 
Del, а есть какие-то гайдлайны по разметке элементов формы?
например, ZF пытается пихать их в DT DD, но ИМХО оно тут ни к селу, да и одиночные элементы типа кнопок туда не лезут.
одно время эту тему любили обсуждать :)
примерно в 2009 году, де факто, независимо друг от друга, многие пришли к dt-dd, очень уж удобно стайлить, и семантично при этом.

кнопки лучше класть списком.
 
одно время эту тему любили обсуждать :)
примерно в 2009 году, де факто, независимо друг от друга, многие пришли к dt-dd, очень уж удобно стайлить, и семантично при этом.

кнопки лучше класть списком.

так кнопка то поди одна, сабмит вестимо. ради нее единой список то?

эмммм... а чекбокс, который запихнут внутрь своей же лайбы?
и я так понимаю, что некошерно в DL сувать что-то кроме DT DD, а вот если там иллюстрации или форма в несколько колонок. уж не городить же ради каждой колонки свое ДЛ?

нет ли какой тут ЖБ провокации? доколе???77
(спасибо, будем думать)
 
так кнопка то поди одна, сабмит вестимо. ради нее единой список то?
если она одна, а элементы формы выше - в fieldset/dl-dt-dd то можно не оборачивать в список.
Если два - стоит обернуть.
Одиночные кнопки на страницах (особенно обычные ссылки, оформленные как кнопки) тоже стоит в список оборачивать.

Это соответствует духу стандартов, например в html4 strict вы не сможете положить ссылку просто внутри body - потребуют обернуть в блок, а WAI опять-таки недопускает чтоб ссылки шли подряд потоком.


эмммм... а чекбокс, который запихнут внутрь своей же лайбы?
и я так понимаю, что некошерно в DL сувать что-то кроме DT DD, а вот если там иллюстрации или форма в несколько колонок. уж не городить же ради каждой колонки свое ДЛ?
тогда стоит юзать fieldset.
 
сирано непонятно, что же делать например с одиночным чекбоксом типа
<label for="check"><input type="checkbox" name="check" id="check" value="1" />Ставим птичьку</label>

он как-то ни в DD, ни в DT не лезет.
 
вот так можно:
HTML:
<dt><input type="checkbox" name="check" id="check" value="1" /></dt>
  <dd><label for="check">Ставим птичьку</label></dd>
 
Назад
Зверху Знизу