Если вы не измените его свойство отображения (и не должны этого делать), элемент span
должен быть встроенным элементом, то есть он существует в потоке текста. Поместить элементы уровня блока внутри встроенного элемента не очень хорошая идея.
У вас также есть много посторонних тегов. Вместо этого:
<button id="powerSearchSubmitButton" class="fancySubmitButton" type="submit">
<span><em>Search</em></span>
</button>
почему бы просто не сделать это:
<button id="powerSearchSubmitButton" class="fancySubmitButton" type="submit">
Search
</button>
span
ничего не делает, а em
можно эмулировать с помощью CSS:
.fancySubmitButton { font-style: italic }`
Вот что я бы сделал:
<form>
<label for="SearchBag.PowerSearchKeys" id="Label1">Key words</label>
<input id="SearchBag.PowerSearchKeys" name="SearchBag.PowerSearchKeys" type="text" value="" />
<button id="powerSearchSubmitButton" class="fancySubmitButton" type="submit">Search</button>
<a href="Search.mvc/EmptyAdvancedSearch" id="advancedSearchLinkButton" class="fancyLinkButton">Advanced</a>
</form>
с использованием CSS:
form {
text-align: center;
}
.fancySubmitButton, .fancyLinkButton {
font-style: italic;
}
.fancyLinkButton {
display: block; /* this will put it on its own line */
}
Быстрый ответ на комментарии: предоставление чего-либо классу "fancyLinkButton" не не означает, что оно имеет закругленные углы. В любом случае, если вы хотите поместить закругленные углы на определенные элементы, я бы по-прежнему не использовал постороннюю разметку. Если для какой-либо реализации, которую вы используете, требуется больше элементов-оберток, то они должны быть добавлены через Javascript. Помните, что mozilla и webkit уже поддерживают закругленные углы CSS - в конце концов IE тоже будет, и вы сможете легко изменить свою единственную функцию javascript вместо того, чтобы переходить через HTML, чтобы найти везде, где есть ненужные промежутки.