Я прошу прощения за долгую вставку кода здесь, но это беспокоило меня уже несколько часов. Я работаю над переносом всего сайта в новый шаблон, и я пытаюсь сделать различные области и вещи более ориентированными на размер, чтобы я мог вместить большинство из них в изменяемые размеры закрепляемых окон и вещей, очень аккуратная концепция, которая работает очень хорошо. Во всяком случае, у меня есть одна страница с внешней таблицей стилей, которую я не могу понять на всю жизнь. Независимо от размера содержимого по вертикали, он показывает полосу прокрутки и 20 дополнительных пустых страниц внизу. Я проверил и перепроверил, но все мои div'ы кажутся самодостаточными, и единственные реальные нечетные биты (ребра, которые включают отрицательное позиционирование) не устраняют проблему при удалении.
Это HTML-код, который я использую на странице (он генерируется динамически, это дамп после входа в систему)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Objectives</title>
<script type="text/javascript" src="windows/jquery.js"></script>
<link href="windows/windows.css" rel="stylesheet" type="text/css">
<!-- Page Scripts -->
<!-- Generic "always on" scripts -->
<script type="text/javascript">
$(document).ready(function(){
//Make that backgroud !ugly
$("body").css("background-color","#000000");
$("html").css("background-color","#000000");
//Make all the tags open in new windows. Hee hee hee... good luck there
$("a").click(function () {
var url = $(this).attr("href");
//Build the URL based on a select few modifications.
if (url.charAt(0) == '?')
url = "/"+url;
//Grab the value of action for the string
var type = url.substr(url.indexOf("action=") + 7);
if (type.indexOf("&") != -1)
var type = type.substr(0, type.indexOf("&"));
parent.spawnNewWindow(url+'&noframe=none', document.title, type);
return false;
});
});
</script>
<script language="Javascript" type="text/javascript">
$(document).ready(function(){
$(".tierPickerShown").click(function () {
$(this).parent(".tier").addClass("hideme");
});
$(".tierPickerHidden").click(function () {
$(this).parent(".tier").removeClass("hideme");
});
});
</script>
</head>
<body>
<div class="tier">
<div class="tierCorner top left"></div>
<div class="tierCorner top right"></div>
<div class="tierCorner bottom left"></div>
<div class="tierCorner bottom right"></div>
<div class="tierEdgeTop"></div>
<div class="tierEdgeMiddle"></div>
<div class="tierEdgeBottom"></div>
<div class="tierPickerShown"></div><div class="tierPickerHidden"></div>
<div class="tierMarker"></div>
<div class="tierTitle">Tier 1</div>
<div class="tierSpacer"></div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Choose a Nova and devote your clan to that Nova.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+5 Treasure </div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Win an attack with a mage that has an item equipped.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+10 Treasure </div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox"></div>
<div class="tierObjective">Steal at least 2 treasure from another player in a single attack.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+10 Treasure </div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Complete 2 jobs.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+25 Treasure </div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Win an attack on a player who is devoted to a different Nova than you are.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+10 Treasure </div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Become a member of a guild.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+15 Treasure </div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox"></div>
<div class="tierObjective">Recruit at least one (1) new player to the game using the Invite system. The player must verify their account to qualify for the objective.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+200 Treasure </div>
<div class="tierSpacer"></div>
</div>
</div>
<div class="tier">
<div class="tierCorner top left"></div>
<div class="tierCorner top right"></div>
<div class="tierCorner bottom left"></div>
<div class="tierCorner bottom right"></div>
<div class="tierEdgeTop"></div>
<div class="tierEdgeMiddle"></div>
<div class="tierEdgeBottom"></div>
<div class="tierPickerShown"></div><div class="tierPickerHidden"></div>
<div class="tierMarker"></div>
<div class="tierTitle">Tier 2</div>
<div class="tierSpacer"></div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Be in first place after 3 days, or attack someone who has joined the Light Team.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+10 Treasure Title Awarded: Recruit</div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Be in second place after 3 days, or attack someone who has joined the Dark Team.</div>
<div class="tierUnderline"></div>
<div class="tierReward">+10 Treasure Title Awarded: Recruit</div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox"></div>
<div class="tierObjective">Donate at least 25 Treasure to your Guild</div>
<div class="tierUnderline"></div>
<div class="tierReward"></div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Win an attack on someone between 12 AM and 8 AM.</div>
<div class="tierUnderline"></div>
<div class="tierReward"></div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox"></div>
<div class="tierObjective">Steal at least 10 treasure from another player in a single attack.</div>
<div class="tierUnderline"></div>
<div class="tierReward"></div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox"></div>
<div class="tierObjective">Win an attack on a player who has at least 5 levels of Defense on each of his Mages at home.</div>
<div class="tierUnderline"></div>
<div class="tierReward"></div>
<div class="tierSpacer"></div>
</div>
<div class="tierItem">
<div class="tierCheckbox tierActiveCheckbox "></div>
<div class="tierObjective">Win an attack on someone on a Weekend.</div>
<div class="tierUnderline"></div>
<div class="tierReward"></div>
<div class="tierSpacer"></div>
</div>
</div>
<div class="tier">
<div class="tierCorner top left"></div>
<div class="tierCorner top right"></div>
<div class="tierCorner bottom left"></div>
<div class="tierCorner bottom right"></div>
<div class="tierEdgeTop"></div>
<div class="tierEdgeMiddle"></div>
<div class="tierEdgeBottom"></div>
<div class="tierPickerShown"></div><div class="tierPickerHidden"></div>
<div class="tierMarker"></div>
<div class="tierTitle">Tier 3</div>
<div class="tierSpacer"></div>
<div class="tierItem">
<div class="tierCheckbox"></div>
<div class="tierObjective">Be the highest ranked [Team] Recruit after 1 week, or win an attack on an enemy Cleric</div>
<div class="tierUnderline"></div>
<div class="tierReward">Title Awarded: Cleric</div>
<div class="tierSpacer"></div>
</div>
</div>
</body>
</html>
И это соответствующая таблица стилей CSS. Это windows.css:
/* Body information for the windower, to theme the whole thingy. */
@import url('/tier.css');
html, body {
width: 100%;
height: 100%;
padding: 0px;
margin: 0px;
background-color: #FFFFFF; /* Yes, the same color as the text. jQuery will change this to black for us, so it's a good
indicator of any syntax errors in the javascript. */
color: #DEDEDE;
/* May be changed later, to be theme-specific */
font-family: Trebuchet MS, sans-serif;
font-weight: bold;
font-size: 14px;
}
a {
color: #FFFFFF;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* Windowing Information Here */
/* OMITTED - Doesn't seem relevant, the classes here aren't used */
И код проблемы: tier.css
.tier {
position: relative;
width: 90%;
margin-bottom: 25px;
margin-top: 20px;
margin-left: auto;
margin-right: auto;
}
/* Classes to describe the shower/hider thing. One class for each state-- hidden and shown. The
respective class is shown based on whether or not its parent has the "hideme" class. */
.tierPickerShown {
position: relative;
display: block;
float: left;
width: 24px;
height: 24px;
margin: 4px;
z-index: 5;
background-image: url('images/show_me_shown.png');
}
.tierPickerShown:hover {
background-image: url('images/show_me_shown_hover.png');
}
.tierPickerHidden {
position: relative;
display: none;
float: left;
width: 24px;
height: 24px;
margin: 4px;
z-index: 5;
background-image: url('images/show_me_hidden.png');
}
.tierPickerHidden:hover {
background-image: url('images/show_me_hidden_hover.png');
}
.tier.hideme .tierPickerShown {
display: none;
}
.tier.hideme .tierPickerHidden {
display: block;
}
/* Container for a tier objective. Holds the checkbox and the text elements. */
.tierItem {
position: relative;
width: auto;
z-index: 5;
}
.tier.hideme .tierItem {
display: none;
}
.tierCheckbox {
float: left;
width: 32px;
height: 32px;
margin-left: 8px;
margin-right: 8px;
background-image: url('images/checkbox.png');
}
.tierActiveCheckbox {
background-image: url('images/checkbox_checked.png');
}
.tierObjective {
margin-left: 54px;
margin-bottom: 3px;
}
.tierUnderline {
/* this is just WRONG */
width: 200px;
height: 2px;
margin-left: 54px;
background-color: #000000;
}
.tierReward {
margin-left: 54px;
font-size: 0.7em;
}
.tierSpacer {
/* Empty div, designed to make sure there's some breathing room below the floated content. */
clear: both;
width: 100%;
height: 5px;
}
.tierTitle {
font-size: 2.0em;
padding-left: 54px;
z-index: 5;
}
.tierMarker {
float: left;
background-image: url('images/tier_incomplete.png');
width: 48px;
height: 32px;
}
.tierMarkerComplete {
background-image: url('images/tier_complete.png');
}
/* Aesthetics Stuff */
.tierCorner {
background-image: url('images/tier_round.png');
width: 9px;
height: 9px;
position: absolute;
}
.tierCorner.top.left {
top: -9px;
left: -9px;
background-position: 0px 0px;
}
.tierCorner.bottom.left {
bottom: -9px;
left: -9px;
background-position: 0px -9px;
}
.tierCorner.top.right {
top: -9px;
right: -9px;
background-position: -9px 0px;
}
.tierCorner.bottom.right {
bottom: -9px;
right: -9px;
background-position: -9px -9px;
}
.tierEdgeMiddle {
position: absolute;
left: -9px;
right: -9px;
height: 100%;
background-image: url('images/tier_bg.png');
z-index: 2;
}
.tierEdgeTop {
position: absolute;
width: 100%;
top: -9px;
height: 9px;
background-image: url('images/tier_bg.png');
}
.tierEdgeBottom {
position: absolute;
width: 100%;
bottom: -9px;
height: 9px;
background-image: url('images/tier_bg.png');
}
Я приношу извинения за полуслабое расположение CSS, везде повсюду разбросано много дубликатов, но я бы предпочел понять, что заставляет его автоматически прокручивать область тела, прежде чем я пойду на фестиваль сокращения в этот код , Кто-нибудь видит что-нибудь явно очевидное, что я здесь скучаю? Единственное, что я могу сделать с этой страницей, чтобы создать полосы прокрутки, - это опустить tier.css, что в любом случае делает его довольно притягательным.
Если хотите, я настроил живую версию, чтобы вы могли видеть, как она должна выглядеть, изображения, полосу прокрутки и все, здесь .
Спасибо, это вернет меня на несколько часов назад, если кто-то сможет указать, что я пропустил.