Один HTML-тег привязки фактически отображает ДВАЖДЫ! Скриншот - PullRequest
3 голосов
/ 17 августа 2010

Я нахожусь на 10 строк в моей второй попытке HTML и CSS, и она сразу же делает совершенно глупые вещи.

У меня есть следующий код (это вся страница):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
        <title>Some page title</title>
        <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.1.1/build/cssreset/reset-min.css" />
        <link rel="stylesheet" type="text/css" href="47926.css" />
        <link rel="stylesheet" type="text/css" href="960Clear.css" />
    </head>

    <body>
        <div id="rootDiv">
            <div class="container_16" id="topBarDiv">
                <div id="topBarLogoDiv">
                    <a id="topBarLogoLink" href="~/Home/ComingSoon" title="Coming soon page"/>
                </div>
            </div>
        </div>
    </body>
</html>

А вот CSS (960Clear.css, остальные - 960 сеток и сброс YUI):

#rootDiv {
    height: 70px;
    background-color: #F7F7F7;
}

#topBarLogoDiv {
    background-image: url('file:///C:/Users/Public/Documents/~Main/Vuplan/S26.Vuplan.Web.Application/Images/logo-vuplan-color-on-alpha-172x49.png');
    background-color: #F7F7F7;
    background-repeat: no-repeat;
    margin-left: 20px;
    height: 50px;
    width: 172px;
    display: block;
    overflow: hidden;
}

#topBarLogoLink {
    height: 50px;
    width: 172px;
    min-height: 50px;
    min-width: 172px;
    display: table-cell;
}

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

Я рендерил другой, целый элемент привязки за пределами div-оболочки, и эта странность даже видна в виде еще одной строки кода в окне * diag tools F12 !

Я сделал снимок экрана, чтобы продемонстрировать:

http://0olmuq.bay.livefilestore.com/y1pxx75x_th_V0FX15uiLSOAK7MbKnHOQ17L9WMLg4K1TrIoZ0_xEaTgveh0_xF0S8o1Ae8WVvQLNWjQzyGl5AXsPpMV9MW0aDI/One%20Anchor%20Tag%20Renders%20Two%20Anchor%20Tags%20Crap.jpg?psid=1

Для меня работа с HTML + CSS - это наказание, отбываемое в аду, но это требует печенья. Что здесь происходит на земле?

Примечание

Моя вина - я должен был добавить этот отказ от ответственности раньше.

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

Я не дошел до исправления локальных ссылок (которые будут совершенно разными в производственном процессе и генерируются с помощью ASP.NET MVC методов в любом случае).

Представьте, что у кого-то возникли проблемы с сантехникой в ​​доме, и вы отправляетесь расследовать. Дом может быть еще не закончен; пожалуйста, не обращайте внимания на отсутствующий ковер; -)

Ответы [ 3 ]

6 голосов
/ 17 августа 2010

Вы не можете закрыть тег A с помощью />, вам нужно закрыть его с помощью <a href="#">Link</a>

Двойной рендеринг - это Firefox / Firebug, анализирующий недопустимый HTML.

5 голосов
/ 17 августа 2010

Прежде всего, если вы знаете, что собираетесь написать плохой код, по крайней мере, сообщите об этом браузеру заранее. Используйте более снисходительный doctype, чем strict (технически это не особо помогает, но я думаю, что каждый бит помогает)

Далее, в отличие от большинства других языков, сеточные инфраструктуры и подобные средства на самом деле лучше для средних и продвинутых пользователей. Те, кто плохо знаком с CSS, с большей вероятностью будут смущены ими. (Это субъективно, я знаю, но это мнение, выражаемое многими, и мы даем здесь советы, не так ли?)

Теперь для логотипа сайта. Я полагаю, это вопрос личных предпочтений, но обычно логотипы помечаются как h1 s. Есть несколько способов достижения того, чего вы хотите здесь, я просто дам тот, который я обычно использую:

HTML:

<h1>
  <a href="#">Site Name</a>
</h1>

CSS:

h1 {
  float: left;
  overflow: hidden;
}

h1 a {
  display: block;
  background: url('path/to/logo.png') no-repeat;
  width: 100px;
  height: 100px;
  text-indent: -9999px;
}

Ваши URL неверны: ~/Home/ComingSoon и file:///C:/Users/Public/Documents/~Main/Vuplan/S26.Vuplan.Web.Application/Images/logo-vuplan-color-on-alpha-172x49.png могут работать локально, но вам нужно использовать относительные пути, если вы собираетесь разместить их на сервере (при условии, что вы не собираетесь использовать серверные скрипты для генерации этих URL)


#topBarLogoLink {
    height: 50px;
    width: 172px;
    min-height: 50px;
    min-width: 172px;
    display: table-cell;
}

Объявления min-height и min-width бесполезны: они полезны, только если вы не объявляете фиксированные width и height. Свойства min-height и max-height и их аналоги по ширине используются для гибких макетов, когда разработчик предоставляет браузеру определенную степень гибкости для адаптации к разным размерам экрана и другим неконтролируемым факторам.

Объявление display: table-cell также немного подозрительно: если вы хотите, чтобы встроенный элемент a расширился до размера его родительского элемента div, вы можете просто использовать display: block


#topBarLogoDiv {
    background-image: url('file:///C:/Users/Public/Documents/~Main/Vuplan/S26.Vuplan.Web.Application/Images/logo-vuplan-color-on-alpha-172x49.png');
    background-color: #F7F7F7;
    background-repeat: no-repeat;
    margin-left: 20px;
    height: 50px;
    width: 172px;
    display: block;
    overflow: hidden;
}

Кроме проблемы с URL, цвет фона также не должен быть повторно объявлен - элементы HTML по умолчанию имеют прозрачный цвет фона. Объявление display: block здесь также не нужно - div s являются элементами уровня блока.


О, и я действительно действительно извините, если вы чувствуете обиду этим комментарием. Я действительно. Считайте, что я это компенсирую, хорошо?

2 голосов
/ 17 августа 2010

Попробуйте не делать <a> самозакрывающимся. Это должно быть <a href="blah">Text or &nbsp;</a>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...